ArcGis, ArcView: Слияние полигонов с присвоением аттрибутов

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
Борис
Интересующийся
Сообщения: 36
Зарегистрирован: 22 ноя 2005, 12:32
Репутация: 0

ArcGis, ArcView: Слияние полигонов с присвоением аттрибутов

Сообщение Борис » 30 мар 2006, 12:34

Добрый день!

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

В более общем случае - тема состоит из "островов" - каждый из которых - это набор смежных полигонов. Принадлежность каждого полигона к определенному острову - прописана в отдельном поле аттрибутов.

geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

Re: ArcGis, ArcView: Слияние полигонов с присвоением аттрибутов

Сообщение geologic » 31 мар 2006, 15:11

Не совсем понятно:

1. Смежные это значит "сплошное покрытие"? ведь не могут же быть все полигоны смежными, (соседними) даже в пределах островов...

2. Вам нужно слить только соседние полигоны без учета их атрибутов, или агрегировать любые полигоны по какому-то атрибутивному признаку, например, по номеру острова?

Впрочем условие слияния это момент отдельный от вашего основного вопроса. В ГИС обычно есть операции которые при любых слияниях сохраняют номера-идентификаторы обоих полигонов, а уж по ним вы можете "выудить" параметры прежних полигонов из "старого" файла и провести с ними любые операции. Разумеется, это потребует дополнительных операций с таблицами.

Борис
Интересующийся
Сообщения: 36
Зарегистрирован: 22 ноя 2005, 12:32
Репутация: 0

Сообщение Борис » 31 мар 2006, 15:28

Слить нужно определенное количество полигонов, имеющих одинаковй параметр; в частном случае - эти полигоны являются соседними (=остров поделен на ячейки, каждая ячейка при этом имеет аттрибут имени острова)

Как проводится такая операция в ArcView разобрался - тривиально, с помощью GeoProcessingWizard, далее Dissolve features, после чего ArcView предлагает выбрать какие НОВЫЕ поля в таблицу аттрибутов следует добавить, в частности, максимальное значение аттрибутов сливаемых полигонов, минимальное, среднее и т.п.

Не могу найти аналогичную процедуру (с добавлением новых "статистических" полей) в ArcGis 9. Подскажите, плз, где она сидит:)

И в дополнение к вопросу: где в ArcGis 9 скрывается процедура, аналогичная ArcView(шной) - Assign data by location (Spatial join) :?:

спасибо-)

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Сообщение Максим Дубинин » 31 мар 2006, 18:59

И в дополнение к вопросу: где в ArcGis 9 скрывается процедура, аналогичная ArcView(шной) - Assign data by location (Spatial join)
Right-click на теме, Join, Join by spatial location
Не могу найти аналогичную процедуру (с добавлением новых "статистических" полей) в ArcGis 9. Подскажите, плз, где она сидит
Вроде тоже самое в ней. Dissolve, statistical fields, название поля и тип статистики по крайней мере Arcgis 9.1/Arcinfo, может в Arcgis/Arcview нет этого
пристегивайтесь, турбулентность прямо по курсу

Борис
Интересующийся
Сообщения: 36
Зарегистрирован: 22 ноя 2005, 12:32
Репутация: 0

Сообщение Борис » 01 апр 2006, 18:31

Спасибо :!:

Valle
Новоприбывший
Сообщения: 2
Зарегистрирован: 16 дек 2009, 15:53
Репутация: 0

Re: ArcGis, ArcView: Слияние полигонов с присвоением аттрибутов

Сообщение Valle » 16 дек 2009, 16:14

Покажите хоть часть кода.
Вообще не могу представить как это делается.
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()
Подскажите пожалуйста, как написать слияние смежных полигонов, но на VBA?
Перелопатил книгу по arcobjects даже намека нет, на решение этой задачи.

Valle
Новоприбывший
Сообщения: 2
Зарегистрирован: 16 дек 2009, 15:53
Репутация: 0

Re: ArcGis, ArcView: Слияние полигонов с присвоением аттрибутов

Сообщение Valle » 25 дек 2009, 09:36

не подскажете в каком классе функция append находится?

Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: Semrush [Bot] и 4 гостя