systemed / tilemaker

Make OpenStreetMap vector tiles without the stack
https://tilemaker.org/
Other
1.4k stars 226 forks source link

Possible issue with multipoint processing #726

Closed SomeoneElseOSM closed 1 month ago

SomeoneElseOSM commented 1 month ago

I've just run

time tilemaker --config config.json --process process.lua --bbox -14.73,48.38,2.32,61.34     --input ~/data/britain-and-ireland-latest.osm.pbf  --output ~/data/shortbread-tiles.mbtiles

and have got this:

lua runtime error:
table  `process.lua:1124: attempt to index local 'relation' (a nil value)'  `process.lua:1124: attempt to index local 'relation' (a nil value)'
Lua error on scanning relation 246001

That relation is just two nodes. I wonder if it might be related to the recent change https://github.com/systemed/tilemaker/commit/d5ded3bdd008b5e1294f7e431a63ccd9bf1ec7ca ?

cldellow commented 1 month ago

I think the cited error:

lua runtime error:
table  `process.lua:1124: attempt to index local 'relation' (a nil value)'  `process.lua:1124: attempt to index local 'relation' (a nil value)'
Lua error on scanning relation 246001

happens during PBF processing, but the changes in d5ded3b happen during MBTiles/PMTiles output, so they are likely unrelated.

The error implies that something in the Lua code is unexpectedly getting a nil value for the relation variable. The stock OMT Lua file doesn't have 1124 lines, so I'm guessing you have a custom Lua script -- can you share the relevant portion of it?

SomeoneElseOSM commented 1 month ago

I went back a couple of versions in the history to https://github.com/systemed/tilemaker/commit/b89b0ebd7ed40c896193bdaf80cad0599c093a45 , built that, and reran with the same parameters, without error.

I'm using the config and process.lua from https://github.com/shortbread-tiles/shortbread-tilemaker .

cldellow commented 1 month ago

Hmmm. The current version of Shortbread's process.lua's line 1124 looks like this: https://github.com/shortbread-tiles/shortbread-tilemaker/blob/57bdcb38021bc80fa43767df6cb825f7a604bf42/process.lua#L1124

    if Find("type") ~= "boundary" then

But that line doesn't have a relation variable. An older, pre-3.0 version does: https://github.com/shortbread-tiles/shortbread-tilemaker/blob/d0b1e72a579f503caa5e622d1c40dd1f30d0c6c4/process.lua#L1124

    if relation:Find("type") ~= "boundary" then

Is it possible that you were somehow running the pre-3.0 shortbread when you got the error, and are now running the 3.0-compatible shortbread?

SomeoneElseOSM commented 1 month ago

I was actually using

https://github.com/geofabrik/shortbread-tilemaker/blob/main/process.lua#L1124

rather than

https://github.com/shortbread-tiles/shortbread-tilemaker/blob/57bdcb38021bc80fa43767df6cb825f7a604bf42/process.lua#L1124

When running through everything "one last time" to test it, I copied and pasted from some older notes (before it was moved from "geofabrik/shortbread-tilemaker").