-
Notifications
You must be signed in to change notification settings - Fork 86
Open
Description
When trying to load raster cost data with R5 7.5, one gets the following familiar error:
INFO:
org.opengis.referencing.NoSuchAuthorityCodeException: Authority "EPSG" is unknown or doesn't match the supplied hints. Maybe it is defined in an unreachable JAR file?
at org.geotools.referencing.factory.ManyAuthoritiesFactory.noSuchAuthority(ManyAuthoritiesFactory.java:493)
at org.geotools.referencing.factory.ManyAuthoritiesFactory.getAuthorityFactory(ManyAuthoritiesFactory.java:473)
at org.geotools.referencing.factory.ManyAuthoritiesFactory.getCRSAuthorityFactory(ManyAuthoritiesFactory.java:548)
at org.geotools.referencing.factory.AuthorityFactoryAdapter.createCoordinateReferenceSystem(AuthorityFactoryAdapter.java:808)
at org.geotools.coverage.grid.io.imageio.geotiff.GeoTiffMetadata2CRSAdapter.createGeographicCoordinateReferenceSystem(GeoTiffMetadata2CRSAdapter.java:376)
at org.geotools.coverage.grid.io.imageio.geotiff.GeoTiffMetadata2CRSAdapter.createCoordinateSystem(GeoTiffMetadata2CRSAdapter.java:184)
at org.geotools.gce.geotiff.GeoTiffReader.getHRInfo(GeoTiffReader.java:355)
at org.geotools.gce.geotiff.GeoTiffReader.<init>(GeoTiffReader.java:265)
at org.geotools.gce.geotiff.GeoTiffFormat.getReader(GeoTiffFormat.java:331)
at org.geotools.gce.geotiff.GeoTiffFormat.getReader(GeoTiffFormat.java:77)
at com.conveyal.r5.rastercost.RasterDataSourceSampler.<init>(RasterDataSourceSampler.java:89)
at com.conveyal.r5.rastercost.ElevationLoader.<init>(ElevationLoader.java:41)
at com.conveyal.r5.analyst.scenario.RasterCost.resolve(RasterCost.java:67)
at org.ipea.r5r.Network.NetworkBuilder.createNetwork(NetworkBuilder.java:160)
at org.ipea.r5r.Network.NetworkBuilder.createR5Network(NetworkBuilder.java:67)
at org.ipea.r5r.Network.NetworkBuilder.checkAndLoadR5Network(NetworkBuilder.java:42)
at org.ipea.r5r.R5RCore.<init>(R5RCore.java:256)
Caused by: org.geotools.util.factory.FactoryNotFoundException: No factory of kind "CRSAuthorityFactory" found.
at org.geotools.util.factory.FactoryRegistry.getFactory(FactoryRegistry.java:445)
at org.geotools.util.factory.FactoryCreator.getFactory(FactoryCreator.java:137)
at org.geotools.referencing.ReferencingFactoryFinder.getAuthorityFactory(ReferencingFactoryFinder.java:223)
at org.geotools.referencing.ReferencingFactoryFinder.getCRSAuthorityFactory(ReferencingFactoryFinder.java:438)
at org.geotools.referencing.factory.AllAuthoritiesFactory.fromFactoryRegistry(AllAuthoritiesFactory.java:108)
at org.geotools.referencing.factory.ManyAuthoritiesFactory.getAuthorityFactory(ManyAuthoritiesFactory.java:458)
... 15 more
This is indicative of issues with merging the service entries in META-INF/services/ and is a common issue with shadow JARs using Geotools. Unfortunately with the move to Gradle 9 there have been some changes to the shadow JAR plugin that mean this merging doesn't work out of the box anymore. TL;DR to get the service files merged properly for a working shadowJar we need to add to build.gradle in the shadowJar section before the call to mergeServiceFiles:
filesMatching("META-INF/services/**") {
duplicatesStrategy = DuplicatesStrategy.INCLUDE
}rafapereirabr
Metadata
Metadata
Assignees
Labels
No labels