Страница 2 из 2

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

Добавлено: 06 мар 2025, 19:21
Yevgeniy Podol'skiy
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 не может быть загружен"
Можете подсказать почему?

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

Добавлено: 06 мар 2025, 19:32
Yevgeniy Podol'skiy
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 не может быть загружен"
Можете подсказать почему?
Уже разобрался: подставил в формулу вместо Ваших значений свои и все работает.

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

Добавлено: 06 мар 2025, 19:57
Yevgeniy Podol'skiy
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.
Как-то можно это в функции зафиксировать?

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

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

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

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

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

Добавлено: 07 мар 2025, 09:04
AlexRomantsov
Можно модифицировать выражение таким образом: преобразовывать значение из поля номеров опор в численное, 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))
)
, ',' ,' - ')

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

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

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

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

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

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

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

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

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

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

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

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

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