0
我在NAD83 UTM 13N中有成千上萬的柵格。我試圖使用arcpy.GetCellValue_management(raster.tif,point)通過點提取數據,但數據的西部位於UTM 12N區域。有沒有辦法從12N獲得座標,但是參考13N?項目要求是所有數據都是UTM 13N,儘管它是一個全州範圍的項目。我知道它很愚蠢。轉換utm座標以參照相鄰區域的座標
我在NAD83 UTM 13N中有成千上萬的柵格。我試圖使用arcpy.GetCellValue_management(raster.tif,point)通過點提取數據,但數據的西部位於UTM 12N區域。有沒有辦法從12N獲得座標,但是參考13N?項目要求是所有數據都是UTM 13N,儘管它是一個全州範圍的項目。我知道它很愚蠢。轉換utm座標以參照相鄰區域的座標
這可以用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