【问题标题】:how do I look for the same shape that has the identical fields?如何查找具有相同字段的相同形状?
【发布时间】:2015-07-14 04:43:07
【问题描述】:

我也在尝试查看 ArcMap 中的一组形状,看看它们是否是相同的形状和相同的资产名称。我可以拥有相同的形状但不同的资产。我用 arcpy 和游标写了这个:

AssetName = srow.getValue("AssetName")
shape = srow.getValue("Shape")
field = shape.area
ID = srow.getValue("OBJECTID")
if field in areaList:
    if ID in ShapeArea.keys():
        ShapeArea[ID].append("Duplicate Shapes")
    else:
        ShapeArea[ID] = ["Duplicate Shapes"]
else:
    areaList.append(field)

我如何使用它来比较它找到的形状并查看资产名称是否相同?

【问题讨论】:

  • 您使用的是什么版本的 ArcGIS?要素属于相同的要素类还是不同的要素类?
  • 我使用的是 ArcMap 10.2.2

标签: python arcpy arcmap


【解决方案1】:

看起来 ShapeArea 是你在某处构建的字典...

#if ID exists, check shape
if ID in ShapeArea.keys():
    #If shape is not in shape list, add it
    if not shape in ShapeArea[ID]:
        ShapeArea[ID].append("Duplicate Shapes")
#if ID does not exist, add ID and shape to dict.
else ShapeArea[ID] = shape

如果您有来自游标的特征并想检查它是否存在于其他地方,您可以使用包含特征 ID 和形状的 where 子句查询表。如果没有返回行,则它是唯一的。

exists = arcpy.MakeTableView_management('INPUT TABLE',"exists", "AssetName = '{}' and Shape = '{}'".format(AssetName,shape))
if int(arcpy.GetCount_management(exists)[0])==0
    Do Stuff

这里有一个关于表视图与游标的相对性能的有趣讨论https://geonet.esri.com/thread/12041

最后的想法:你需要使用光标吗?有一个名为“Find Identical”的内置 GP 工具已经具有此功能。 http://resources.arcgis.com/en/help/main/10.1/index.html#//001700000054000000

【讨论】:

  • 很抱歉。我确实使用光标进行此操作,并且确实创建了名为 ShapeArea 的字典。我忘了在我放在这里的代码片段中包含这两项。
  • 那么您是否能够让比较与字典一起使用?您必须先将所有形状和 ID 读入字典,所以您是否尝试过表格视图或搜索光标,看看它们是否更快?
  • 是的,我是。我找到了一种通过对象 ID 查看形状的方法,但我想知道是否有办法使用对象 ID 和资产名称字段
猜你喜欢
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 2017-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多