package com.se.nsl.utils; import org.gdal.gdal.Dataset; import org.gdal.gdal.TranslateOptions; import org.gdal.gdal.gdal; import org.gdal.gdalconst.gdalconstConstants; import java.util.Vector; public class TiffClipper { public static void cropTiffByLatLon(String inputFilePath, String outputFilePath, double minX, double minY, double maxX, double maxY) throws Exception{ // 注册所有 GDAL 驱动 gdal.AllRegister(); Vector vector=new Vector(); vector.add("-projwin"); vector.add(String.valueOf(minX)); vector.add(String.valueOf(maxY)); vector.add(String.valueOf(maxX)); vector.add(String.valueOf(minY)); TranslateOptions options = new TranslateOptions(vector); // 打开输入数据集 Dataset ds = gdal.Open(inputFilePath, gdalconstConstants.GA_ReadOnly); if (ds == null) { throw new Exception("无法打开输入文件: " + inputFilePath); } // 执行裁剪操作 Dataset outputDataset = gdal.Translate(outputFilePath, ds, options); if (outputDataset != null) { System.out.println("裁剪成功,输出文件: " + outputFilePath); // 释放数据集资源 outputDataset.delete(); } else { System.err.println("裁剪失败"); } // 销毁 GDAL 驱动管理器 gdal.GDALDestroyDriverManager(); } public static void main(String[] args) throws Exception{ cropTiffByLatLon("D:\\城市内涝\\sem\\DEM.tif","D:\\城市内涝\\sem\\DEM100.tif",470066.5191659781,4417962.449727667,470922.1436516798,4418059.07638588); } }