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

时间:2016-02-13 04:01:20

标签: python gis geography

我在NAD83 UTM 13N中拥有成千上万的栅格。我尝试使用arcpy.GetCellValue_management(raster.tif,point)按点提取数据,但数据的西侧是在UTM 12N区域。有没有办法从12N获得坐标但是参考13N?项目要求是所有数据都是UTM 13N,即使它是一个全州项目。我知道它很傻。

1 个答案:

答案 0 :(得分:0)

这可以通过GDAL完成。将dataPoints.shp保存在您想要的UTM网格中(即UTM 13N),然后使用GDAL加载点图层,获取字段,获取几何图形,获取边界坐标,地理转换,栅格波段,点坐标(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