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