Reputation: 23
I have been trying to calculate the number of bands inside a raster file. While the below codes works mostly, but it seems to throw an exception when i tried the code on a projected raster.
I have tried the following code:
AbstractGridFormat format = GridFormatFinder.findFormat(rasterFile);
// this is a bit hacky but does make more geotiffs work
Hints hints = new Hints();
if (format instanceof GeoTiffFormat) {
hints = new Hints(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER, Boolean.TRUE);
}
reader = format.getReader(rasterFile, hints);
GridCoverage2D result = reader.read(null);
int bands = result.getNumSampleDimensions();
System.out.println(bands)
I am getting the following exception :
org.geotools.data.DataSourceException
at org.geotools.gce.geotiff.GeoTiffReader.<init>(GeoTiffReader.java:266)
at org.geotools.gce.geotiff.GeoTiffFormat.getReader(GeoTiffFormat.java:307)
at org.geotools.gce.geotiff.GeoTiffFormat.getReader(GeoTiffFormat.java:76)
at ImageLab.displayLayers(ImageLab.java:74)
at ImageLab.getLayersAndDisplay(ImageLab.java:36)
at ImageLab.main(ImageLab.java:25)
Caused by: org.geotools.data.DataSourceException
at org.geotools.gce.geotiff.GeoTiffReader.getHRInfo(GeoTiffReader.java:500)
at org.geotools.gce.geotiff.GeoTiffReader.<init>(GeoTiffReader.java:253)
... 5 more
Caused by: java.lang.NullPointerException
at org.geotools.referencing.cs.AbstractCS.axisUsingUnit(AbstractCS.java:503)
at org.geotools.referencing.cs.DefaultCartesianCS.usingUnit(DefaultCartesianCS.java:291)
at org.geotools.coverage.grid.io.imageio.geotiff.GeoTiffMetadata2CRSAdapter.createUserDefinedPCS(GeoTiffMetadata2CRSAdapter.java:750)
at org.geotools.coverage.grid.io.imageio.geotiff.GeoTiffMetadata2CRSAdapter.createProjectedCoordinateReferenceSystem(GeoTiffMetadata2CRSAdapter.java:245)
at org.geotools.coverage.grid.io.imageio.geotiff.GeoTiffMetadata2CRSAdapter.createCoordinateSystem(GeoTiffMetadata2CRSAdapter.java:181)
at org.geotools.gce.geotiff.GeoTiffReader.getHRInfo(GeoTiffReader.java:330)
... 6 more
Exception in thread "main" java.lang.NullPointerException
at ImageLab.displayLayers(ImageLab.java:75)
at ImageLab.getLayersAndDisplay(ImageLab.java:36)
at ImageLab.main(ImageLab.java:25)
For the projected data do ineed to add some code as well.My Raster File is in WyonmingNAD27 : 32056 projection system
Upvotes: 2
Views: 229
Reputation: 23
I was missing the following dependency in my code.
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-epsg-hsql</artifactId>
<version>${geotools.version}</version>
</dependency>
After I added the above dependency, the problem with CRS got resolved.
Upvotes: 0