JAVA根据tiff图像提供对应的像素点换算对应坐标系
需要引用的pom依赖:
<!--geotools依赖包-->
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-geotiff</artifactId>
<version>19.2</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-image</artifactId>
<version>19.2</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-imagemosaic</artifactId>
<version>19.2</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-render</artifactId>
<version>19.2</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-imageio-ext-gdal</artifactId>
<version>19.2</version>
</dependency>
代码如下:
import org.gdal.gdal.Dataset;
import org.gdal.gdal.gdal;
import org.gdal.gdalconst.gdalconstConstants;
public class MyTest4 {
/**
* 必须注册
*/
static {
gdal.AllRegister();
}
private static final String FILE_PATH = "C:\\images\\test.tiff";
@Test
public void readTif() {
Dataset dataset = gdal.Open(MyTest4.FILE_PATH, gdalconstConstants.GA_ReadOnly);
//获取到六参数数组
double[] ori_transform = dataset.GetGeoTransform();
// 已知的像素点坐标 (x, y)
double pixelX = 6136.57523839107; // 示例像素X坐标
double pixelY = 16106.60091191435; // 示例像素Y坐标
// 应用GeoTransform进行坐标转换
double geoX = ori_transform[0] + pixelX * ori_transform[1] + pixelY * ori_transform[2];
double geoY = ori_transform[3] + pixelX * ori_transform[4] + pixelY * ori_transform[5];
// 输出转换后的地理坐标(经纬度)
System.out.println("像素坐标 (" + pixelX + ", " + pixelY + ") 对应的地理坐标为 (" + geoX + ", " + geoY + ")");
}