В течение некоторого времени я искал ответ на тот же вопрос, чтобы преодолеть уплощение проблемы перекрывающихся буферных полигонов, и думаю, что нашел надежное решение для этого. На самом деле @ комментарий Уубер,
В принципе, центроид, периметр и область могут все еще не однозначно идентифицировать многоугольник, но контрпримеры немного надуманы.
Ответ @ Paul был для меня главным стимулом продолжать попытки. Он использует оператор ARE_IDENTICAL_TO инструмента Spatial Join, поскольку он является наиболее эффективным среди других идентичных детекторов. Вот шаги:
- Self Объедините ваш вклад, чтобы все формы отличались друг от друга;
- Создайте фиктивное поле для хранения / копирования оригинальных OBJECTID (т. Е. Типа поля OID) строк, скажем, EX_OID ;
- Запустите Spatial Join для класса объектов, который требуется обработать как параметры объекта назначения и объекта соединения. Убедитесь, что сопоставления полей фиктивных полей (полей) (появляются дважды), ранее созданных, имеют правило слияния FIRST (по умолчанию или выберите LAST, остальные могут не дать желаемого результата, поскольку они используют сводку перекрытий). На этом этапе выбирается ОБЪЕКТИД общей формы, находящийся поверх всех перекрытий (т. Е. ПЕРВЫЙ);
Следующие шаги могут быть выполнены двумя способами, с Python или без:
С питоном
- Используйте код ниже, чтобы извлечь уникальные идентификаторы, которые мы хотим найти:
print tuple(set([row.getValue("EX_OID_1") for row in arcpy.SearchCursor("Output_of_the_Spatial_Join_Operation")]))
,
Помните, что я использую вторую копию фиктивного поля OID, в моем случае это EX_OID_1;
- Скопируйте вывод этого кода и вставьте его в Определении
запрос исходного класса объектов переработанного , как
OBJECTID IN (<PASTE_COPIED_VALUES_HERE>)
. В результате вы увидите унифицированные возможности перекрывающихся частей. Здесь есть ограничение по размеру, 30000 символов. Чтобы преодолеть эту проблему, вам нужно выполнить шаги «без питона».
БЕЗ ПИТОНА
Используйте инструмент «Частота» для отображения уникальных значений во второй копии фиктивного поля OID, в моем случае это EX_OID_1;
Наконец, объедините поле OBJECTID исходного класса пространственных объектов с выводом EX_OID_1 инструмента Частота , выбрав параметры «Сохранить только совпадающие записи».