【发布时间】:2014-11-11 15:02:54
【问题描述】:
我有一个 ESRI 点形状文件,其中包含(以及其他)一个 nMSLINK 字段和一个 DIAMETER 字段。由于空间连接,MSLINK 不是唯一的。我想要实现的是仅保留 shapefile 中具有唯一 MSLINK 和最小 DIAMETER 值的特征,以及其他字段中的相应值。我可以使用搜索光标来实现这一点(遍历所有特征并删除每个不符合要求的特征,但这需要很长时间(> 75000 个特征)。我想知道例如 numpy 是否可以在 ArcMap/arcpy 中更快地完成这个技巧。
【问题讨论】:
-
你能添加一些代码作为一个最小的例子吗?
-
# Select smallest MIDDELLIJN_INWENDIG for each MSLINKrows = arcpy.SearchCursor('Afsluiters_Leidingen', '', '', '', 'MSLINK A; MIDDELLIJN_INWENDIG D')for row in rows:diam = row.MIDDELLIJN_INWENDIGdict[row.MSLINK] = diamfor key in dict:arcpy.SelectLayerByAttribute_management('Afsluiters_Leidingen','NEW_SELECTION','MSLINK = ' + str(key) + 'AND NOT MIDDELLIJN_INWENDIG = ' + str(dict[key]))arcpy.DeleteFeatures_management('Afsluiters_Leidingen') -
这可行,但对于大型 shapefile 需要很长时间
标签: python numpy unique arcpy arcmap