【问题标题】:Mean center of polygon feature class using numpy, arcpy使用 numpy、arcpy 的多边形要素类的平均中心
【发布时间】:2017-12-17 08:48:13
【问题描述】:

我的任务是使用 numpy 数组查找要素类的平均中心。我使用

从要素类创建了一个numpy数组
import arcpy
import numpy
fc = "polygons.shp"
a = arcpy.da.FeatureClassToNumPyArray(fc, ["SHAPE@X", "SHAPE@Y"])

那么数组 a 是:

array([( 3107178.29076947,  10151024.31186805),
       ( 3107961.30479125,  10139810.52458512),
       ( 3109603.8882401 ,  10119654.26424824),
       ( 2992362.40598316,  10049723.50515586),
       ....
       ( 3114517.82381449,  10071634.68261757)],
       dtype=[('SHAPE@X', '<f8'), ('SHAPE@Y', '<f8')])

这是 fc 中每条记录的质心 (X,Y)。我如何获得这些的meanX和meanY,所以输出将是([(mean.X,mean.Y)])?如here所述,我已尝试使用以下内容:

numpy.mean(a, axis=0)

但我得到的只是 X 值的平均值。在 arcpy.da 函数之后是否有一些额外的步骤来更改 dtype 以成功获得 mean.X、mean.Y 值?我必须使用 numpy mean 函数来做到这一点。谢谢!

【问题讨论】:

    标签: python arrays numpy mean arcpy


    【解决方案1】:
    np.mean(a.view((float, len(a.dtype.names))), axis=0)
    

    【讨论】:

      【解决方案2】:
      meanxy=[np.mean(y) for y in zip(*a)]
      

      * 将所有位置参数收集在一个元组中

      【讨论】:

      • 谢谢,但我必须使用 numpy.mean 函数来执行此操作。我已将这一点信息添加到原始帖子中。
      • 谢谢,效果也很好,更简洁
      【解决方案3】:

      可能有点矫枉过正,但是对于来自要素类的结构化和/或重新排列,您应该注意存在的数据类型的混合。如果完成了对浮点数的全面升级,整数、浮点数和字符串的混合将导致错误。可能会建议您同时对您想要单独或特定 dtype 的字段执行实际计算。 考虑一个具有以下 dtype 的要素类:

      a.dtype.names = ('ID', 'X', 'Y', 'Z')

      平均“ID”没什么用……但是,3D 坐标的平均值可能有用。要获得这些坐标的平均值,您可以将它们作为单例进行。

          a['X'].mean(), a['Y'].mean(), a['Z'].mean()
          (74047.105809675646, -3466195.1836807081, 418.45351408062925)
      

      或作为一批未知长度的浮点数

      [a[i].mean() for i in a.dtype.names if a[i].dtype.kind in ('f', 'float')]
      

      产生与元组相同的结果

       [74047.105809675646, -3466195.1836807081, 418.45351408062925]
      

      并确保您记住什么是什么价值......

         [(i, a[i].mean()) for i in a.dtype.names if a[i].dtype.kind in ('f', 'float')]
      
      [('X', 74047.105809675646),
       ('Y', -3466195.1836807081),
       ('Z', 418.45351408062925)]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-19
        • 2021-03-16
        • 2017-04-10
        • 1970-01-01
        • 2016-02-06
        • 2011-01-22
        • 1970-01-01
        • 2017-06-22
        相关资源
        最近更新 更多