Расчет количества полос в растре - PullRequest
2 голосов
/ 25 апреля 2019

Я пытался вычислить количество полос внутри растрового файла. Хотя приведенные ниже коды работают в основном, но, кажется, выдается исключение, когда я пробовал код на прогнозируемом растре.

Я пробовал следующий код:

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)

Я получаю следующее исключение:

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)

Для проецируемых данных также необходимо добавить некоторый код. Мой растровый файл находится в WyonmingNAD27: 32056 проекционная система

1 Ответ

0 голосов
/ 30 апреля 2019

Мне не хватало следующей зависимости в моем коде.

<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-epsg-hsql</artifactId>
<version>${geotools.version}</version>
</dependency>

После того как я добавил вышеуказанную зависимость, проблема с CRS была решена.

...