Підрахунок та растрування перекриттів полігонів у ArcGIS Desktop?


17

Як взяти векторний шар із перекриваються багатокутниками і перетворити його в растр, де кожна комірка рахує кількість полігонів, що містять цю клітинку?

Ми дивимося на полігони областей, що спалюють вогонь між 1976 і 2000 роками, і хочемо побачити, скільки пожеж міститиметься в кожній растровій клітині.

Відповіді:


22

Зробіть це в три етапи: розбийте багатокутники на їх складові частини, порахуйте перекриття та перетворіть у растрові. Це дозволяє уникнути величезної обчислювальної вартості окремо перетворити кожен багатокутник у растр та поєднати його.

  1. UnionGeoprocessingменю) розбиває багатокутники на їх частини.

    На жаль, кожне перекриття дублюється у висновку: воно має одну ідентичну копію для кожного оригінального багатокутника, який його охоплює. Тому

  2. Dissolve(знову в Geoprocessingменю) об'єднає частини, що перекриваються, за умови, що ви зможете знайти спосіб їх однозначної ідентифікації. Прочитайте діалогове вікно: до кінця у вас буде можливість обчислити "статистику". Виберіть будь-яке поле, яке, можливо, ідентифікувало оригінальні багатокутники, і запитайте про підрахунок.

    У багатьох випадках поєднання площі багатокутника та периметра однозначно визначає деталі. Якщо ні, ви можете додати більше геометричних властивостей у додаткові поля, наприклад координати центроїда, поки ви не накопичили достатньо інформації, щоб розрізнити кожну функцію.

    Отриманий шар має одну особливість для кожного перекриття багатокутника і якесь поле «підрахунок» підрахунку кількості перекриттів.

  3. Перетворіть це в растр, використовуючи для атрибутів поле "count".


Наприклад, ось кілька полігонів, що перекриваються, та їх ідентифікаторів із наведеною таблицею атрибутів:

введіть тут опис зображення

Після другого кроку у нас є один запис для кожної області, що перекривається, разом з підрахунком, який вже може бути використаний для символізації кількості перекриття:

введіть тут опис зображення

Решта легко - і це лише одна операція з растризації.


Цей векторний метод теж чудово працює, за винятком випадків, коли його застосовують до сотень тисяч багатокутників з безліччю перекриттів на комп'ютері з обмеженою пам'яттю ...
ccn,

@ccn Коли полігонів більше, ніж ArcGIS може обробити, розділіть набір даних на частини, які він може обробити. Вихід буде декількома растрами - але не тисячами чи мільйонами - які потім просто підсумовувати. Ще одна перевага використання Union- це те, що майже однаковий робочий процес дозволяє вирішити ситуацію, коли полігони знаходяться в декількох наборах даних (що, як правило, є поганим дизайном бази даних, але, на жаль, поширеним): просто об'єднуються всі набори вхідних даних одночасно.
whuber

@ccn (Продовження) точка, яку ви піднімаєте, зводиться до цього: коли краще раструовувати багатокутники і використовувати растрові операції для їх злиття порівняно з використанням векторних операцій ( union) з подальшим растеризацією? Векторні операції затухають, коли функції будуть оцифровані більш детально, ніж потрібно, надаючи їм занадто багато вершин. У цих екстремальних обставинах растровий підхід може бути кращим (хоча спочатку спрощення полігонів може бути найкращим варіантом). Однак у всіх інших ситуаціях растрування кожного багатокутника окремо є величезною тратою часу на комп’ютер та людину.
whuber

1
+1 для векторного рішення. Для того, щоб зробити це в перспективі, дані периметра запису ніколи не бувають дуже великими. Наприклад, весь набір даних по периметру спалювання MTBS (США, включаючи Аляску) за 1984–2010 роки містить ~ 19000 полігонів. Або векторний, або растровий підхід буде працювати чудово.
Аарон

@Aaron Дякую за перспективу. Щоб зробити спокійні США відразу при будь-якій розумній роздільній здатності (наприклад, 100 м), вам знадобиться, скажімо, растр 50000 стовпців і 30000 рядків, що містять 1 500 000 000 комірок. Генерування 19000 таких растрових даних - навіть облік вбудованого стиснення - а потім виконання 19000 * 1500000000 = близько 30000 мільярдів доповнень - вимагало б досить тривалого часу! Якщо замість кожного багатокутника використовується, скажімо, 100 вершин (що дуже докладно), об'єднання включає 1 900 000 вершин і є операцією O (n log (n)); в принципі (але не в ArcGIS :-), що займає менше 1 сек.
whuber

1

У наступному дописі є дещо подібне питання, з яким ви можете знайти відповідне рішення: Створення растрової поверхні перекриттів з векторних фігур багатокутника? .

Для цього обчислювально швидкого та простого растрового підходу вам знадобиться (1) розділити полігони, що перекриваються, на окремі шари (імовірно, за роками для полігонів пожежі), використовуючи Select By Attributes у ModelBuilder за допомогою ітератора чи інструменту сценарію, (2) перетворити кожен Полігон до растру з призначенням комірок MAXIMUM_COMBINED_AREA (забезпечуючи однаковий розмір комірки , оснащення растром , а також міра залишається такою ж, як і весь набір полігонів) - використовуючи постійне значення поля (наприклад, використовуйте поле року або рядки, у яких є всі 1s) для конвертації (знову використовуйте ModelBuilder з ітератором або сценарієм Python для автоматизації), а потім (3) застосуйте такий інструмент просторової аналітики: Статистика клітин - використовуйте статистику типу VARIETY, якщо кожен растр має унікальне значення, наприклад, рік або SUM, якщо всі значення комірок растрових значень 1s - обов'язково перевірте, щоб ігнорувати NoData.

Проміжні растри (з попереднього перетворення) можуть бути видалені або готові до використання в наступних растрових аналізах.


(Будь ласка, дивіться мого коментаря до відповіді Аарона .)
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.