Калькулятор полей
-
- Активный участник
- Сообщения: 101
- Зарегистрирован: 16 июл 2011, 09:15
- Репутация: 6
Калькулятор полей
Доброго дня.
Есть точечный шейп у которого в атрибутах адресные данные стоят как:
12Мира
234аСоветская
и т.д.
Требуется разнести в калькуляторе полей номер(с буквой если есть) отдельно, а название улицы отдельно.
Помогите составить выражение.
p/s QGIS 2.10.1
Есть точечный шейп у которого в атрибутах адресные данные стоят как:
12Мира
234аСоветская
и т.д.
Требуется разнести в калькуляторе полей номер(с буквой если есть) отдельно, а название улицы отдельно.
Помогите составить выражение.
p/s QGIS 2.10.1
Последний раз редактировалось KartaBY 07 янв 2016, 08:20, всего редактировалось 1 раз.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Калькулятор полей
Код: Выделить всё
regexp_substr( "address" , '(^\\d+[а-я]*)')
regexp_substr( "address" , '([А-Я][а-я,\\s]*)')
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Активный участник
- Сообщения: 101
- Зарегистрирован: 16 июл 2011, 09:15
- Репутация: 6
Re: Калькулятор полей
Ух. Круто. Работает. Но немного не так.
( "address" , '(^\\d+[а-я]*)')
"address" - обрабатываемый столбец
(^\\d+[а-я]*) и ([А-Я][а-я,\\s]*) - китайская грамота
Расшифруйте пожалуйста что есть что в "китайской грамоте". Попробую сам доработать код до требуемого функционала.
И если не тяжело, дайте ссылку где можно почитать про "китайскую грамоту".
Спасибо.
( "address" , '(^\\d+[а-я]*)')
"address" - обрабатываемый столбец
(^\\d+[а-я]*) и ([А-Я][а-я,\\s]*) - китайская грамота
Расшифруйте пожалуйста что есть что в "китайской грамоте". Попробую сам доработать код до требуемого функционала.
И если не тяжело, дайте ссылку где можно почитать про "китайскую грамоту".
Спасибо.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Калькулятор полей
Это называется "регулярные выражения". А что именно работает не так? Приведённые вами примеры должны правильно разбираться.
[ Сообщение с мобильного устройства ]
[ Сообщение с мобильного устройства ]
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Активный участник
- Сообщения: 101
- Зарегистрирован: 16 июл 2011, 09:15
- Репутация: 6
Re: Калькулятор полей
regexp_substr( "address" , '(^\\d+[а-я]*)')
Переносит только цифровую часть. Но здесь возможно вопрос в том что корпуса домов написаны латиницей a,b,c.
Поэтому в варианте 23а3 переносит только 23.
Возможно надо фильтровать до первой буквы в верхнем регистре т.к. все улицы начинаются с большой буквы.
regexp_substr( "address" , '([А-Я][а-я,\\s]*)')
Создает пустой столбец без значений.
"Регулярные выражения"
\\d - Это что делает?
\\s - это что делает?
[а-я,\\s] - это что делат?
Нигде не нашел что это значит.
Переносит только цифровую часть. Но здесь возможно вопрос в том что корпуса домов написаны латиницей a,b,c.
Поэтому в варианте 23а3 переносит только 23.
Возможно надо фильтровать до первой буквы в верхнем регистре т.к. все улицы начинаются с большой буквы.
regexp_substr( "address" , '([А-Я][а-я,\\s]*)')
Создает пустой столбец без значений.
"Регулярные выражения"
\\d - Это что делает?
\\s - это что делает?
[а-я,\\s] - это что делат?
Нигде не нашел что это значит.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Калькулятор полей
Например, так:KartaBY писал(а):Возможно надо фильтровать до первой буквы в верхнем регистре т.к. все улицы начинаются с большой буквы.
Код: Выделить всё
regexp_substr( "address" , '(^[0-9,а-я,a-z]*)[А-Я]+')
Пример адреса приведите.KartaBY писал(а):regexp_substr( "address" , '([А-Я][а-я,\\s]*)')
Создает пустой столбец без значений.
\\d - цифра
\\s - пробел
\\[а-я,\\s]* - символы из указанного набора могут повторяться 0 и более раз
А где вы искали, если не секрет, в той же Википедии всё подробно расписано.KartaBY писал(а):Нигде не нашел что это значит.
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Активный участник
- Сообщения: 101
- Зарегистрирован: 16 июл 2011, 09:15
- Репутация: 6
Re: Калькулятор полей
regexp_substr( "address" , '(^[0-9,а-я,a-z]*)[А-Я]+')
Работает как положено!
regexp_substr( "address" , '([А-Я][а-я,\\s]*)')
Тоже работает. Это я был не внимательным. Создавал новое поле как "число". Когда поставил как "текст" то все заработало.
Огромное спасибо за помощь.
з.ы. Буду осваивать регулярные выражения. Про Википедию вы правы. там не искал.
Работает как положено!
regexp_substr( "address" , '([А-Я][а-я,\\s]*)')
Тоже работает. Это я был не внимательным. Создавал новое поле как "число". Когда поставил как "текст" то все заработало.
Огромное спасибо за помощь.
з.ы. Буду осваивать регулярные выражения. Про Википедию вы правы. там не искал.
-
- Активный участник
- Сообщения: 101
- Зарегистрирован: 16 июл 2011, 09:15
- Репутация: 6
Re: Калькулятор полей
з.ы.2 Вот в таком виде у меня охватывает все возможные случаи написания номера и наименования
regexp_substr( "LABEL" , '(^[0-9,а-я,a-z,_,\\s]*)[А-Я]+')
regexp_substr( "LABEL" , '([\\s,А-Я][А-Я,\\s,-]*)')
regexp_substr( "LABEL" , '(^[0-9,а-я,a-z,_,\\s]*)[А-Я]+')
regexp_substr( "LABEL" , '([\\s,А-Я][А-Я,\\s,-]*)')
- Svility
- Участник
- Сообщения: 55
- Зарегистрирован: 24 окт 2017, 19:41
- Репутация: 5
- Откуда: 32637
Re: Калькулятор полей
Как из такой записи:
Все записи сформированы по шаблону: “name”; “km” ‘ км’; “num”
вытащить значение 68 ?Название; 0.68 км; 68
Все записи сформированы по шаблону: “name”; “km” ‘ км’; “num”
-
- Гуру
- Сообщения: 5298
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Калькулятор полей
для этого есть именованные группы
- Svility
- Участник
- Сообщения: 55
- Зарегистрирован: 24 окт 2017, 19:41
- Репутация: 5
- Откуда: 32637
Re: Калькулятор полей
Чувствую быстро не разобраться(
А нельзя как то описать это так: отобрать значение любых символов начиная с конца поля, до первого пробела или знака ;
А нельзя как то описать это так: отобрать значение любых символов начиная с конца поля, до первого пробела или знака ;
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Калькулятор полей
Код: Выделить всё
\\d+$
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
- Svility
- Участник
- Сообщения: 55
- Зарегистрирован: 24 окт 2017, 19:41
- Репутация: 5
- Откуда: 32637
Re: Калькулятор полей
Почти) есть номера вида 68.1 или 68.1.1 или 68л или 68_1
Хотелось бы отобрать все что находится между ; и концом
Хотелось бы отобрать все что находится между ; и концом
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Калькулятор полей
Код: Выделить всё
^.+;.+;\\s*([^\\s]+)$'
-
- Гуру
- Сообщения: 5298
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Калькулятор полей
Код: Выделить всё
(?<name>[^;]+);(?<km>[^;]+)км;(?<num>.+)
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость