Страница 1 из 1
Отображение полигонального слоя как линейного
Добавлено: 16 июн 2020, 13:45
Dezmond
Коллеги, добрый день! Есть такая нетривиальная задача, как отображение полигонального слоя как линеный.
Про конвертацию, это все понятно.... НО это не подходит, тк атлас должен формироваться всегда по актуальным данным: и каждый раз переводить слой в линию не удобно. Собственно в каком месте возникает проблема:
Методом подбора: был найден знак

который отобразит полигон(границу НП) в условных обозначениях как линию, но используя галку show items inside current atlas feature объекты которые попадают полностью внутрь границ НП, в условии когда граница не видна на самом атласе. Граница отображается в условных обозначениях, тк она полигональная! и атлас считает что она отображена на карте.
Вообщем возвращаясь к истокам, как сделать отображение(отрисовку) слоя как линейный. Может кто предложит свой подход..
надеюсь понятно описал ситуацию....
ПС Спасибо если отзаветесь!
Re: Отображение полигонального слоя как линейного
Добавлено: 16 июн 2020, 15:35
Игорь Белов
Dezmond писал(а): ↑16 июн 2020, 13:45
надеюсь понятно описал ситуацию
Если честно, ничего не понял. Может, Вам вот это нужно?
Re: Отображение полигонального слоя как линейного
Добавлено: 16 июн 2020, 17:39
drrrrr
Насколько я понял, речь идет не только о линейной символике для площадного объекта, но и о фильтрации объектов слоя в условных обозначениях в макете атласа. Если задача действительно поставлена так, то сделайте для своего слоя границ населенных пунктов отрисовку по правилам, создайте правило с выражением фильтра
Код: Выделить всё
crosses(boundary($geometry ), @atlas_geometry )
и нужной вам линейной символикой и в этом случае в карте и в легенде граница будет отображаться только если она пересекается с текущей геометрией слоя покрытия атласа. Системы координат слоя покрытия и слоя границ должны совпадать, если не так - нужно их привести к одной.
Re: Отображение полигонального слоя как линейного
Добавлено: 17 июн 2020, 11:03
Dezmond
drrrrr писал(а): ↑16 июн 2020, 17:39
crosses(boundary($geometry ), @atlas_geometry )
вы все правильно поняли, спасибо! о результате отпишусь!
Re: Отображение полигонального слоя как линейного
Добавлено: 17 июн 2020, 15:47
Dezmond
На самом деле, Вы реально помогли мне хорошо продвинуться, есть еще вопросик.
Можно ли как-то отправить значение масштаба для текущего объекта атласа, из функций вижу только
, но я так понимаю, что это масштаб самой карты.
ПС. Идея такая: пересекать границу НП с рамкой атласа, и из этого понимать нужно ли ее отображать или нет.
Код: Выделить всё
bounds( buffer( centroid( @atlas_geometry ),0.1* @map_scale ,10))
Re: Отображение полигонального слоя как линейного
Добавлено: 17 июн 2020, 17:21
drrrrr
Dezmond писал(а): ↑17 июн 2020, 15:47
пересекать границу НП с рамкой атласа
Вот тут совсем я не понимаю о чем речь. Правило с вышеприведенным выражением фильтра уже управляет отображением границы по критерию пересечения с геометрией текущего объекта атласа и никаких дополнительных механизмов не требует.
Re: Отображение полигонального слоя как линейного
Добавлено: 17 июн 2020, 18:31
Dezmond
В этом случае пересечения нет, но граница в условных обозначениях нужна

Поэтому и стал думать в сторону построения рамки от центроида объекта.
Но по ощущениям это тупиковый путь.... Думаю проще написать функцию на стороне БД, что бы она конвертировала полигональный слой в линейный, это должно все упростить
Re: Отображение полигонального слоя как линейного
Добавлено: 18 июн 2020, 12:49
drrrrr
в этом случае попробуйте такое выражение для фильтра:
Код: Выделить всё
crosses( boundary( $geometry ), @map_extent )
Re: Отображение полигонального слоя как линейного
Добавлено: 21 июн 2020, 23:27
Dezmond
Какое то время не заходил на форум, спасибо за помощь! В итоге пошел самым простым путем и сделал слои линейными!
Re: Отображение полигонального слоя как линейного
Добавлено: 14 сен 2020, 01:29
Ivor
Пропустил тему. Просто ещё в копилку вариантов:
создать виртуальный слой, и в его запросе прописать
Код: Выделить всё
select st_boundary(geometry) as geom, * from "Имя исходного слоя";
Плюс в том, что не надо плодить лишние таблицы в базе данных, минус - существует только внутри проекта QGis
Re: Отображение полигонального слоя как линейного
Добавлено: 14 сен 2020, 05:51
trir
минус - существует только внутри проекта QGis
можно сделать представление в БД
Re: Отображение полигонального слоя как линейного
Добавлено: 14 сен 2020, 07:01
Ivor
Да, можно. Но способ с виртуальным слоем работает для любых источников, а не только для БД (шейпы, cvs и прочее)