GDAL利用地理坐標讀取圖像像元值


最近的一個項目需要在電子海圖中下載已知水深點,導出點的地理坐標(經緯度)。然后在arcgis中打開這些地理坐標輸出為shp,利用GDAL讀取不同波段的點對應的像元值,從而構建水深和像元值的對應關系。

其實想要根據經緯度得到像元值有兩種方法。

1.通過arcpy選擇點輸出像元值,這個方法簡單快捷,依賴於arcgis。

2.通過GDAL讀取經緯度(度分秒),轉換成小數形式。使用GDAL的CoordinateTransformation方法將經緯度轉換成投影坐標,再轉換成行列坐標,最后讀取像元值。這里給出官方文檔里面的代碼以供參考。

補充一點:這里之所以把經緯度先轉成投影坐標是因為遙感影像的坐標系是投影坐標系,而仿射六參的轉換方法要求待轉換點坐標和影像的投影坐標系一致,所以需要先轉換成投影坐標。

     如果遙感影像的坐標系是地理坐標系(即沒有投影坐標系),那么這里直接對經緯度坐標進行仿射六參轉換即可得到行列號。

     而按下面的代碼此時srs為none,srs與geocs的轉換器仍然是對應的,那么經緯度轉換后仍然是對應的格式,經過仿射變換最終得到行列號,也同樣成立(該步驟可省略)。

 

其中GetGeoTransform獲取獲取圖像的地理空間范圍、分辨率信息。第1、4個值是左上角第一個像元中心的坐標。2、6是xy方向的空間分辨率。3、5是旋轉系數和平移系數。

SpatialReference()建立空間參考,GetProjection返回投影信息,以wkt格式輸出,最后用ImportFromWkt方法讀取字符串並創建地理坐標系、基准面、投影方法、分辨率等。

CloneGeoCS方法創建地理坐標(經緯度),CoordinateTransformation方法建立投影坐標系和地理坐標系的轉換關系,TranformPoint方法將地理坐標帶入轉換關系式,得到投影坐標,最后再計算得到行列數。

Tips

1.list out of range 應該是輸入的列表格式有問題。

2.此外注意經度和緯度的輸入位置。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM