protomaps / basemaps

Basemap PMTiles generation and cartographic styles for OpenStreetMap data and more
https://maps.protomaps.com/
Other
347 stars 44 forks source link

Qrank related build problem #117

Closed nvkelso closed 1 year ago

nvkelso commented 1 year ago

I'm seeing a few of these building from main after the QRank PR was merged. We probably need to gaurd against ; delim OSM values?

java.lang.NumberFormatException: For input string: "49514848;Q49321752"
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
    at java.base/java.lang.Long.parseLong(Long.java:708)
    at java.base/java.lang.Long.parseLong(Long.java:831)
    at com.protomaps.basemap.feature.QrankDb.get(QrankDb.java:30)
    at com.protomaps.basemap.layers.Pois.processFeature(Pois.java:63)
    at com.onthegomap.planetiler.ForwardingProfile.processFeature(ForwardingProfile.java:116)
    at com.onthegomap.planetiler.reader.osm.OsmReader.render(OsmReader.java:468)
    at com.onthegomap.planetiler.reader.osm.OsmReader.lambda$pass2$7(OsmReader.java:360)
    at com.onthegomap.planetiler.worker.WorkerPipeline$Builder.lambda$addWorker$0(WorkerPipeline.java:252)
    at com.onthegomap.planetiler.worker.Worker.lambda$new$0(Worker.java:41)
    at com.onthegomap.planetiler.worker.Worker.lambda$new$1(Worker.java:68)
    at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1623)
nvkelso commented 1 year ago

Testing just in SF bay area there was 2nd example (but same type of bug). For the whole world there are probably more examples.

0:19:55 ERR [osm_pass2:process] - Error processing OSM Way 461759932
java.lang.NumberFormatException: For input string: "49553887;Q49553890"
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
    at java.base/java.lang.Long.parseLong(Long.java:708)
    at java.base/java.lang.Long.parseLong(Long.java:831)
    at com.protomaps.basemap.feature.QrankDb.get(QrankDb.java:30)
    at com.protomaps.basemap.layers.Pois.processFeature(Pois.java:63)
    at com.onthegomap.planetiler.ForwardingProfile.processFeature(ForwardingProfile.java:116)
    at com.onthegomap.planetiler.reader.osm.OsmReader.render(OsmReader.java:468)
    at com.onthegomap.planetiler.reader.osm.OsmReader.lambda$pass2$7(OsmReader.java:360)
    at com.onthegomap.planetiler.worker.WorkerPipeline$Builder.lambda$addWorker$0(WorkerPipeline.java:252)
    at com.onthegomap.planetiler.worker.Worker.lambda$new$0(Worker.java:41)
    at com.onthegomap.planetiler.worker.Worker.lambda$new$1(Worker.java:68)
    at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1623)
bdon commented 1 year ago

Parser needs to handle multiple wiki data ids. Will resolve tonight

bdon commented 1 year ago

Overpass query for wikidata with multiple values:

[out:json];
node["wikidata"~";"];
out;

These seem like edge cases or errors, I'll default to using the first one before a semicolon and throwing away a 2nd, easy to patch later if we need

nvkelso commented 1 year ago

First valid input when converted to an ordered list? Both examples have invalid values in the 0 index (missing Q prefix)? But the 1 index position does have valid values in these examples.

bdon commented 1 year ago

Resolved by #118