2016-02-13 53 views
0

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

回答

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