Отображение полигонального слоя как линейного

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Dezmond
Участник
Сообщения: 60
Зарегистрирован: 03 ноя 2017, 11:33
Репутация: 4
Откуда: Москва

Отображение полигонального слоя как линейного

Сообщение Dezmond » 16 июн 2020, 13:45

Коллеги, добрый день! Есть такая нетривиальная задача, как отображение полигонального слоя как линеный.
Про конвертацию, это все понятно.... НО это не подходит, тк атлас должен формироваться всегда по актуальным данным: и каждый раз переводить слой в линию не удобно. Собственно в каком месте возникает проблема:
Методом подбора: был найден знак Изображение который отобразит полигон(границу НП) в условных обозначениях как линию, но используя галку show items inside current atlas feature объекты которые попадают полностью внутрь границ НП, в условии когда граница не видна на самом атласе. Граница отображается в условных обозначениях, тк она полигональная! и атлас считает что она отображена на карте.
Вообщем возвращаясь к истокам, как сделать отображение(отрисовку) слоя как линейный. Может кто предложит свой подход..
надеюсь понятно описал ситуацию....
ПС Спасибо если отзаветесь!

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2018
Зарегистрирован: 04 янв 2011, 22:00
Статьи: 12
Проекты: 1
Репутация: 1297
Откуда: Казань

Re: Отображение полигонального слоя как линейного

Сообщение Игорь Белов » 16 июн 2020, 15:35

Dezmond писал(а):
16 июн 2020, 13:45
надеюсь понятно описал ситуацию
Если честно, ничего не понял. Может, Вам вот это нужно?
Вложения
Screenshot_2020-06-16_15-28-42.png
Outline: Simple line
Screenshot_2020-06-16_15-28-42.png (26.79 КБ) 1186 просмотров
The purpose of computing is insight, not numbers

drrrrr
Участник
Сообщения: 54
Зарегистрирован: 31 янв 2012, 10:51
Репутация: 27

Re: Отображение полигонального слоя как линейного

Сообщение drrrrr » 16 июн 2020, 17:39

Насколько я понял, речь идет не только о линейной символике для площадного объекта, но и о фильтрации объектов слоя в условных обозначениях в макете атласа. Если задача действительно поставлена так, то сделайте для своего слоя границ населенных пунктов отрисовку по правилам, создайте правило с выражением фильтра

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

crosses(boundary($geometry ), @atlas_geometry )
и нужной вам линейной символикой и в этом случае в карте и в легенде граница будет отображаться только если она пересекается с текущей геометрией слоя покрытия атласа. Системы координат слоя покрытия и слоя границ должны совпадать, если не так - нужно их привести к одной.

Dezmond
Участник
Сообщения: 60
Зарегистрирован: 03 ноя 2017, 11:33
Репутация: 4
Откуда: Москва

Re: Отображение полигонального слоя как линейного

Сообщение Dezmond » 17 июн 2020, 11:03

drrrrr писал(а):
16 июн 2020, 17:39
crosses(boundary($geometry ), @atlas_geometry )
вы все правильно поняли, спасибо! о результате отпишусь!

Dezmond
Участник
Сообщения: 60
Зарегистрирован: 03 ноя 2017, 11:33
Репутация: 4
Откуда: Москва

Re: Отображение полигонального слоя как линейного

Сообщение Dezmond » 17 июн 2020, 15:47

На самом деле, Вы реально помогли мне хорошо продвинуться, есть еще вопросик.
Можно ли как-то отправить значение масштаба для текущего объекта атласа, из функций вижу только

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

@map_scale
, но я так понимаю, что это масштаб самой карты.
ПС. Идея такая: пересекать границу НП с рамкой атласа, и из этого понимать нужно ли ее отображать или нет.

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

 bounds(  buffer(  centroid(  @atlas_geometry ),0.1* @map_scale ,10))

drrrrr
Участник
Сообщения: 54
Зарегистрирован: 31 янв 2012, 10:51
Репутация: 27

Re: Отображение полигонального слоя как линейного

Сообщение drrrrr » 17 июн 2020, 17:21

Dezmond писал(а):
17 июн 2020, 15:47
пересекать границу НП с рамкой атласа
Вот тут совсем я не понимаю о чем речь. Правило с вышеприведенным выражением фильтра уже управляет отображением границы по критерию пересечения с геометрией текущего объекта атласа и никаких дополнительных механизмов не требует.

Dezmond
Участник
Сообщения: 60
Зарегистрирован: 03 ноя 2017, 11:33
Репутация: 4
Откуда: Москва

Re: Отображение полигонального слоя как линейного

Сообщение Dezmond » 17 июн 2020, 18:31

В этом случае пересечения нет, но граница в условных обозначениях нужна Изображение
Поэтому и стал думать в сторону построения рамки от центроида объекта.
Но по ощущениям это тупиковый путь.... Думаю проще написать функцию на стороне БД, что бы она конвертировала полигональный слой в линейный, это должно все упростить

drrrrr
Участник
Сообщения: 54
Зарегистрирован: 31 янв 2012, 10:51
Репутация: 27

Re: Отображение полигонального слоя как линейного

Сообщение drrrrr » 18 июн 2020, 12:49

в этом случае попробуйте такое выражение для фильтра:

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

crosses( boundary(  $geometry ),   @map_extent )

Dezmond
Участник
Сообщения: 60
Зарегистрирован: 03 ноя 2017, 11:33
Репутация: 4
Откуда: Москва

Re: Отображение полигонального слоя как линейного

Сообщение Dezmond » 21 июн 2020, 23:27

Какое то время не заходил на форум, спасибо за помощь! В итоге пошел самым простым путем и сделал слои линейными!

Ivor
Интересующийся
Сообщения: 41
Зарегистрирован: 11 дек 2006, 09:46
Репутация: 8
Откуда: Владивосток

Re: Отображение полигонального слоя как линейного

Сообщение Ivor » 14 сен 2020, 01:29

Пропустил тему. Просто ещё в копилку вариантов:
создать виртуальный слой, и в его запросе прописать

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

select st_boundary(geometry) as geom, * from "Имя исходного слоя";
Плюс в том, что не надо плодить лишние таблицы в базе данных, минус - существует только внутри проекта QGis

trir
Гуру
Сообщения: 4661
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 877
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Отображение полигонального слоя как линейного

Сообщение trir » 14 сен 2020, 05:51

минус - существует только внутри проекта QGis
можно сделать представление в БД

Ivor
Интересующийся
Сообщения: 41
Зарегистрирован: 11 дек 2006, 09:46
Репутация: 8
Откуда: Владивосток

Re: Отображение полигонального слоя как линейного

Сообщение Ivor » 14 сен 2020, 07:01

Да, можно. Но способ с виртуальным слоем работает для любых источников, а не только для БД (шейпы, cvs и прочее)

Ответить

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

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

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