Как растворить перекрывающиеся полигоны?

10

У меня есть вопрос относительно растворения объектов многоугольника в ArcGIS 9.3. У меня есть только лицензия и очень базовые знания VB.

У меня есть большой шейп-файл с примерно 4500 полигонами, и я хочу знать, есть ли способ слить те, которые перекрываются? Я в основном хочу превратить этот слой в шейп-файл, который содержит отдельные области, поэтому, где один полигон сам по себе, он останется, но там, где несколько полигонов перекрываются, они растворяются в 1, при этом каждая отдельная область имеет свой собственный набор атрибутов. Шейп-файл меняется довольно часто, и до сих пор я просматривал их все и вручную растворял перекрывающиеся области, используя инструмент редактора, но я уверен, что есть гораздо более быстрый способ сделать это!

Любое понимание того, как это может быть достигнуто?


Я попробовал использовать инструмент растворения и присоединился к экспортированной таблице атрибутов, и это прекрасно работает! Я думал, что инструмент растворения работает только с атрибутами, а не с пространственным местоположением, так что это очень полезно знать. Также код ModelBuilder

PolyGeo
источник
Отличные ответы. Брэд Несом, как получить значение таблицы оригинальных атрибутов для распущенного шейп-файла?
Гуннар
Мне нужно то, что ты сделал, но когда я запускаю инструмент растворения, он просто объединяет все его черты в моей форме, поэтому он не работает. Как ты заставил это бежать?
Федерико Гомес,

Ответы:

13

Возможно, я что-то упустил, но разве основной инструмент Dissolve (где-то на панели инструментов управления данными) не сделает это для вас? Нет необходимости связываться с любым кодом, как в ответе artwork21. Просто откройте инструмент растворения, выберите свой класс пространственных объектов, не выбирайте поля для слияния, а затем снимите флажок «Создать многоэлементные пойгоны», иначе все ваши поли станут одним большим многокомпонентным поли.

Прямо сейчас у меня нет Arc, но если я правильно читаю ваш вопрос, я сделал это перед использованием этого метода. Единственная проблема здесь - атрибуты в таблице. Вы знаете данные, поэтому вам нужно будет выбрать, как объединить каждое поле в части инструмента «Поля статистики».

Если этот процесс выполняется очень часто или вы хотите, чтобы он выполнялся автоматически, сделайте это с помощью построителя моделей и экспортируйте его в сценарий, но для его заполнения потребуется 10 секунд.

MWrenn
источник
14

@ Том Паркер - MWrenn правильно.
У вас есть возможность выбрать атрибут для растворения (это приведет к растворению атрибута) или без атрибута (это приведет к пространственному растворению).

выберите статистику и любые атрибуты, которые вы хотите перенести. (это не будет работать так, как вы хотите).

опции

Перед тем как распустить. создайте новое поле и рассчитайте в нем FID.
Затем экспортируйте dbf ваших атрибутов, и вы можете (несколько позже объединить их с полигонами).

Если вам нужна помощь в этом, дайте мне знать, и я опубликую другие скриншоты или найду помощь в ресурсном центре arcgis.com.

Если вы заметили, что на следующем снимке экрана имя одинаково во всех многоугольниках (9.3.1, похоже, не корректно растворяется в arcmap). Попробуйте это из архаталога.

корма растворяется

Может быть, у кого-то еще будет лучший метод.

Единственный другой способ, который я могу придумать, - это выбрать по местоположению (полигоны, которые пересекаются друг с другом).
Экспортируйте их в отдельный файл, а затем распустите.
Затем, после того как вы распустите каждый файл, вы можете использовать свободные слои слияния (в et-geo-wizards)

Брэд Несом
источник
4

Вы можете создать модель в Model Builder и экспортировать скрипт, затем скопировать и вставить этот скрипт в UIButtonControl в ArcMap vba. Смотрите пример скрипта ниже.

Private Sub Dissolve_Click()

' Create the Geoprocessor object
set gp = CreateObject("esriGeoprocessing.GPDispatch.1")

' Load required toolboxes...
gp.AddToolbox "C:/Progra~1/ArcGIS/ArcToolbox/Toolboxes/Data Management Tools.tbx"

' Local variables...

Dim test_shp as string

test_shp = "C:\Temp\test.shp"
Output_Feature_Class = "C:\Temp\test_Dissolve.shp"

' Process: Dissolve...
gp.Dissolve_management test_shp, Output_Feature_Class, "", "", 
  "MULTI_PART", "DISSOLVE_LINES"

End Sub
artwork21
источник