3
GDAL和Python:如何获取具有特定值的所有单元格的坐标?
我有一个Arc / Info Binary Grid(具体地说,是ArcGIS流累积栅格),并且我想识别所有具有特定值(或值范围)的像元。最终,我想要一个表示这些单元的点的shapefile。 我可以使用QGIS打开hdr.adf并获得此结果,工作流程为: QGIS>栅格菜单>栅格计算器(用目标值标记所有点) QGIS>栅格菜单>多边形 QGIS>矢量菜单>几何子菜单>多边形形心 编辑质心以删除不需要的多质心(这些质心= 0) 这种方法“完成了任务”,但是对我来说并不有吸引力,因为它创建了两个我必须删除的文件,然后我必须从形心的shapefile中删除不需要的记录(即那些= 0)。 一个现有的问题可以解决这个问题,但是它是针对ArcGIS / ArcPy量身定制的,我想留在FOSS领域。 是否有人拥有可查询栅格像元值的现有GDAL / Python配方/脚本,并且在找到目标值(或目标范围内的值)时,将记录添加到shapefile中?这样不仅可以避免与UI的交互,而且还可以通过一次创建干净的结果。 我通过与Chris Garrard的一个演示文稿进行对比而对此进行了射击,但是光栅工作不在我的操盘手,并且我不想用我的弱代码使问题变得混乱。 如果有人希望使用确切的数据集,我将它作为.zip放在这里。 [编辑注释]留给后代保留。请参阅与om_henners的评论交流。基本上,x / y(行/列)值被翻转。最初的答案是这样的: (y_index, x_index) = np.nonzero(a == 1000) 倒像这样: (x_index, y_index) = np.nonzero(a == 1000) 当我第一次遇到屏幕快照中说明的问题时,我想知道我是否正确地实现了几何图形,并通过在此行中翻转x / y坐标值进行了实验: point.SetPoint(0, x, y) ..如.. point.SetPoint(0, y, x) 但是那没有用。而且我不认为尝试翻转om_henners的Numpy表达式中的值,是错误地认为在任一行上翻转它们都是等效的。我认为真正的问题分别与x_size和y_size值有关,当行和列索引用于计算单元格的点坐标时,将应用和。30-30 [原始编辑] …