gpt4 book ai didi

java - 获取 tiff 文件的坐标

转载 作者:行者123 更新时间:2023-11-30 09:35:56 27 4
gpt4 key购买 nike

我使用 GeoTiffIIOMetadataAdapter 类获取 geoTiff 元数据:

    String filename = pathToMyTiffFile;
FileImageInputStream f = new FileImageInputStream(
new RandomAccessFile(filename, "r"));

// Look through ImageIO readers
Iterator iter = ImageIO.getImageReaders(f);
IIOMetadata imdata = null;
GeoTiffIIOMetadataAdapter geo_data;
while (iter.hasNext() && imdata == null) {
ImageReader reader = (ImageReader) iter.next();
reader.setInput(f, true);
String reader_name = reader.getFormatName().toLowerCase();
if (reader_name.equalsIgnoreCase("tif")) {
// Get Image metadata
imdata = reader.getImageMetadata(0);
geo_data = new GeoTiffIIOMetadataAdapter(imdata);
if (geo_data != null &&
geo_data.getGeoKeyDirectoryVersion() == 1) {
geo_data.getModelTiePoints(); //here i get [0.0,0.0,0.0,173084.9999999999,5845515.0,0.0]
}
}
}

如何将此数组提取/转换为通常的纬度/经度坐标? 173084.9999999999,5845515.0 是 tiff 文件左上点的坐标,我说得对吗?

提前致谢!

最佳答案

答案是:是的,它是我的 tiff 文件的左上角点。我的 Tiff 在 http://spatialreference.org/ref/epsg/32612/ .要使用我需要的 geotools 将坐标转换为 wsg84(http://spatialreference.org/ref/epsg/4326/):

    CoordinateReferenceSystem sourceCRS = CRS.decode("EPSG:4326", true);
CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:32612");
MathTransform transformToEpsg4326 = CRS.findMathTransform(targetCRS, sourceCRS);
double lon = geo_data.getModelTiePoints()[3];// 175784.99999999997 - X
double lat = geo_data.getModelTiePoints()[4];// 5842215.0 - Y
GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), 32612);
Geometry pointUpperLeft = geometryFactory.createPoint(new Coordinate(lon, lat));

关于java - 获取 tiff 文件的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11045412/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com