Автоматическая нумерация

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Аватара пользователя
Yevgeniy Podol'skiy
Интересующийся
Сообщения: 17
Зарегистрирован: 31 июл 2022, 10:14
Репутация: 0
Откуда: none

Re: Автоматическая нумерация

Сообщение Yevgeniy Podol'skiy » 06 мар 2025, 19:21

AlexRomantsov писал(а):
03 мар 2025, 07:03
Вот так более полно, сортируем номера пересеченных точек, преобразуем в текстовый вид, заменяем запятую на пробел-тире-пробел, получим '3 - 4'
replace(
array_to_string(
array_sort( overlay_nearest( 'point_514e17a9_a63f_4a4e_b471_e8632744061a', expression:= "num_o", limit:= -1, max_distance:= 0.0005))
)
, ',' ,' - ')
Что то тут функция не срабатывает в калькуляторе полей, выдает ошибку "point_514e17a9_a63f_4a4e_b471_e8632744061a не может быть загружен"
Можете подсказать почему?

Аватара пользователя
Yevgeniy Podol'skiy
Интересующийся
Сообщения: 17
Зарегистрирован: 31 июл 2022, 10:14
Репутация: 0
Откуда: none

Re: Автоматическая нумерация

Сообщение Yevgeniy Podol'skiy » 06 мар 2025, 19:32

Yevgeniy Podol'skiy писал(а):
06 мар 2025, 19:21
AlexRomantsov писал(а):
03 мар 2025, 07:03
Вот так более полно, сортируем номера пересеченных точек, преобразуем в текстовый вид, заменяем запятую на пробел-тире-пробел, получим '3 - 4'
replace(
array_to_string(
array_sort( overlay_nearest( 'point_514e17a9_a63f_4a4e_b471_e8632744061a', expression:= "num_o", limit:= -1, max_distance:= 0.0005))
)
, ',' ,' - ')
Что то тут функция не срабатывает в калькуляторе полей, выдает ошибку "point_514e17a9_a63f_4a4e_b471_e8632744061a не может быть загружен"
Можете подсказать почему?
Уже разобрался: подставил в формулу вместо Ваших значений свои и все работает.

Аватара пользователя
Yevgeniy Podol'skiy
Интересующийся
Сообщения: 17
Зарегистрирован: 31 июл 2022, 10:14
Репутация: 0
Откуда: none

Re: Автоматическая нумерация

Сообщение Yevgeniy Podol'skiy » 06 мар 2025, 19:57

AlexRomantsov писал(а):
03 мар 2025, 07:03
Вот так более полно, сортируем номера пересеченных точек, преобразуем в текстовый вид, заменяем запятую на пробел-тире-пробел, получим '3 - 4'
replace(
array_to_string(
array_sort( overlay_nearest( 'point_514e17a9_a63f_4a4e_b471_e8632744061a', expression:= "num_o", limit:= -1, max_distance:= 0.0005))
)
, ',' ,' - ')
Еще один нюанс. Бывает такое, что у меня идут подряд точки, например, 6, 12, 13, то в слое с линиями они нумеруются как 12-6, 12-13, а мне нужно 6-12.
Как-то можно это в функции зафиксировать?

AlexRomantsov
Завсегдатай
Сообщения: 420
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 162
Ваше звание: хм, сам не знал
Откуда: Томск

Re: Автоматическая нумерация

Сообщение AlexRomantsov » 07 мар 2025, 05:38

Yevgeniy Podol'skiy писал(а):
06 мар 2025, 18:59
Попробовал это способ (стандартными средствами QGIS) и могу сказать, что он достаточно хороший, но он создает дополнительные слои, а мне нужно в одном существующем слое автоматически проставить отрезки линий на основе номеров опор.
Вы хотите для "пустого" слоя линий собрать номера опор, через калькулятор полей. Так не получится.
Сначала создаете объекты в слое линий (отрезки линий), для этого удобна Точки в контур. Конечно, без ручной работы, просмотра на карте, лечения ошибок не обойтись. Можно сделать для всех точек (не для выделенных), при этом настроить Выражение группирования (указать атрибут, например название ЛЭП, по которому создадутся отдельные объекты-линии).
Множество слоев-черновиков, ну да, выделить, скопировать, вставить в нужный, час на все.
А потом - да, можно юзать калькуляторы полей и прочие инструменты.

Что касается сортировки. Если поле с номерами опор - числовое, то получится "6 - 10'. Если символьное - увы, сначала 10, потом 6 (алфавитная сортировка). Возможно переделать поле с номерами как числовое?
Как вариант, таблица с результатом доступна для просмотра, найти глазами такие случаи как 12-6, поправить руками.

А лучше, если Вы поделитесь с сообществом куском вашего слой точек (экспортируйте часть, сверните в архив, прикрепите к сообщению),

AlexRomantsov
Завсегдатай
Сообщения: 420
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 162
Ваше звание: хм, сам не знал
Откуда: Томск

Re: Автоматическая нумерация

Сообщение AlexRomantsov » 07 мар 2025, 09:04

Можно модифицировать выражение таким образом: преобразовывать значение из поля номеров опор в численное, expression:= to_int( "num_o"). Но, если встретится не число, тогда будет пусто в итоговой строке, например '6 - '
replace(
array_to_string(
array_sort( overlay_nearest( 'point_514e17a9_a63f_4a4e_b471_e8632744061a', expression:= to_int( "num_o"), limit:= -1, max_distance:= 0.0005))
)
, ',' ,' - ')

Кирилл R.
Участник
Сообщения: 62
Зарегистрирован: 30 апр 2012, 21:48
Репутация: 26
Откуда: Астрахань

Re: Автоматическая нумерация

Сообщение Кирилл R. » 07 мар 2025, 17:42

Jensenaems писал(а):
13 апр 2016, 10:30
Здравствуйте, прошу помощи со следующей проблемой. У меня имеются несколько тысяч объектов и я пронумеровал их всех по порядку с использованием команды $rownum в поле. Но мне нужно добавить к ним ещё объекты и нужно чтобы нумерация продолжалась от последнего номера объекта. То есть если последний был 100 объект, то следующий добавленный 101, и т.д.Есть ли возможность чтобы qgis автоматически сам проставлял нумерацию всех этих объектов? И можно ли сделать чтобы он просто с 0 начал сам нумировал каждый объект?
Можно такое сделать.
В свойствах вашего слоя необходимо настроить форму для поля, в котором хранится нумерация по порядку.
Без имени.png
Без имени.png (181.58 КБ) 2472 просмотра
В настройке "Значение по умолчанию" пишете выражение :

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

array_max(  array_agg(  "number"  )  ) +1
Мой тестовый слой из 10К объектов работает. Но не исключаю, что у вас может быть некая специфика, которая не позволит применить этот трюк.

Кстати, QGIS предупреждает, что этот трюк сработает только при наличии галочки "Значение по умолчанию при изменении", но её ставить нельзя. Все работает и так. Иначе при любом редактировании объекта этот номер снова пересчитается.

Аватара пользователя
Yevgeniy Podol'skiy
Интересующийся
Сообщения: 17
Зарегистрирован: 31 июл 2022, 10:14
Репутация: 0
Откуда: none

Re: Автоматическая нумерация

Сообщение Yevgeniy Podol'skiy » 07 мар 2025, 19:31

AlexRomantsov писал(а):
07 мар 2025, 05:38
Yevgeniy Podol'skiy писал(а):
06 мар 2025, 18:59
Попробовал это способ (стандартными средствами QGIS) и могу сказать, что он достаточно хороший, но он создает дополнительные слои, а мне нужно в одном существующем слое автоматически проставить отрезки линий на основе номеров опор.
Вы хотите для "пустого" слоя линий собрать номера опор, через калькулятор полей. Так не получится.
Сначала создаете объекты в слое линий (отрезки линий), для этого удобна Точки в контур. Конечно, без ручной работы, просмотра на карте, лечения ошибок не обойтись. Можно сделать для всех точек (не для выделенных), при этом настроить Выражение группирования (указать атрибут, например название ЛЭП, по которому создадутся отдельные объекты-линии).
Множество слоев-черновиков, ну да, выделить, скопировать, вставить в нужный, час на все.
А потом - да, можно юзать калькуляторы полей и прочие инструменты.

Что касается сортировки. Если поле с номерами опор - числовое, то получится "6 - 10'. Если символьное - увы, сначала 10, потом 6 (алфавитная сортировка). Возможно переделать поле с номерами как числовое?
Как вариант, таблица с результатом доступна для просмотра, найти глазами такие случаи как 12-6, поправить руками.

А лучше, если Вы поделитесь с сообществом куском вашего слой точек (экспортируйте часть, сверните в архив, прикрепите к сообщению),
Добрый вечер, 2 слоя с точками и линиями свернул в архив 7-zip и направляю Вам.
Вложения
автонумерация.7z
(7.91 КБ) 138 скачиваний

AlexRomantsov
Завсегдатай
Сообщения: 420
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 162
Ваше звание: хм, сам не знал
Откуда: Томск

Re: Автоматическая нумерация

Сообщение AlexRomantsov » 11 мар 2025, 05:22

Yevgeniy Podol'skiy писал(а):
07 мар 2025, 19:31
Добрый вечер, 2 слоя с точками и линиями свернул в архив 7-zip и направляю Вам.
Если все точки как в примере, грусть, чудес не бывает. Плохо классифицированы, принадлежность точек линиям из атрибутов не понятна. "code_sap" - если бы что то такое было бы во всех точках, намного проще.
Моя стратегия в таких случаях: не тратить пару недель на разработку волшебной программной кнопки, которая все сделает (а на финише - сюрприз), быстрее и дешевле навалиться руками на создание связанных, классифицированных данных в ГИС.
При этом, вторичную "оформительскую" задачу - линии со стрелками, подписанные как '3 - 4' - отодвинуть.
А сначала:
1. максимально возможно классифицировать точки (в атрибутах). В т.ч. выделением на карте и Правка - Редактировать атрибуты - Изменить для выбранных.
2. По классификациям и выделениям - Точки в контур, с группированием по атрибуту. Просматривать и лечить руками. В таких слоях Line - полилинии на множество точек, также классифицируем. Объединяем в общий слой.
То есть, создаем нормальную "реестровую" базу данных.
А потом, при необходимости, можно всегда создать "вторичный" слой, в т.ч. виртуальный (расчетный, динамически обновляемый из первоисточников), в котором сегменты линий от точки до точки.

Аватара пользователя
Yevgeniy Podol'skiy
Интересующийся
Сообщения: 17
Зарегистрирован: 31 июл 2022, 10:14
Репутация: 0
Откуда: none

Re: Автоматическая нумерация

Сообщение Yevgeniy Podol'skiy » 11 мар 2025, 09:14

AlexRomantsov писал(а):
11 мар 2025, 05:22
Yevgeniy Podol'skiy писал(а):
07 мар 2025, 19:31
Добрый вечер, 2 слоя с точками и линиями свернул в архив 7-zip и направляю Вам.
Если все точки как в примере, грусть, чудес не бывает. Плохо классифицированы, принадлежность точек линиям из атрибутов не понятна. "code_sap" - если бы что то такое было бы во всех точках, намного проще.
Моя стратегия в таких случаях: не тратить пару недель на разработку волшебной программной кнопки, которая все сделает (а на финише - сюрприз), быстрее и дешевле навалиться руками на создание связанных, классифицированных данных в ГИС.
При этом, вторичную "оформительскую" задачу - линии со стрелками, подписанные как '3 - 4' - отодвинуть.
А сначала:
1. максимально возможно классифицировать точки (в атрибутах). В т.ч. выделением на карте и Правка - Редактировать атрибуты - Изменить для выбранных.
2. По классификациям и выделениям - Точки в контур, с группированием по атрибуту. Просматривать и лечить руками. В таких слоях Line - полилинии на множество точек, также классифицируем. Объединяем в общий слой.
То есть, создаем нормальную "реестровую" базу данных.
А потом, при необходимости, можно всегда создать "вторичный" слой, в т.ч. виртуальный (расчетный, динамически обновляемый из первоисточников), в котором сегменты линий от точки до точки.
Добрый день. Благодарю за помощь.

Ответить

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

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

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