3
A
回答
7
使用仿射變換矩陣,它將像素座標映射到世界座標。例如,使用affine軟件包。 (還有其他的方法做同樣的,使用簡單的數學。)
from affine import Affine
fname = '/path/to/raster.tif'
這裏有兩種方式來獲得仿射變換矩陣,T0
。例如,使用GDAL/Python的:
from osgeo import gdal
ds = gdal.Open(path, gdal.GA_ReadOnly)
T0 = Affine.from_gdal(*ds.GetGeoTransform())
ds = None # close
例如,使用rasterio:
import rasterio
with rasterio.open(fname, 'r') as r:
T0 = r.affine
13759 GDAL(T0
)用於變換陣列的約定是參考像素的角落。您可能要代替參考像素中心,所以它需要50%翻譯:
T1 = T0 * Affine.translation(0.5, 0.5)
而且現在從像素座標轉換爲世界座標,乘以矩陣,這是可以做到的座標一個簡單的函數:
rc2xy = lambda r, c: (c, r) * T1
現在,得到一個光柵的座標在第一行,第二列(索引[0, 1]
):
print(rc2xy(0, 1))
而且,請注意,如果您需要從世界座標中獲取像素座標,則可以使用倒立仿射變換矩陣~T0
。
相關問題
- 1. 通過座標獲取單元格
- 2. 的Apache POI如何獲取單元格的座標
- 3. 如何使用jQuery獲取單元格()x和y座標?
- 4. 根據網格座標在DataGridView中獲取單元格值
- 5. 獲取DataGridView中「當前單元格」的X/Y座標?
- 6. 如何從其他電子表格獲取活動單元格的座標點
- 7. 獲取元素的座標
- 8. 獲取網格的座標
- 9. 獲取表格的座標
- 10. 如何獲取單元格或任何子視圖的相對屏幕座標?
- 11. 獲取Microsoft.Office.Interop.Excel.Range的所有單元格座標
- 12. UITableView單元格座標
- 13. 單元格在Excel中的座標
- 14. 如何獲取單詞矢量座標
- 15. 如何在tableView中獲取表格目標單元格:heightForRowAtIndexPath:?
- 16. 如何獲取UIImageView座標?
- 17. 如何獲取vtkboxwidget座標
- 18. 如何獲取座標
- 19. locationManager如何獲取座標?
- 20. 如何獲取pymunk中的圓座標
- 21. 如何使用座標填充datagridview中的單元格
- 22. 如何在DevXtraGrid中找到單元格的座標?使用Testcomplete
- 23. 如何在QTableWidget中獲取單元格
- 24. 如何在heightForRowAtIndexPath中獲取單元格?
- 25. 獲取取決於x和y一表的單元格的值座標
- 26. 如何獲取鼠標的座標?
- 27. phpexcel如何獲取單元格格式
- 28. 找出點擊單元格的座標
- 29. 無效的單元格座標phpExcel
- 30. 無效的單元格座標phpExcel
對不起,評論極其延遲,但你能解釋爲什麼lambda的參數是反轉的嗎? r,c:(c,r)* T1。它不應該是r,c:(r,c)* T1? – jhc
@jhc行與Y方向和列與X對齊。所以爲了保持X和Y方向在像素座標空間和座標空間之間對齊,參數是對齊的。函數也可以用(col,row)或'cr2xy = lambda c,r:(c,r)* T1'來表示。但大多數數組訪問(例如Numpy)使用(row,col)排序。 –
將'row,col'轉換爲'x,y'的規範方法是使用乘法運算符。不需要翻譯步驟或額外的功能:'(0.5,0.5)*仿射' – perrygeo