Пронумеровать строки в поле по возрастанию

0 голосов
спросил 08 Ноя, 12 от inkda (440 баллов) в категории Программные продукты Esri
Здравствуйте форумчане , хотелось попросить у вас совета по поводу нумерации строк по возрастанию в ArcGis 9.X, дело в том что саму нумерацию через калькулятор поля с использованием скриптов VBA я провести могу. Благо скрипт не сложный да и в соседней теме от 2005г. уже его выкладывали.

Но проблема в том что у меня имеются около 20 административных районов, в каждом из которых 20 и больше точек, которые надо в свою очередь отсортировать по Xmin Ymax координатам, и только после этого провести нумерацию по порядку от 1 до N в поле N_на_карте. НО нумеруются строки не по сортировки а по дефолтному расположению точек в таблице, как сделать так чтобы нумеровалось в том порядке в котором они идут после сортировки???

image

На скриншоте видно что нумерация прошла по дефолтному расположение точек в базе.

з.ы. Пользователь Alexey посоветовал использовать скрипт "Неженские утилиты 3" ссылка - http://www.dataplus.ru/Root/Scripts/Index.asp?offset=30 но этот скрипт для ArcView 3.2. (там скрипт работает как мне нужно, но там я не могу реализовать сложную сортировку по этому есть ли аналог этому скрипту только в ArcGis 9.X???

17 Ответы

0 голосов
ответил 12 Ноя, 12 от Alexey (5,140 баллов)
Попробовал в ArcView решить вашу задачу - все получилось.
Выбираю некоторое множество точек, Затем нумерую его с единицы до N.
Для этого потребуются Неженские утилиты 3, вот ссылка - http://www.dataplus.ru/Root/Scripts/Index.asp?offset=30
В таблице появляется дополнительный инструмент, который позволяет нумеровать выделенные строки.
    image
    
Достаточно просто....и не надо в exel ничего делать.
    
0 голосов
ответил 12 Ноя, 12 от inkda (440 баллов)
ПОСЛЕ установки параметра dbfdefault нужно заново выполнить ЭКСПОРТ данных в шейп-файл. В момент экспорта файл перекодируется в кодировку DOS (866). Которую Excel использует по-умолчанию при чтении dbf.
Сам по себе файл dbf не изменится, какое бы значенине dbfdefault Вы не потсавили.
image
    

Да так и делал я, ничего не выходит как кривые буквы были так и остались, почему же не изменит? по идее те танцы с бубном в реестре проделываются чтобы изменить первый байт в котором содержится описание о кодировке в dbf, но как я понимаю Excel просто не читает этот байт
0 голосов
ответил 12 Ноя, 12 от inkda (440 баллов)
Попробовал в ArcView решить вашу задачу - все получилось.
Выбираю некоторое множество точек, Затем нумерую его с единицы до N.
Для этого потребуются Неженские утилиты 3, вот ссылка - http://www.dataplus.ru/Root/Scripts/Index.asp?offset=30
В таблице появляется дополнительный инструмент, который позволяет нумеровать выделенные строки.
    image
    
Достаточно просто....и не надо в exel ничего делать.
    

Спасибо за помощь тебе, но только я в ArcGis 9.3.1 работаю, по этому в эту ветку форума писал (тут же про arcgis 9.X вопросы задают???)
а ну ладно нам вроде все равно что то в ArcView GIS 3.2 надо делать, щас поставлю, попробую, в общем если еще мысли будут пиши, а так огромное еще раз спасибо за помощь
0 голосов
ответил 12 Ноя, 12 от inkda (440 баллов)
Блин попробовал в ArcView, скрипт работает на ура, но при этом я не могу сделать сортировку как мне нужно((((
у меня есть 10 районов, в каждом из которых по 40 и больше точек, каждая точка имеет свои координаты, надо сначала сделать выборку по одному конкретному району, потом отсортировать точки в этом районе по Ymax, Xmin, и так уже их пронумеровать, в arcview 3.2 сделать это нереально помойму

уже не знаю что делать, редакторв dbf Ни один не помог решить проблемы, одни не открывают другие не перекодируют третьи вообще ошибки выдают, наверно проще уже вручную ставить((((
0 голосов
ответил 12 Ноя, 12 от Grigoriy (127,020 баллов)

Да так и делал я, ничего не выходит как кривые буквы были так и остались, почему же не изменит? по идее те танцы с бубном в реестре проделываются чтобы изменить первый байт в котором содержится описание о кодировке в dbf, но как я понимаю Excel просто не читает этот байт

Повторяю. Сама установка параметра ничего не меняет в уже существующем файле.
Она влияет на то, в каком виде ArcGIS будет принимать и выдавать файлы при экспорте-импорте.
Чтобы перекодировать файл в кодировку dos нужно:
1. Сконвертировать шейп (или dbf) в файловую бгд.
2. Проверить что кодировка класса объектов в бгд правильная.
3. Установить dbfdefault=866 (или oem)
4. Перезапустить ArcGIS - он перечитает установки.
5. Импортировать класс объектов их бгд в шейп-файл.
При импорте файл будет перекодирован в кодировку 866 и его можно открывать в Excel.
0 голосов
ответил 12 Ноя, 12 от Grigoriy (127,020 баллов)
Ну а с сортировкой - для 9.3 нужно или пытаться писать выражение, которое будет присваивать правильные значения на основе Ваших данных, возможно в несколько простых и понятных промежуточных проходов. Или использовать внешние инструменты.
sort on arcscripts

Для ArcGIS Advanced (ArcInfo) 10.0 и 10.1 можно сначала "физически" отсортировать записи по нескольким полям (для ArcView только по одному полю):
Сортировать (Sort) (Управление данными (Data Management))
А потом уже выполнять "вычисления".
0 голосов
ответил 13 Ноя, 12 от inkda (440 баллов)
Ну а с сортировкой - для 9.3 нужно или пытаться писать выражение, которое будет присваивать правильные значения на основе Ваших данных, возможно в несколько простых и понятных промежуточных проходов. Или использовать внешние инструменты.
sort on arcscripts

Для ArcGIS Advanced (ArcInfo) 10.0 и 10.1 можно сначала "физически" отсортировать записи по нескольким полям (для ArcView только по одному полю):
Сортировать (Sort) (Управление данными (Data Management))
А потом уже выполнять "вычисления".

Спасибо буду читать, пробовать. А насчет кодировки спасибо, разобрался, видимо надо было не всю строку копировать значений через запятую а просто oem или 866, тогда с экспортом все работает
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...