как мне найти ту же фигуру с одинаковыми полями?

Я также пытаюсь посмотреть на набор фигур в 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)

Как я могу использовать это, чтобы сравнить найденные фигуры и посмотреть, совпадает ли имя актива?


person ElizabethSchlueter    schedule 04.05.2015    source источник
comment
С какой версией ArcGIS вы работаете? Являются ли объекты одним и тем же или разными классами объектов?   -  person DWynne    schedule 08.05.2015
comment
Я использую ArcMap 10.2.2.   -  person ElizabethSchlueter    schedule 12.05.2015


Ответы (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

Если у вас есть функция из курсора и вы хотите проверить, существует ли она где-то еще, вы можете запросить таблицу с предложением 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

Последняя мысль: вам нужно использовать курсор? Существует встроенный инструмент GP под названием «Найти идентичные», который уже имеет эту функцию. http://resources.arcgis.com/en/help/main/10.1/index.html#//001700000054000000

person Ben S Nadler    schedule 09.05.2015
comment
Прости за это. Я использую курсор для этой операции, и я действительно создал словарь под названием ShapeArea. Я забыл включить эти два элемента в фрагмент кода, который я разместил здесь. - person ElizabethSchlueter; 12.05.2015
comment
Итак, вам удалось заставить сравнение работать со словарем? Вы, должно быть, сначала прочитали все формы и идентификаторы в словаре, поэтому пробовали ли вы табличное представление или курсор поиска, чтобы увидеть, быстрее ли они? - person Ben S Nadler; 13.05.2015
comment
Да, я был. Я нашел способ посмотреть на фигуры по идентификатору объекта, но мне было интересно, есть ли способ использовать идентификатор объекта и поля имени актива. - person ElizabethSchlueter; 13.05.2015