Калькулятор полей - Разделитель
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Калькулятор полей - Разделитель
Вопрос по калькулятору полей в ArcGIS\QGIS\gvSIG.
Есть текстовое поле вида "текст текст1\текст2\текст текст3\текст4" - текст с пробелами через слеш. Нужно скопировать части текста разделенные слешем в новые пустые поля вида "Field1-4".
Подскажите, пожалуйста, как правильно составить запрос(ы) в этом случае?
Есть текстовое поле вида "текст текст1\текст2\текст текст3\текст4" - текст с пробелами через слеш. Нужно скопировать части текста разделенные слешем в новые пустые поля вида "Field1-4".
Подскажите, пожалуйста, как правильно составить запрос(ы) в этом случае?
-
- Активный участник
- Сообщения: 142
- Зарегистрирован: 16 окт 2009, 22:08
- Репутация: 55
- Откуда: Харьков
Re: Калькулятор полей - Разделитель
В 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 данной таблицы к слою.
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: Калькулятор полей - Разделитель
HasT, спасибо! Так обычно и делаю (через LibreOffice сsv), но тк задача частая в поиске решение для калькулятора полей.HasT писал(а):Если не одинакова, то сохранить таблицу атрибутов в текстовый файл, открыть текстовый файл в Excel c разделителем "/", сохранить получившиюся таблицу в dbf и сделать Join данной таблицы к слою.
Последний раз редактировалось oleg 24 мар 2013, 15:34, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 1695
- Зарегистрирован: 14 июн 2011, 16:47
- Репутация: 133
- Ваше звание: Завсегдатай
- Откуда: Череповец
Re: Калькулятор полей - Разделитель
оффтоп
HasT. У меня сложилось мнение, что тема Калькулятор полей Вам хорошо знакома. Может порредактируйте Черновик статьи. Очень полезная статья может выйти, только доработать бы?
HasT. У меня сложилось мнение, что тема Калькулятор полей Вам хорошо знакома. Может порредактируйте Черновик статьи. Очень полезная статья может выйти, только доработать бы?
-
- Активный участник
- Сообщения: 142
- Зарегистрирован: 16 окт 2009, 22:08
- Репутация: 55
- Откуда: Харьков
Re: Калькулятор полей - Разделитель
ок. Возьмусь за работуPetruxin писал(а):оффтоп
HasT. У меня сложилось мнение, что тема Калькулятор полей Вам хорошо знакома. Может порредактируйте Черновик статьи. Очень полезная статья может выйти, только доработать бы?
-
- Активный участник
- Сообщения: 163
- Зарегистрирован: 28 июн 2012, 01:02
- Репутация: 84
- Откуда: Vladivostok
Re: Калькулятор полей - Разделитель
Для ArcGIS 10.x решение следующее: вызываем калькулятор для каждого из полей. Интерпретатор - python.
Field1:
Field2:
Field3:
Field4:
Можно сократить ручной труд, если составить отдельный скрипт примерно такого содержания:
P.S. Его не нужно вставлять в калькулятор, а можно запускать даже не открывая ArcGIS.
Field1:
Код: Выделить всё
!Исходное текстовое поле!.split(u"\\")[0]
Код: Выделить всё
!Исходное текстовое поле!.split(u"\\")[1]
Код: Выделить всё
!Исходное текстовое поле!.split(u"\\")[2]
Код: Выделить всё
!Исходное текстовое поле!.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")
-
- Завсегдатай
- Сообщения: 460
- Зарегистрирован: 03 фев 2005, 11:46
- Репутация: 15
- Контактная информация:
Re: Калькулятор полей - Разделитель
Работает. doujin, спасибо!
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя