package org.example;
import org.gdal.gdal.Dataset;
import org.gdal.gdal.gdal;
public class Main {
public static void main(String[] args) {
// 初始化GDAL
gdal.AllRegister();
// 设置输入栅格文件路径
String rasterFilePath = "F:/Test/LST/L8_LST_30m.tif";
// 打开栅格文件
Dataset dataset = gdal.Open(rasterFilePath);
if (dataset != null) {
// 获取栅格数据的基本信息
int width = dataset.getRasterXSize(); // 栅格数据的宽度
int height = dataset.getRasterYSize(); // 栅格数据的高度
int bandsCount = dataset.getRasterCount(); // 栅格数据的波段数量
System.out.println("栅格数据宽度: " + width);
System.out.println("栅格数据高度: " + height);
System.out.println("栅格数据波段数量: " + bandsCount);
// 获取栅格数据的投影信息
String projection = dataset.GetProjection();
System.out.println("栅格数据投影信息:\n " + projection);
// 获取地理转换参数
double[] geoTransform = dataset.GetGeoTransform();
double originX = geoTransform[0]; // 左上角X坐标
double originY = geoTransform[3]; // 左上角Y坐标
double pixelWidth = geoTransform[1]; // 像素宽度
double pixelHeight = geoTransform[5]; // 像素高度
// 计算四个角点的坐标
double upperLeftX = originX;
double upperLeftY = originY;
double upperRightX = originX + width * pixelWidth;
double upperRightY = originY;
double lowerLeftX = originX;
double lowerLeftY = originY + height * pixelHeight;
double lowerRightX = originX + width * pixelWidth;
double lowerRightY = originY + height * pixelHeight;
System.out.println("左上角坐标: (" + upperLeftX + ", " + upperLeftY + ")");
System.out.println("右上角坐标: (" + upperRightX + ", " + upperRightY + ")");
System.out.println("左下角坐标: (" + lowerLeftX + ", " + lowerLeftY + ")");
System.out.println("右下角坐标: (" + lowerRightX + ", " + lowerRightY + ")");
// 关闭栅格文件
dataset.delete();
} else {
System.out.println("无法打开栅格文件!");
}
}
}
结果: