Я вже деякий час шукаю відповіді на те саме питання, щоб подолати вирівнювання перекриття полігонів, що перекриваються, і думаю, що знайшов надійне рішення для цього. Насправді @ коментар Whuber,
В принципі, центроїд, периметр і площа все ще не можуть однозначно ідентифікувати багатокутник, але зустрічні приклади дещо спроможені.
відповідь @ Павла була головним рушієм для мене, щоб продовжувати намагатися. Він використовує оператор ARE_IDENTICAL_TO інструменту просторового з'єднання, оскільки це найбільш ефективний серед інших однакових детекторів. Ось такі кроки:
- Самостійно з'єднайте свої дані, щоб усі форми відрізнялися один від одного;
- Створіть фіктивне поле, щоб зберегти / скопіювати оригінальні OBJECTID (тобто тип поля OID) рядків, скажімо EX_OID ;
- Запустіть просторове приєднання на класах функцій, який потрібно обробити як цільовими, так і об'єднаними параметрами функції. Переконайтесь, що попередньо створені попередньо створені відображення полів (-ів) фіктивних полів (полів) мають правило злиття 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>)
. Результатом буде показ уніфікованих особливостей деталей, що перекриваються. Тут є обмеження розміру, хоча 30 000 символів. Щоб подолати це питання, потрібно дотримуватися кроків "без пітона".
БЕЗ ПІТОНА
Використовуйте інструмент "Частота" для перерахування унікальних значень у другій копії фіктивного поля OID, яке в моєму випадку є EX_OID_1;
Нарешті, приєднайтесь до поля OBJECTID початкового класу функцій із виведенням EX_OID_1 інструмента частоти , вибравши параметри "Зберігати лише відповідні записи".