2024-06-28 20:16:46 发布
网友
我在NAD83 UTM 13N中有成千上万的光栅。我试图用arcpy.GetCellValue_管理(光栅.tif,但数据的最西面在UTM 12N区。有没有一种方法可以从12N得到一个坐标,但引用到13N?一个项目要求是所有数据都是UTM13N格式的,即使它是一个全州范围的项目。我知道这很傻。在
这可以通过GDAL实现。保存您的数据点.shp在您想要的UTM网格中(即UTM 13N),然后使用GDAL加载points层、获取字段、获取几何体、获取边界坐标、geotransform、光栅带、点坐标(以UTM 13N为单位)并将光栅读取为数组。在所有光栅上建立一个循环,它的工作速度非常快。感谢Luke提供了here的详细信息。在
from osgeo import gdal, ogr shp_filename = 'C:\\Path\\dataPoints_UTM13.shp' ds = ogr.Open(shp_filename) lyr = ds.GetLayer() for feat in lyr: point_id_obj = feat.GetField("Sample") name = feat.GetField("Location_D") geom = feat.GetGeometryRef() mx, my = geom.GetX(), geom.GetY() path = 'C:\\RasterPath' raster = 'myraster' ras_open = gdal.Open('{a}\\{b}.tif'.format(a=path, b=raster)) gt = aws_open.GetGeoTransform() rb = aws_open.GetRasterBand(1) px = abs(int((mx - gt[0]) / gt[1])) py = int((my - gt[3]) / gt[5]) ras_obj = rb.ReadAsArray(px, py, 1, 1) print point_id_obj print name print mx, my
这可以通过GDAL实现。保存您的数据点.shp在您想要的UTM网格中(即UTM 13N),然后使用GDAL加载points层、获取字段、获取几何体、获取边界坐标、geotransform、光栅带、点坐标(以UTM 13N为单位)并将光栅读取为数组。在所有光栅上建立一个循环,它的工作速度非常快。感谢Luke提供了here的详细信息。在
相关问题 更多 >
编程相关推荐