Страница 1 из 1
Нумерация полигонов
Добавлено: 12 окт 2009, 14:03
Pavel
Что-то я совсем затупил...
Есть полигональная тема, в ней очень много полигонов, им нужно присвоить номера от 1 до n, где n - последний полигон.
Читал вот это -
viewtopic.php?f=15&t=3991 не помогло...

Re: Нумерация полигонов
Добавлено: 12 окт 2009, 14:22
nadiopt
через калькулятор поля. вот только по какому принципу нужно нумеровать полигоны - как попало?
Re: Нумерация полигонов
Добавлено: 12 окт 2009, 14:40
Pavel
nadiopt писал(а):через калькулятор поля. вот только по какому принципу нужно нумеровать полигоны - как попало?
А что именно писать в этом калькуляторе? Нумерация идет сплошная по порядку.
Re: Нумерация полигонов
Добавлено: 12 окт 2009, 15:20
ГИС программист
Pavel писал(а):nadiopt писал(а):через калькулятор поля. вот только по какому принципу нужно нумеровать полигоны - как попало?
А что именно писать в этом калькуляторе? Нумерация идет сплошная по порядку.
Давайте сделаем по шагам;) Открываете таблицу атрибутов, щелкаете правой кнопкой на колонке, в которую Вы хотите занести порядковый номер и жмете Field Calculator. Ставите галочку Advanced и вводите в текстовое поле "Pre-Logic VBA Script Code" следующий текст:
Код: Выделить всё
Static rec As Long
Dim pStart As Long
Dim pInterval As Long
' Указываем стартовый номер
' ====================================
pStart = 1
' С каким интервалом наращиваем номер
' =======================================
pInterval = 1
If (rec = 0) Then
rec = pStart
Else
rec = rec + pInterval
End If
А в следующее поле вводите просто rec. Выглядит примерно, так :

Re: Нумерация полигонов
Добавлено: 12 окт 2009, 15:51
Pavel
Спасибо!!! Как раз то, что нужно!
Надо бы занятся будет синтаксисом VBA...

Re: Нумерация полигонов
Добавлено: 12 окт 2009, 17:59
nadiopt
гы а можно было проще:) номер= FID+1:)
Re: Нумерация полигонов
Добавлено: 12 окт 2009, 18:26
ГИС программист
nadiopt писал(а):гы а можно было проще:) номер= FID+1:)
При условии, что FID первого объекта==0 и нумерация всех FID-ов непрерывна. А если кто-то удалил полигон, то что у Вас получится, если FID-ы вида [0,1,5,6,8]? Далеко не по порядку:)
Re: Нумерация полигонов
Добавлено: 12 окт 2009, 20:16
Pavel
гы а можно было проще:) номер= FID+1:)
Скрипт очень простой! Куда уж проще?! Я предполагал, что так он и будет выглядеть, но синтаксиса VBA не знаю... Последнее, на чем я остановился был QBasic, и то это было давно и неправда!

Плюс все-таки эстетичней смотрится!

Спасибо за помощь!
Re: Нумерация полигонов
Добавлено: 05 ноя 2009, 13:40
Pavel
Возвращаясь к напечатанному (или к наболевшему, как посмотреть)...
Есть две колонки "Field" и "Area". "Field" заполнено значениями полностью. "Area" - нет (имеются ячейки со значением "0"). Нужно заполнить "Area" из колонки "Field", причем если "Area" имеет значение, то заполнять его не надо. Наужно заполнить лишь нули.
Пытался решить это брутфорсом:
Код: Выделить всё
Static rec As Long
If (rec = 0) Then
rec = [FIELD]
End If
Но не помогло. Заполняет колонку только первым значением ячейки из "Field".
Что нужно дописать в скрипт?
Re: Нумерация полигонов
Добавлено: 05 ноя 2009, 15:18
AndreyL
Код: Выделить всё
On Error Resume Next
If ([Area]=0) Then
reg = [FIELD]
Else
reg = [Area]
End If
__esri_field_calculator_splitter__
reg
Re: Нумерация полигонов
Добавлено: 06 ноя 2009, 08:11
Pavel
Спасибо за подсказку! Правда, последние две строчки пришлось убрать.
И еще... Где можно почитать про VBA для АркГИС? А то везде натыкаюсь только для Exel...

Re: Нумерация полигонов
Добавлено: 06 ноя 2009, 18:00
AndreyL
Pavel писал(а):Правда, последние две строчки пришлось убрать.
Последние две строчки - это сказано, что писать в поле.
Pavel писал(а): Где можно почитать про VBA для АркГИС? А то везде натыкаюсь только для Exel...

VBA в АркГИС и в Ёкселе одинаковый - микрософтовский. Объекты разные и идеология у АркОбжектс немного своя, ближе к СИшной. Гляньте
вот эту тему. Ну и
ДатаПлюсовский сайт - там есть специальные ветки.
Re: Нумерация полигонов
Добавлено: 06 ноя 2009, 22:53
Pavel
AndreyL писал(а):Последние две строчки - это сказано, что писать в поле.
А-а-а... Ну это я догадался...
AndreyL писал(а):VBA в АркГИС и в Ёкселе одинаковый - микрософтовский. Объекты разные и идеология у АркОбжектс немного своя, ближе к СИшной. Гляньте вот эту тему. Ну и ДатаПлюсовский сайт - там есть специальные ветки.
Спасибо! Почитаем!
Re: Нумерация полигонов
Добавлено: 07 апр 2010, 15:08
self-improving
Pavel писал(а):Есть полигональная тема, в ней очень много полигонов, им нужно присвоить номера от 1 до n, где n - последний полигон.
nadiopt писал(а):через калькулятор поля. вот только по какому принципу нужно нумеровать полигоны - как попало?
Навеяло
Если при этом таблица отсортирована по какому-либо полю (не FID!), и нумерация должна быть в соответствии с этой сортировкой. Есть идеи?
Варианты перегона в dbf/excel и пр. - не предлагать, хочется чего-нибудь красивого и не столь топорного =)