1

geotiff-jai を使用して GeoTiff データを読み取ろうとすると、GeoTIFFDescriptor を登録できません。

@Test
public void canGetTiffDecoder() {
    Iterator<ImageReader> reader = ImageIO.getImageReadersByFormatName("tiff");
    assertNotNull(reader);
    assertTrue(reader.hasNext());

    GeoTIFFDescriptor.register(); // this line is causing errors
}

このテストを実行すると、「tiff」という名前の記述子が「レンダリング」モードで登録されていません。

Exception in thread "main" java.lang.IllegalArgumentException: No descriptor by name "tiff" is registered under mode "rendered".
   at javax.media.jai.OperationRegistry.registerFactory(OperationRegistry.java:1173)
   at javax.media.jai.ThreadSafeOperationRegistry.registerFactory(ThreadSafeOperationRegistry.java:330)
   at javax.media.jai.OperationRegistry.registerRIF(OperationRegistry.java:2176)
   at org.libtiff.jai.operator.XTIFFDescriptor.register(XTIFFDescriptor.java:132)
   at org.geotiff.image.jai.GeoTIFFDescriptor.register(GeoTIFFDescriptor.java:48)
   at in.drifted.tiler.GeoTiffFile.main(GeoTiffFile.java:18)

私のPOM:

<repositories>
    <repository>
        <id>jai-repo</id>
        <url>http://dev.mapfish.org/maven/repository/</url>
        <layout>default</layout>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>javax.media</groupId>
        <artifactId>jai_core</artifactId>
        <version>1.1.3</version>
    </dependency>
    <dependency>
        <groupId>javax.media</groupId>
        <artifactId>jai_codec</artifactId>
        <version>1.1.3</version>
    </dependency>        
    <dependency>
        <groupId>javax.media</groupId>
        <artifactId>jai_imageio</artifactId>
        <version>1.1</version>
    </dependency>        
    <!-- installed manually  -->
    <!-- http://sourceforge.net/projects/geotiff-jai -->  
    <dependency>
        <groupId>net.sf.geotiff-jai</groupId>
        <artifactId>geotiff-jai</artifactId>
        <version>2.0</version>
    </dependency>
    <!-- http://sourceforge.net/projects/xtiff-jai/ -->  
    <dependency>
        <groupId>net.sf.xtiff-jai</groupId>
        <artifactId>xtiff-jai</artifactId>
        <version>0.3</version>
    </dependency>
</dependencies>

JDK1.8、Win7

TIFFを正しく登録できない理由は何ですか?

ありがとう、ヤン

4

1 に答える 1

1

問題を追跡しました。元の XTIFFDescriptor.java には「xtiff」GlobalName/LocalName が指定されていますが、「tiff」だと思いました (次のソースに変更がないことを期待しています: http://opensourcejavaphp.net/java/openjump/org/libtiff /jai/operator/XTIFFDescriptor.java.html

変更したクラスをプロジェクトにコピーして、xtiff-jai ライブラリのクラスをオーバーライドすることで、この問題を解決しました。

于 2014-10-28T20:10:19.247 に答える