fix: switch from addNaturalEarthSource to addGeoPackageSource
addNaturalEarthSource() is deprecated by planetiler and its now recommended to use addGeoPackageSource(). To make this work we need to adjust of this source to the natural_earth_vector.gpkg.zip file from natural earth.
Fixing #470 - @wipfli
Not 100% sure if its related, but it seams like I get this error after the change for some regions:
org.geotools.api.referencing.NoSuchAuthorityCodeException: No code "EPSG:0" from authority "European Petroleum Survey Group" found for object of type "interface org.geotools.api.referencing.crs.CoordinateReferenceSystem".
at org.geotools.referencing.factory.AbstractAuthorityFactory.noSuchAuthorityCode(AbstractAuthorityFactory.java:908)
at org.geotools.referencing.factory.epsg.DirectEpsgFactory.createCoordinateReferenceSystem(DirectEpsgFactory.java:2239)
at org.geotools.referencing.factory.BufferedAuthorityFactory.createCoordinateReferenceSystem(BufferedAuthorityFactory.java:760)
at org.geotools.referencing.factory.AuthorityFactoryAdapter.createCoordinateReferenceSystem(AuthorityFactoryAdapter.java:812)
at org.geotools.referencing.factory.FallbackAuthorityFactory.createCoordinateReferenceSystem(FallbackAuthorityFactory.java:653)
at org.geotools.referencing.factory.AuthorityFactoryAdapter.createCoordinateReferenceSystem(AuthorityFactoryAdapter.java:812)
at org.geotools.referencing.factory.ThreadedAuthorityFactory.createCoordinateReferenceSystem(ThreadedAuthorityFactory.java:666)
at org.geotools.referencing.DefaultAuthorityFactory.createCoordinateReferenceSystem(DefaultAuthorityFactory.java:178)
at org.geotools.referencing.CRS.decode(CRS.java:539)
at org.geotools.referencing.CRS.decode(CRS.java:460)
at com.onthegomap.planetiler.reader.GeoPackageReader.readFeatures(GeoPackageReader.java:139)
at com.onthegomap.planetiler.reader.SourceFeatureProcessor.lambda$readPaths$3(SourceFeatureProcessor.java:174)
at com.onthegomap.planetiler.worker.WorkerPipeline$Builder.lambda$addWorker$0(WorkerPipeline.java:249)
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(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Exception in thread "main" com.onthegomap.planetiler.Planetiler$PlanetilerException: Error occurred during stage ne
at com.onthegomap.planetiler.Planetiler.run(Planetiler.java:877)
at com.protomaps.basemap.Basemap.run(Basemap.java:221)
at com.protomaps.basemap.Basemap.main(Basemap.java:153)
Caused by: com.onthegomap.planetiler.util.Exceptions$FatalPlanetilerException: java.util.concurrent.ExecutionException: com.onthegomap.planetiler.util.Exceptions$FatalPlanetilerException: org.geotools.api.referencing.NoSuchAuthorityCodeException: No code "EPSG:0" from authority "European Petroleum Survey Group" found for object of type "interface org.geotools.api.referencing.crs.CoordinateReferenceSystem".
at com.onthegomap.planetiler.util.Exceptions.throwFatalException(Exceptions.java:29)
at com.onthegomap.planetiler.stats.ProgressLoggers.await(ProgressLoggers.java:367)
at com.onthegomap.planetiler.stats.ProgressLoggers.awaitAndLog(ProgressLoggers.java:352)
at com.onthegomap.planetiler.worker.WorkerPipeline.awaitAndLog(WorkerPipeline.java:59)
at com.onthegomap.planetiler.reader.SourceFeatureProcessor.processFiles(SourceFeatureProcessor.java:130)
at com.onthegomap.planetiler.reader.SourceFeatureProcessor.processFiles(SourceFeatureProcessor.java:65)
at com.onthegomap.planetiler.reader.GeoPackageReader.process(GeoPackageReader.java:105)
at com.onthegomap.planetiler.Planetiler.lambda$addGeoPackageSource$4(Planetiler.java:409)
at com.onthegomap.planetiler.Planetiler.lambda$ifSourceUsed$14(Planetiler.java:1003)
at com.onthegomap.planetiler.Planetiler.run(Planetiler.java:875)
... 2 more
Caused by: java.util.concurrent.ExecutionException: com.onthegomap.planetiler.util.Exceptions$FatalPlanetilerException: org.geotools.api.referencing.NoSuchAuthorityCodeException: No code "EPSG:0" from authority "European Petroleum Survey Group" found for object of type "interface org.geotools.api.referencing.crs.CoordinateReferenceSystem".
at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
at com.onthegomap.planetiler.stats.ProgressLoggers.await(ProgressLoggers.java:361)
... 10 more
Caused by: com.onthegomap.planetiler.util.Exceptions$FatalPlanetilerException: org.geotools.api.referencing.NoSuchAuthorityCodeException: No code "EPSG:0" from authority "European Petroleum Survey Group" found for object of type "interface org.geotools.api.referencing.crs.CoordinateReferenceSystem".
at com.onthegomap.planetiler.util.Exceptions.throwFatalException(Exceptions.java:29)
at com.onthegomap.planetiler.worker.Worker.lambda$new$1(Worker.java:76)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.geotools.api.referencing.NoSuchAuthorityCodeException: No code "EPSG:0" from authority "European Petroleum Survey Group" found for object of type "interface org.geotools.api.referencing.crs.CoordinateReferenceSystem".
at org.geotools.referencing.factory.AbstractAuthorityFactory.noSuchAuthorityCode(AbstractAuthorityFactory.java:908)
at org.geotools.referencing.factory.epsg.DirectEpsgFactory.createCoordinateReferenceSystem(DirectEpsgFactory.java:2239)
at org.geotools.referencing.factory.BufferedAuthorityFactory.createCoordinateReferenceSystem(BufferedAuthorityFactory.java:760)
at org.geotools.referencing.factory.AuthorityFactoryAdapter.createCoordinateReferenceSystem(AuthorityFactoryAdapter.java:812)
at org.geotools.referencing.factory.FallbackAuthorityFactory.createCoordinateReferenceSystem(FallbackAuthorityFactory.java:653)
at org.geotools.referencing.factory.AuthorityFactoryAdapter.createCoordinateReferenceSystem(AuthorityFactoryAdapter.java:812)
at org.geotools.referencing.factory.ThreadedAuthorityFactory.createCoordinateReferenceSystem(ThreadedAuthorityFactory.java:666)
at org.geotools.referencing.DefaultAuthorityFactory.createCoordinateReferenceSystem(DefaultAuthorityFactory.java:178)
at org.geotools.referencing.CRS.decode(CRS.java:539)
at org.geotools.referencing.CRS.decode(CRS.java:460)
at com.onthegomap.planetiler.reader.GeoPackageReader.readFeatures(GeoPackageReader.java:139)
at com.onthegomap.planetiler.reader.SourceFeatureProcessor.lambda$readPaths$3(SourceFeatureProcessor.java:174)
at com.onthegomap.planetiler.worker.WorkerPipeline$Builder.lambda$addWorker$0(WorkerPipeline.java:249)
at com.onthegomap.planetiler.worker.Worker.lambda$new$0(Worker.java:41)
at com.onthegomap.planetiler.worker.Worker.lambda$new$1(Worker.java:68)
... 4 more
It seems like there is data inside the geo-package which cannot be parsed correctly. Maybe also an issue related to planetiler directly?
Thanks for opening this pull request. The geo package source had some recent pull requests in Planetiler. Maybe that is related?
@wipfli @bdon Could you please review?
Quality Gate passed
Issues
0 New issues
0 Accepted issues
Measures
0 Security Hotspots
7.4% Coverage on New Code
0.0% Duplication on New Code
When running on Monaco this does not seem to include the boundaries below zoom 6. Can you check please?
Is there a practical advantage to switching to geopackage other than avoiding the use of a deprecated function in planetiler?
Is there a practical advantage to switching to geopackage other than avoiding the use of a deprecated function in planetiler?
As far as I know, no. Maybe there is some performance advantage because of a different data structure.