Группировать соприкасающиеся с углом смежные полигоны с помощью ArcGIS Desktop?


12

Используя ArcGIS 10, у меня есть класс объектов, который я преобразовал из растра (GRID) (инструмент Растр в полигон).

  • Есть ок. 180 000 полигонов.
  • Таблица атрибутов содержит поле [grid_code], которое мне нужно сохранить.
  • Если один или несколько многоугольников соприкасаются с углами, касающимися AND, и имеют одинаковое значение [grid_code], то я бы хотел сгруппировать их (в основном, слить) в один многоугольник (запись).
  • Затем мне нужно рассчитать площадь сгруппированного многоугольника.

Используя инструмент «Выбрать по расположению», я могу успешно выбрать полигоны, которые мне нужно сгруппировать, но как мне затем преобразовать их в ОДИН полигон, сохранив при этом [код_сети]?


3
Рассматривали ли вы запуск команды Region Group перед преобразованием растров в полигоны?
Кирк Куйкендалл

1
Кирк абсолютно прав: вы хотите сделать этот расчет с исходной сеткой, где он будет быстрым и эффективным, а не в формате выходного вектора, где он будет медленным и болезненным.
whuber

2
Спасибо Кирк и Билл. Да, Region Group - правильный инструмент. К сожалению, использование Region Group в моем большом наборе данных вызывает горизонтальное чередование, известную ошибку Spatial Analyst. Эти полосы были задокументированы еще в декабре 2009 года, но теперь, с использованием ArcGIS 10, эти проблемы ЕЩЕ остаются. Вы можете прочитать все об этом здесь: [link] ( forums.arcgis.com/threads/… ) Моя работа заключается в том, чтобы записать выходные данные инструмента Region Group в старое доброе рабочее пространство ArcInfo как GRID. Это, кажется, исправить это!
MJN

Без этого обходного пути и с учетом ошибки RegionGroup вам пришлось бы выполнить расчет фокусного сорта 2x2 для определения потенциальных углов (сорт должен быть 3 или 4), а затем использовать их для создания таблицы потенциальных угловых точек. угловые отношения между полигонами, которые могли бы (значительно) упростить поиск касательных углов полигонов. Какая боль ...
whuber

Имейте в виду, что если полигоны разделяют только одну вершину, вы вводите самопересечение и тем самым лишаете законной силы геометрию.
Джим Б.

Ответы:


2

Вы можете растворить смежные полигоны с общими значениями идентификаторов с помощью инструмента Dissolve .

  1. Выберите поле кода Grid как «Dissolve_Field (необязательно)»
  2. В нижней части формы инструмента установите флажок «Не разделять линии (необязательно)».
  3. Создать поле области
  4. Щелкните правой кнопкой мыши поле области и выберите «Рассчитать геометрию».

2

Это много полигонов. Сначала я бы нашел решение в растровом формате, когда с топологией проще работать. Но если вы не хотите писать код, вы можете:

  1. Выберите данный код сетки.
  2. закодировать этот код сетки очень маленьким количеством (опция объединенных буферов)
  3. буферизовать результат отрицательно тем же самым очень маленьким значением.

Там будет небольшое округление в геометрии.

Чтобы создать один слой, пересекайте получающиеся слои кода сетки и очищайте, чтобы удалить многоугольники.


-1

Лично я бы написал код, который прошел через многоугольники и проверил, совпадают ли 4 угловые точки многоугольника с любыми другими углами многоугольника, и рекурсивно назову его - заливка заливкой как таковая.

Я делаю это с сетками netCDF для создания подходящих похожих полигонов.

Другим вариантом было бы сделать это в корне с сеткой.


Комментарии были удалены, когда они превратились в бессмысленные препирательства и / или шум, и весь набор не подлежит спасению.
Mapperz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.