将 utm 坐标转换为参考邻近区域的坐标
convert utm coordinate to coordinate in reference to neighboring zone
我在 NAD83 UTM 13N 中有数万个栅格。我正在尝试使用 arcpy.GetCellValue_management(raster.tif, point) 按点提取数据,但数据的最西侧位于 UTM 12N 区域。有没有办法从 12N 获取坐标但参考 13N?项目要求是所有数据都在 UTM 13N 中,即使它是一个全州项目。我知道这很愚蠢。
这可以用 GDAL 来完成。将 dataPoints.shp 保存在您想要的 UTM 网格中(即 UTM 13N),然后使用 GDAL 加载点图层、获取字段、获取几何图形、获取边界坐标、地理变换、栅格带、点坐标(在 UTM 13N 中) 并将栅格读取为数组。在所有栅格上建立一个循环,它工作得非常快。感谢 Luke for giving the details 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
我在 NAD83 UTM 13N 中有数万个栅格。我正在尝试使用 arcpy.GetCellValue_management(raster.tif, point) 按点提取数据,但数据的最西侧位于 UTM 12N 区域。有没有办法从 12N 获取坐标但参考 13N?项目要求是所有数据都在 UTM 13N 中,即使它是一个全州项目。我知道这很愚蠢。
这可以用 GDAL 来完成。将 dataPoints.shp 保存在您想要的 UTM 网格中(即 UTM 13N),然后使用 GDAL 加载点图层、获取字段、获取几何图形、获取边界坐标、地理变换、栅格带、点坐标(在 UTM 13N 中) 并将栅格读取为数组。在所有栅格上建立一个循环,它工作得非常快。感谢 Luke for giving the details 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