Как массово изменить псевдонимы полей?

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
amnesiac
Активный участник
Сообщения: 244
Зарегистрирован: 03 мар 2015, 10:01
Репутация: 24
Откуда: Санкт-Петербург

Как массово изменить псевдонимы полей?

Сообщение amnesiac » 28 янв 2016, 13:05

Подскажите, пожалуйста, как можно удалить псевдонимы полей и заменить их на значения имени поля, не открывая каждый раз свойства поля? В Arcgis 10.2 нет инструмента "Изменить поле", есть ли какой-то другой способ?

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Как массово изменить псевдонимы полей?

Сообщение Ariki » 28 янв 2016, 14:08

Если это небольшая файловая БД, можно экспортировать её в XML, отредактировать и импортировать в новую базу. Если SDE, можно попробовать сделать это через SQL.

Аватара пользователя
Игорь Лебедь
Завсегдатай
Сообщения: 452
Зарегистрирован: 24 апр 2010, 19:47
Репутация: 101
Откуда: Город в клёнах и акациях
Контактная информация:

Re: Как массово изменить псевдонимы полей?

Сообщение Игорь Лебедь » 28 янв 2016, 15:15

1) Экспортируйте через Data Interoperability Tools в mid \ mif, откройте mif notepad++-ом, переименуйте текстовый файл, сохраните, экспортируйте в АРК обратно.

2) Или импорт в PostgreSQL/PostGIS и писайт скрипт типа

Код: Выделить всё

ALTER TABLE [ ONLY ] name [ * ]
    RENAME [ COLUMN ] column TO new_column
экспорт шейпа обратно в АРК.

amnesiac
Активный участник
Сообщения: 244
Зарегистрирован: 03 мар 2015, 10:01
Репутация: 24
Откуда: Санкт-Петербург

Re: Как массово изменить псевдонимы полей?

Сообщение amnesiac » 28 янв 2016, 15:47

Ariki писал(а):Если это небольшая файловая БД, можно экспортировать её в XML, отредактировать и импортировать в новую базу.
Игорь Лебедь писал(а):1) Экспортируйте через Data Interoperability Tools в mid \ mif, откройте mif notepad++-ом, переименуйте текстовый файл, сохраните, экспортируйте в АРК обратно.
это наверное немного не то, что я имела ввиду. отредактировать примерно так же можно и в арккаталоге
шейп, к сожалению, не подходит, у меня длинные имена, которые не представляется запихнуть в 10 знаков без потери смысла=(
Ariki писал(а):можно попробовать сделать это через SQL.
а можно поподробнее, как этим пользоваться? нет опыта написания скриптов и запросов, кроме как из аркмэп

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Как массово изменить псевдонимы полей?

Сообщение Ariki » 28 янв 2016, 19:31

:!: Действия это потенциально опасные, так как модифицируют служебную таблицу SDE. Лучше потренируйтесь сначала на какой-нибудь ненужной базе. Не знаю, какая у вас СУБД, нижеизложенное верно для MS SQL Server.

Запускаете SQL Server Management Studio, подключаетесь к базе данных, выбираете её в левой панели, жмёте кномку "Создать запрос" на панели инструментов вверху. Текст запроса у меня получился такой:

Код: Выделить всё


update dbo.GDB_ITEMS set Definition.modify('delete(/DETableInfo/GPFieldInfoExs/GPFieldInfoEx/AliasName)') where Type = 'cd06bc3b-789d-4c51-aafa-a467912b8965';

Здесь dbo.GDB_ITEMS - имя служебной таблицы, содержащей информацию об объектах ГБД в поле Definition в форме XML. Запрос удаляет элемент AliasName из определения всех полей всех таблиц. Значение поля Type = 'cd06bc3b-789d-4c51-aafa-a467912b8965' соответствует таблицам, для пространственных классов нужно подставить '70737809-852c-4a03-9e22-2cecea5b9bfa'. Но лучше уточните, просмотрев данные в таблице GDB_ITEMS с помощью той же SQL Server Management Studio. Вы можете ограничить изменение только некоторыми таблицами, добавив условие where по полю Name.

В целом же лучше туда не лезть без опыта. Я сам сейчас впервые попробовал, пока вроде ничего не сломалось, но кто его знает. Хорошо бы после удаления добавить обратно пустой элемент AliasName или, ещё лучше, поместить в него значение элемента Name, но но у меня сейчас нет времени разбираться, как это сделать, у меня нет особого опыта ни в SQL Server, ни в XQuery. По ссылке выше человек модифицирует псевдоним класса пространственных объектов, можно использовать как пример.

Но если вариант с экспортом всей базы в XML вам подходит, вы можете сделать то же самое в текстовом редакторе, например, в Notepad++ с помощью регулярных выражений. Есть и специализированные редакторы XML, в них точно так же можно массово изменять данные, не обязательно править всё вручную.

amnesiac
Активный участник
Сообщения: 244
Зарегистрирован: 03 мар 2015, 10:01
Репутация: 24
Откуда: Санкт-Петербург

Re: Как массово изменить псевдонимы полей?

Сообщение amnesiac » 29 янв 2016, 09:40

Спасибо большое! Очень полезная информация, с файловой GDB разобралась, с SDE тоже попробую, потом наверняка пригодится.

Ответить

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость