将utm坐标转换为参考相邻分区的坐标

2024-06-28 20:16:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在NAD83 UTM 13N中有成千上万的光栅。我试图用arcpy.GetCellValue_管理(光栅.tif,但数据的最西面在UTM 12N区。有没有一种方法可以从12N得到一个坐标,但引用到13N?一个项目要求是所有数据都是UTM13N格式的,即使它是一个全州范围的项目。我知道这很傻。在


Tags: 数据项目方法光栅格式utmarcpytif
1条回答
网友
1楼 · 发布于 2024-06-28 20:16:46

这可以通过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

相关问题 更多 >