使用GeoTools解析栅格格式TIF图数据
Posted Snow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用GeoTools解析栅格格式TIF图数据相关的知识,希望对你有一定的参考价值。
最近项目中需要解析发布的tif图的数据,我使用的是GeoTools进行解析,当然也可以使用 GDAL 等方式进行解析。直接贴代码吧就。
public static void main(String[] args) throws IOException, FactoryException
long time=System.currentTimeMillis();
File file = new File("D:\\\\geoserver-2.19.0-bin\\\\data_dir\\\\data\\\\ImageMosaic\\\\nh3\\\\1_20230303.tif");
/**
* Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER:设置经度为第一轴顺序
*
*/
GeoTiffReader reader = new GeoTiffReader(file, new Hints(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER, Boolean.TRUE));
GridCoverage2D coverage = reader.read(null);
//设置坐标系
CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:4326");
// 将 GridCoverage 进行重采样转换为另一个 CRS
coverage = (GridCoverage2D) Operations.DEFAULT.resample(coverage, targetCRS);
CoordinateReferenceSystem crs = coverage.getCoordinateReferenceSystem2D();
// Envelope env = coverage.getEnvelope();
// RenderedImage image = coverage.getRenderedImage();
// 设置经纬度及坐标系等信息
DirectPosition position = new DirectPosition2D(crs, 29.67236, 113.54834);
// assume double
float[] f1 = (float[]) coverage.evaluate(position);
double[] doubleArray = new double[f1.length];
for (int i = 0; i < f1.length; i++)
doubleArray[i] = (double) f1[i];
double[] sample = doubleArray;
// resample with the same array
sample = coverage.evaluate(position, sample);
System.out.println(sample);
这里是通过经纬度来获取指定点位的数据,可以参考 GeoTools官网
Arcgis之栅格数据转换
参考技术A 案例1:栅格(tif)数据转.img格式数据场景: 想要将 data1.tif、data2.tif 格式数据转成 .img 格式数据
脚本:Python脚本示范
def RasterToOtherFormat(datalist, output, format):
arcpy.env.workspace = r'C:/Users/Administrator/Documents/ArcGIS/Default.gdb'
arcpy.RasterToOtherFormat_conversion(datalist, output, format)
RasterToOtherFormat("data1.tif, data2.tif", "output", "IMAGINE")
以上是关于使用GeoTools解析栅格格式TIF图数据的主要内容,如果未能解决你的问题,请参考以下文章