Нумерация объектов по значению семантики
-
- Участник
- Сообщения: 72
- Зарегистрирован: 03 ноя 2017, 11:33
- Репутация: 5
- Откуда: Москва
Нумерация объектов по значению семантики
Добрый вечер коллеги! Примитивная задача, никак ответ на ум не приходит. Вообщем есть колонка в таблице, значения в которой имеют повторения. Как автоматически заполнить другую колонку цифрами по уникальности объектов?
Пример: все значения "Т" получат цифру 1, все значения "Ж" цифру 2 и тд...
Объединение по атрибутам с дальнейшей нумерацией не подходит, тк в таблице есть другие важные колонки с необходимой информацией.
UPDATE Вообщем решение такое:
Устанавливаем модуль Group States, который считает статистику по заданным полям. После чего эту статистику можно сохранить в csv. Потом обновляю ее row_number и по сцепке с исходным слоем добавляю нумерацию для уникальных объектов.
Пример: все значения "Т" получат цифру 1, все значения "Ж" цифру 2 и тд...
Объединение по атрибутам с дальнейшей нумерацией не подходит, тк в таблице есть другие важные колонки с необходимой информацией.
UPDATE Вообщем решение такое:
Устанавливаем модуль Group States, который считает статистику по заданным полям. После чего эту статистику можно сохранить в csv. Потом обновляю ее row_number и по сцепке с исходным слоем добавляю нумерацию для уникальных объектов.
Последний раз редактировалось Dezmond 23 апр 2019, 14:04, всего редактировалось 1 раз.
-
- Участник
- Сообщения: 67
- Зарегистрирован: 13 мар 2018, 08:59
- Репутация: 22
- Откуда: MO
Re: Нумерация объектов по значению семантики
- Если нужны просто цифры
- Если буква одна
Может этого достаточно:
Простую пользовательскую функцию в калькулятор подсунуть
- Если буква одна
Может этого достаточно:
Простую пользовательскую функцию в калькулятор подсунуть
Код: Выделить всё
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def ord0(value1, feature, parent):
""" Add some text here for documenting the function """
return ord(value1[0])
-
- Участник
- Сообщения: 72
- Зарегистрирован: 03 ноя 2017, 11:33
- Репутация: 5
- Откуда: Москва
Re: Нумерация объектов по значению семантики
1. да нужны просто цифры.
2. Буква не одна, в полной задаче, это сцепка из нескольких полей.
2. Буква не одна, в полной задаче, это сцепка из нескольких полей.
-
- Участник
- Сообщения: 67
- Зарегистрирован: 13 мар 2018, 08:59
- Репутация: 22
- Откуда: MO
Re: Нумерация объектов по значению семантики
Если комбинации предопределены заранее, можно словарик сделать и из него брать ID по ключуDezmond писал(а): ↑23 апр 2019, 10:08Буква не одна, в полной задаче, это сцепка из нескольких полей.
-
- Участник
- Сообщения: 67
- Зарегистрирован: 13 мар 2018, 08:59
- Репутация: 22
- Откуда: MO
Re: Нумерация объектов по значению семантики
Код: Выделить всё
# -*- coding: utf-8 -*-
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def idd(value1, feature, parent):
""" Add some text here for documenting the function """
dct = {u'А':1,u'Бб':2,u'Ввв':3,u'ГД':4}
return dct.get(value1)
-
- Участник
- Сообщения: 72
- Зарегистрирован: 03 ноя 2017, 11:33
- Репутация: 5
- Откуда: Москва
Re: Нумерация объектов по значению семантики
сейчас мой код выглядит так
Обобщающая примерно так
но все равно в ней нет автоматизации....
Извините за глупый вопрос, Ваш код подходит для калькулятора полей? немного не пойму
Код: Выделить всё
case
when "код"='Т' then '1'
when "код"='Ж' then '2'
when "код"='МФ' then '3'
end
Код: Выделить всё
case
when "код" = 'first group name' then '1'
when "код" = 'second group name' then '2'
when "код" = 'third group name' then '3'
end
Извините за глупый вопрос, Ваш код подходит для калькулятора полей? немного не пойму
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Нумерация объектов по значению семантики
потому что надо использовать реляционые БД и SQLно все равно в ней нет автоматизации....
-
- Участник
- Сообщения: 72
- Зарегистрирован: 03 ноя 2017, 11:33
- Репутация: 5
- Откуда: Москва
Re: Нумерация объектов по значению семантики
сейчас все в postgres, но работаю я в qgis, тк это удобнее
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Нумерация объектов по значению семантики
так просто сделай представление - и внём подставь значениясейчас все в postgres
-
- Участник
- Сообщения: 67
- Зарегистрирован: 13 мар 2018, 08:59
- Репутация: 22
- Откуда: MO
Re: Нумерация объектов по значению семантики
В Калькуляторе есть редактор функций, делаете свою, загружаете, потом используете в выраженииDmitry Stasev писал(а): ↑22 апр 2019, 21:19пользовательскую функцию в калькулятор подсунуть
-
- Участник
- Сообщения: 72
- Зарегистрирован: 03 ноя 2017, 11:33
- Репутация: 5
- Откуда: Москва
Re: Нумерация объектов по значению семантики
в шапке обновил, свое решение задачи. Для калькулятора полей, нужно все значения туда подсунуть, а их не мало.
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Нумерация объектов по значению семантики
так это можно сразу в БД делать без лишних движений
-
- Участник
- Сообщения: 72
- Зарегистрирован: 03 ноя 2017, 11:33
- Репутация: 5
- Откуда: Москва
-
- Участник
- Сообщения: 67
- Зарегистрирован: 13 мар 2018, 08:59
- Репутация: 22
- Откуда: MO
Re: Нумерация объектов по значению семантики
Поддерживаю.trir писал(а): ↑23 апр 2019, 14:11так это можно сразу в БД делать без лишних движений
Или хотя бы виртуальный слой:
Код: Выделить всё
with cte as (
select a.rowid as myId, a.myName from myTable a group by a.myName
)
select b.*, cte.myId
from myTable b
join cte on cte.myName = b.myName
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей