ArcGis, ArcView: Слияние полигонов с присвоением аттрибутов
-
- Интересующийся
- Сообщения: 36
- Зарегистрирован: 22 ноя 2005, 12:32
- Репутация: 0
ArcGis, ArcView: Слияние полигонов с присвоением аттрибутов
Добрый день!
Подскажите, пожалуйста, как справиться с такой задачей:
Есть вектроная тема, состоящая из смежных полигонов. Каждому полигону соответствует определенное значение параметра. Как слить все полигоны в один, но так, чтобы в аттрибутивной таблице результрующего полигона значение параметра соответствовало максимальному значению из вошедших в него полигонов.
В более общем случае - тема состоит из "островов" - каждый из которых - это набор смежных полигонов. Принадлежность каждого полигона к определенному острову - прописана в отдельном поле аттрибутов.
Подскажите, пожалуйста, как справиться с такой задачей:
Есть вектроная тема, состоящая из смежных полигонов. Каждому полигону соответствует определенное значение параметра. Как слить все полигоны в один, но так, чтобы в аттрибутивной таблице результрующего полигона значение параметра соответствовало максимальному значению из вошедших в него полигонов.
В более общем случае - тема состоит из "островов" - каждый из которых - это набор смежных полигонов. Принадлежность каждого полигона к определенному острову - прописана в отдельном поле аттрибутов.
-
- Гуру
- Сообщения: 852
- Зарегистрирован: 15 сен 2005, 13:19
- Репутация: 6
- Откуда: москва
- Контактная информация:
Re: ArcGis, ArcView: Слияние полигонов с присвоением аттрибутов
Не совсем понятно:
1. Смежные это значит "сплошное покрытие"? ведь не могут же быть все полигоны смежными, (соседними) даже в пределах островов...
2. Вам нужно слить только соседние полигоны без учета их атрибутов, или агрегировать любые полигоны по какому-то атрибутивному признаку, например, по номеру острова?
Впрочем условие слияния это момент отдельный от вашего основного вопроса. В ГИС обычно есть операции которые при любых слияниях сохраняют номера-идентификаторы обоих полигонов, а уж по ним вы можете "выудить" параметры прежних полигонов из "старого" файла и провести с ними любые операции. Разумеется, это потребует дополнительных операций с таблицами.
1. Смежные это значит "сплошное покрытие"? ведь не могут же быть все полигоны смежными, (соседними) даже в пределах островов...
2. Вам нужно слить только соседние полигоны без учета их атрибутов, или агрегировать любые полигоны по какому-то атрибутивному признаку, например, по номеру острова?
Впрочем условие слияния это момент отдельный от вашего основного вопроса. В ГИС обычно есть операции которые при любых слияниях сохраняют номера-идентификаторы обоих полигонов, а уж по ним вы можете "выудить" параметры прежних полигонов из "старого" файла и провести с ними любые операции. Разумеется, это потребует дополнительных операций с таблицами.
-
- Интересующийся
- Сообщения: 36
- Зарегистрирован: 22 ноя 2005, 12:32
- Репутация: 0
Слить нужно определенное количество полигонов, имеющих одинаковй параметр; в частном случае - эти полигоны являются соседними (=остров поделен на ячейки, каждая ячейка при этом имеет аттрибут имени острова)
Как проводится такая операция в ArcView разобрался - тривиально, с помощью GeoProcessingWizard, далее Dissolve features, после чего ArcView предлагает выбрать какие НОВЫЕ поля в таблицу аттрибутов следует добавить, в частности, максимальное значение аттрибутов сливаемых полигонов, минимальное, среднее и т.п.
Не могу найти аналогичную процедуру (с добавлением новых "статистических" полей) в ArcGis 9. Подскажите, плз, где она сидит:)
И в дополнение к вопросу: где в ArcGis 9 скрывается процедура, аналогичная ArcView(шной) - Assign data by location (Spatial join)
спасибо-)
Как проводится такая операция в ArcView разобрался - тривиально, с помощью GeoProcessingWizard, далее Dissolve features, после чего ArcView предлагает выбрать какие НОВЫЕ поля в таблицу аттрибутов следует добавить, в частности, максимальное значение аттрибутов сливаемых полигонов, минимальное, среднее и т.п.
Не могу найти аналогичную процедуру (с добавлением новых "статистических" полей) в ArcGis 9. Подскажите, плз, где она сидит:)
И в дополнение к вопросу: где в ArcGis 9 скрывается процедура, аналогичная ArcView(шной) - Assign data by location (Spatial join)

спасибо-)
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Right-click на теме, Join, Join by spatial locationИ в дополнение к вопросу: где в ArcGis 9 скрывается процедура, аналогичная ArcView(шной) - Assign data by location (Spatial join)
Вроде тоже самое в ней. Dissolve, statistical fields, название поля и тип статистики по крайней мере Arcgis 9.1/Arcinfo, может в Arcgis/Arcview нет этогоНе могу найти аналогичную процедуру (с добавлением новых "статистических" полей) в ArcGis 9. Подскажите, плз, где она сидит
пристегивайтесь, турбулентность прямо по курсу
-
- Интересующийся
- Сообщения: 36
- Зарегистрирован: 22 ноя 2005, 12:32
- Репутация: 0
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 16 дек 2009, 15:53
- Репутация: 0
Re: ArcGis, ArcView: Слияние полигонов с присвоением аттрибутов
Покажите хоть часть кода.
Вообще не могу представить как это делается.
Dissolve написано на Питоне, в принципе смысл понятен
Подскажите пожалуйста, как написать слияние смежных полигонов, но на VBA?
Перелопатил книгу по arcobjects даже намека нет, на решение этой задачи.
Вообще не могу представить как это делается.
Dissolve написано на Питоне, в принципе смысл понятен
Код: Выделить всё
# DissolveByUnique.py
# Description: Divide a line geodatabase feature class into several based on the unique values in a
# field. Output will be dissolved to remove pseudonodes (if any).
# Author: ESRI
# Date: 1/1/04
import arcgisscripting, sys, string, os
gp = arcgisscripting.create()
try:
# Set the workspace (to avoid having to type in the full path to the data every time)
gp.workspace = "C:/data/Transportation.mdb"
# Set the input feature class
fc = "transport"
# Set the field to create a list of unique values
fieldname = "ROAD_CLASS"
# Open a Search Cursor to identify all unique values
rows = gp.SearchCursor(fc)
row = rows.Next()
# Set a list variable to hold all unique values
L = []
# Using a while loop, cursor through all records and append unique values to the list variable
while row:
value = row.GetValue(fieldname)
if value not in L:
L.append(value)
row = rows.Next()
# Sort the list variable
L.sort()
# If a value in the list variable is blank, remove it from the list variable
if ' ' in L:
L.remove(' ')
# Use MakeFeatureLayer to create a selectable layer
gp.MakeFeatureLayer(fc, "dissolveLYR")
# Loop through the list variable
x = 0
for item in L:
# Concatenate the query
query = "[" + fieldname + "]" + " = '" + L[x] + "'"
# Create a selection on the layer with the current unique value (i.e., L[x])
gp.SelectLayerByAttribute("dissolveLYR", "NEW_SELECTION", query)
# Use Dissolve to create new feature class based on layer selection, output feature class
# will share name of unique value
gp.Dissolve_management("dissolveLYR", L[x], fieldname)
x = x + 1
except:
# If an error occurred while running a tool print the messages
print gp.getmessages()
Перелопатил книгу по arcobjects даже намека нет, на решение этой задачи.
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 16 дек 2009, 15:53
- Репутация: 0
Re: ArcGis, ArcView: Слияние полигонов с присвоением аттрибутов
не подскажете в каком классе функция append находится?
Кто сейчас на конференции
Сейчас этот форум просматривают: Semrush [Bot] и 4 гостя