Есть полигональная тема, в ней очень много полигонов, им нужно присвоить номера от 1 до n, где n - последний полигон.
Читал вот это - viewtopic.php?f=15&t=3991 не помогло...

Геоинформационные системы (ГИС) и Дистанционное зондирование Земли
А что именно писать в этом калькуляторе? Нумерация идет сплошная по порядку.nadiopt писал(а):через калькулятор поля. вот только по какому принципу нужно нумеровать полигоны - как попало?
Давайте сделаем по шагам;) Открываете таблицу атрибутов, щелкаете правой кнопкой на колонке, в которую Вы хотите занести порядковый номер и жмете Field Calculator. Ставите галочку Advanced и вводите в текстовое поле "Pre-Logic VBA Script Code" следующий текст:Pavel писал(а):А что именно писать в этом калькуляторе? Нумерация идет сплошная по порядку.nadiopt писал(а):через калькулятор поля. вот только по какому принципу нужно нумеровать полигоны - как попало?
Код: Выделить всё
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
При условии, что FID первого объекта==0 и нумерация всех FID-ов непрерывна. А если кто-то удалил полигон, то что у Вас получится, если FID-ы вида [0,1,5,6,8]? Далеко не по порядку:)nadiopt писал(а):гы а можно было проще:) номер= FID+1:)
Скрипт очень простой! Куда уж проще?! Я предполагал, что так он и будет выглядеть, но синтаксиса VBA не знаю... Последнее, на чем я остановился был QBasic, и то это было давно и неправда!гы а можно было проще:) номер= FID+1:)
Код: Выделить всё
Static rec As Long
If (rec = 0) Then
rec = [FIELD]
End If
Код: Выделить всё
On Error Resume Next
If ([Area]=0) Then
reg = [FIELD]
Else
reg = [Area]
End If
__esri_field_calculator_splitter__
reg
Последние две строчки - это сказано, что писать в поле.Pavel писал(а):Правда, последние две строчки пришлось убрать.
VBA в АркГИС и в Ёкселе одинаковый - микрософтовский. Объекты разные и идеология у АркОбжектс немного своя, ближе к СИшной. Гляньте вот эту тему. Ну и ДатаПлюсовский сайт - там есть специальные ветки.Pavel писал(а): Где можно почитать про VBA для АркГИС? А то везде натыкаюсь только для Exel...
А-а-а... Ну это я догадался...AndreyL писал(а):Последние две строчки - это сказано, что писать в поле.
Спасибо! Почитаем!AndreyL писал(а):VBA в АркГИС и в Ёкселе одинаковый - микрософтовский. Объекты разные и идеология у АркОбжектс немного своя, ближе к СИшной. Гляньте вот эту тему. Ну и ДатаПлюсовский сайт - там есть специальные ветки.
Pavel писал(а):Есть полигональная тема, в ней очень много полигонов, им нужно присвоить номера от 1 до n, где n - последний полигон.
Навеялоnadiopt писал(а):через калькулятор поля. вот только по какому принципу нужно нумеровать полигоны - как попало?
Сейчас этот форум просматривают: Ahrefs [Bot] и 1 гость
© GIS-Lab и авторы, 2002-2017. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов (подробнее).