如何用GeoTools编写Gdal METADATA?

时间:2016-08-10 13:52:22

标签: gdal geotools

我是一个使用Geotools库生成GeoTiff文件的Java类。我的文件生成正确,我可以用Tiff查看器打开它。 现在我需要在此文件中添加一些GDAL元数据,但我无法实现它。这是我的一段代码:

DefaultGeographicCRS crs = DefaultGeographicCRS.WGS84;
ReferencedEnvelope refEnvelope = new ReferencedEnvelope(geoBox.getEastLongitude(),geoBox.getWestLongitude(), geoBox.getNorthLatitude(), geoBox.getSouthLatitude(), crs);

GridCoverage2D coverage = new GridCoverageFactory().create("GridCoverage", imagePixelData, refEnvelope);
GeoTiffWriteParams wp = new GeoTiffWriteParams();
wp.setCompressionMode(GeoTiffWriteParams.MODE_EXPLICIT);
wp.setCompressionType("PackBits");


ParameterValueGroup params = new GeoTiffFormat().getWriteParameters();
params.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()).setValue(wp);
GeoTiffWriter writer = new GeoTiffWriter(new File("d:/test.tif"));

writer.setMetadataValue(Integer.toString(BaselineTIFFTagSet.TAG_COMPRESSION), Integer.toString(BaselineTIFFTagSet.COMPRESSION_PACKBITS));
writer.setMetadataValue(Integer.toString(BaselineTIFFTagSet.TAG_SOFTWARE), "mySoftware");

String xmlStats =  "<GDALMetadata><Item name=\"STATISTICS_MAXIMUM\">-318.670013</Item><Item name=\"STATISTICS_MEAN\">-83.070274</Item><Item name=\"STATISTICS_MINIMUM\">-6.320007"
    + "</Item><Item name=\"STATISTICS_STDDEV\">72.243668</Item></GDALMetadata>";
writer.setMetadataValue("42112", xmlStats);

writer.write(coverage, params.values().toArray(new GeneralParameterValue[1]));

如您所见,我设置了metadatas TAG_COMPRESSION和TAG_SOFTWARE,它们在生成的文件中可以正确读取。从http://www.awaresystems.be/imaging/tiff/tifftags/gdal_metadata.html我可以看到GDALMetadata标识符是42112.但这不起作用,没有生成GDAL元数据......

有人可以帮助我吗? 谢谢!

编辑: 在GeoTools深度调试后,似乎只能添加BaselineTIFFTagSet和GeoTIFFTagSet类中定义的元数据。 我找不到添加&#34;私人&#34;的方法。标签。 有没有解决方案?

0 个答案:

没有答案