Калькулятор полей - Разделитель

Вопросы общего характера по ГИС и дистанционному зондированию, не связанные с конкретным ПО.
Ответить
oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

Калькулятор полей - Разделитель

Сообщение oleg » 24 мар 2013, 14:21

Вопрос по калькулятору полей в ArcGIS\QGIS\gvSIG.

Есть текстовое поле вида "текст текст1\текст2\текст текст3\текст4" - текст с пробелами через слеш. Нужно скопировать части текста разделенные слешем в новые пустые поля вида "Field1-4".

Подскажите, пожалуйста, как правильно составить запрос(ы) в этом случае?

HasT
Активный участник
Сообщения: 142
Зарегистрирован: 16 окт 2009, 22:08
Репутация: 55
Откуда: Харьков

Re: Калькулятор полей - Разделитель

Сообщение HasT » 24 мар 2013, 15:28

В QGIS есть функция substr(string,startpos,length) (string → is string. The full string.; startpos → is number. The start position to extract from.; length → is number. The length of the string to extract.). Данная функция подойдет, если длина "текста" перед/после знаками "/" для каждого объекта в слое одинакова. Если не одинакова, то сохранить таблицу атрибутов в текстовый файл, открыть текстовый файл в Excel c разделителем "/", сохранить получившиюся таблицу в dbf и сделать Join данной таблицы к слою.

oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

Re: Калькулятор полей - Разделитель

Сообщение oleg » 24 мар 2013, 15:34

HasT писал(а):Если не одинакова, то сохранить таблицу атрибутов в текстовый файл, открыть текстовый файл в Excel c разделителем "/", сохранить получившиюся таблицу в dbf и сделать Join данной таблицы к слою.
HasT, спасибо! Так обычно и делаю (через LibreOffice сsv), но тк задача частая в поиске решение для калькулятора полей.
Последний раз редактировалось oleg 24 мар 2013, 15:34, всего редактировалось 1 раз.

Petruxin
Гуру
Сообщения: 1695
Зарегистрирован: 14 июн 2011, 16:47
Репутация: 133
Ваше звание: Завсегдатай
Откуда: Череповец

Re: Калькулятор полей - Разделитель

Сообщение Petruxin » 24 мар 2013, 15:34

оффтоп
HasT. У меня сложилось мнение, что тема Калькулятор полей Вам хорошо знакома. Может порредактируйте Черновик статьи. Очень полезная статья может выйти, только доработать бы?

HasT
Активный участник
Сообщения: 142
Зарегистрирован: 16 окт 2009, 22:08
Репутация: 55
Откуда: Харьков

Re: Калькулятор полей - Разделитель

Сообщение HasT » 24 мар 2013, 19:23

Petruxin писал(а):оффтоп
HasT. У меня сложилось мнение, что тема Калькулятор полей Вам хорошо знакома. Может порредактируйте Черновик статьи. Очень полезная статья может выйти, только доработать бы?
ок. Возьмусь за работу

doujin
Активный участник
Сообщения: 163
Зарегистрирован: 28 июн 2012, 01:02
Репутация: 84
Откуда: Vladivostok

Re: Калькулятор полей - Разделитель

Сообщение doujin » 25 мар 2013, 01:17

Для ArcGIS 10.x решение следующее: вызываем калькулятор для каждого из полей. Интерпретатор - python.
Field1:

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

!Исходное текстовое поле!.split(u"\\")[0]
Field2:

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

!Исходное текстовое поле!.split(u"\\")[1]
Field3:

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

!Исходное текстовое поле!.split(u"\\")[2]
Field4:

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

!Исходное текстовое поле!.split(u"\\")[3]
Можно сократить ручной труд, если составить отдельный скрипт примерно такого содержания:

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

#-*- coding: utf-8 -*-
import arcpy
arcpy.env.workspace = u"" #Путь к базе, где находится класс объектов
in_table = u"" #Имя класса, в котором считаем поля
fields_list = [u"Field1", u"Field2", u"field3", u"Field4"] #Список имен вычисляемых полей
for i, field in enumerate(fields_list):
  expression = u"!Исходное текстовое поле!.split(u'\\')[{0}]".format(i)
  arcpy.CalculateField_management(in_table, field, expression, u"PYTHON_9.3")
P.S. Его не нужно вставлять в калькулятор, а можно запускать даже не открывая ArcGIS.

oleg
Завсегдатай
Сообщения: 460
Зарегистрирован: 03 фев 2005, 11:46
Репутация: 15
Контактная информация:

Re: Калькулятор полей - Разделитель

Сообщение oleg » 27 мар 2013, 10:01

Работает. doujin, спасибо!

Ответить

Вернуться в «Общие вопросы»

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

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