Отображение полигонального слоя как линейного
-
- Участник
- Сообщения: 72
- Зарегистрирован: 03 ноя 2017, 11:33
- Репутация: 5
- Откуда: Москва
Отображение полигонального слоя как линейного
Коллеги, добрый день! Есть такая нетривиальная задача, как отображение полигонального слоя как линеный.
Про конвертацию, это все понятно.... НО это не подходит, тк атлас должен формироваться всегда по актуальным данным: и каждый раз переводить слой в линию не удобно. Собственно в каком месте возникает проблема:
Методом подбора: был найден знак который отобразит полигон(границу НП) в условных обозначениях как линию, но используя галку show items inside current atlas feature объекты которые попадают полностью внутрь границ НП, в условии когда граница не видна на самом атласе. Граница отображается в условных обозначениях, тк она полигональная! и атлас считает что она отображена на карте.
Вообщем возвращаясь к истокам, как сделать отображение(отрисовку) слоя как линейный. Может кто предложит свой подход..
надеюсь понятно описал ситуацию....
ПС Спасибо если отзаветесь!
Про конвертацию, это все понятно.... НО это не подходит, тк атлас должен формироваться всегда по актуальным данным: и каждый раз переводить слой в линию не удобно. Собственно в каком месте возникает проблема:
Методом подбора: был найден знак который отобразит полигон(границу НП) в условных обозначениях как линию, но используя галку show items inside current atlas feature объекты которые попадают полностью внутрь границ НП, в условии когда граница не видна на самом атласе. Граница отображается в условных обозначениях, тк она полигональная! и атлас считает что она отображена на карте.
Вообщем возвращаясь к истокам, как сделать отображение(отрисовку) слоя как линейный. Может кто предложит свой подход..
надеюсь понятно описал ситуацию....
ПС Спасибо если отзаветесь!
- Игорь Белов
- Гуру
- Сообщения: 2230
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1503
- Откуда: Казань
Re: Отображение полигонального слоя как линейного
Если честно, ничего не понял. Может, Вам вот это нужно?
- Вложения
-
- Outline: Simple line
- Screenshot_2020-06-16_15-28-42.png (26.79 КБ) 5043 просмотра
The purpose of computing is insight, not numbers
-
- Участник
- Сообщения: 86
- Зарегистрирован: 31 янв 2012, 10:51
- Репутация: 51
Re: Отображение полигонального слоя как линейного
Насколько я понял, речь идет не только о линейной символике для площадного объекта, но и о фильтрации объектов слоя в условных обозначениях в макете атласа. Если задача действительно поставлена так, то сделайте для своего слоя границ населенных пунктов отрисовку по правилам, создайте правило с выражением фильтра и нужной вам линейной символикой и в этом случае в карте и в легенде граница будет отображаться только если она пересекается с текущей геометрией слоя покрытия атласа. Системы координат слоя покрытия и слоя границ должны совпадать, если не так - нужно их привести к одной.
Код: Выделить всё
crosses(boundary($geometry ), @atlas_geometry )
-
- Участник
- Сообщения: 72
- Зарегистрирован: 03 ноя 2017, 11:33
- Репутация: 5
- Откуда: Москва
Re: Отображение полигонального слоя как линейного
вы все правильно поняли, спасибо! о результате отпишусь!drrrrr писал(а): ↑16 июн 2020, 17:39crosses(boundary($geometry ), @atlas_geometry )
-
- Участник
- Сообщения: 72
- Зарегистрирован: 03 ноя 2017, 11:33
- Репутация: 5
- Откуда: Москва
Re: Отображение полигонального слоя как линейного
На самом деле, Вы реально помогли мне хорошо продвинуться, есть еще вопросик.
Можно ли как-то отправить значение масштаба для текущего объекта атласа, из функций вижу только, но я так понимаю, что это масштаб самой карты.
ПС. Идея такая: пересекать границу НП с рамкой атласа, и из этого понимать нужно ли ее отображать или нет.
Можно ли как-то отправить значение масштаба для текущего объекта атласа, из функций вижу только
Код: Выделить всё
@map_scale
ПС. Идея такая: пересекать границу НП с рамкой атласа, и из этого понимать нужно ли ее отображать или нет.
Код: Выделить всё
bounds( buffer( centroid( @atlas_geometry ),0.1* @map_scale ,10))
-
- Участник
- Сообщения: 86
- Зарегистрирован: 31 янв 2012, 10:51
- Репутация: 51
Re: Отображение полигонального слоя как линейного
Вот тут совсем я не понимаю о чем речь. Правило с вышеприведенным выражением фильтра уже управляет отображением границы по критерию пересечения с геометрией текущего объекта атласа и никаких дополнительных механизмов не требует.
-
- Участник
- Сообщения: 72
- Зарегистрирован: 03 ноя 2017, 11:33
- Репутация: 5
- Откуда: Москва
Re: Отображение полигонального слоя как линейного
В этом случае пересечения нет, но граница в условных обозначениях нужна
Поэтому и стал думать в сторону построения рамки от центроида объекта.
Но по ощущениям это тупиковый путь.... Думаю проще написать функцию на стороне БД, что бы она конвертировала полигональный слой в линейный, это должно все упростить
Поэтому и стал думать в сторону построения рамки от центроида объекта.
Но по ощущениям это тупиковый путь.... Думаю проще написать функцию на стороне БД, что бы она конвертировала полигональный слой в линейный, это должно все упростить
-
- Участник
- Сообщения: 86
- Зарегистрирован: 31 янв 2012, 10:51
- Репутация: 51
Re: Отображение полигонального слоя как линейного
в этом случае попробуйте такое выражение для фильтра:
Код: Выделить всё
crosses( boundary( $geometry ), @map_extent )
-
- Участник
- Сообщения: 72
- Зарегистрирован: 03 ноя 2017, 11:33
- Репутация: 5
- Откуда: Москва
Re: Отображение полигонального слоя как линейного
Какое то время не заходил на форум, спасибо за помощь! В итоге пошел самым простым путем и сделал слои линейными!
-
- Завсегдатай
- Сообщения: 345
- Зарегистрирован: 11 дек 2006, 09:46
- Репутация: 102
- Откуда: Иркутск
Re: Отображение полигонального слоя как линейного
Пропустил тему. Просто ещё в копилку вариантов:
создать виртуальный слой, и в его запросе прописать
Плюс в том, что не надо плодить лишние таблицы в базе данных, минус - существует только внутри проекта QGis
создать виртуальный слой, и в его запросе прописать
Код: Выделить всё
select st_boundary(geometry) as geom, * from "Имя исходного слоя";
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Отображение полигонального слоя как линейного
можно сделать представление в БДминус - существует только внутри проекта QGis
-
- Завсегдатай
- Сообщения: 345
- Зарегистрирован: 11 дек 2006, 09:46
- Репутация: 102
- Откуда: Иркутск
Re: Отображение полигонального слоя как линейного
Да, можно. Но способ с виртуальным слоем работает для любых источников, а не только для БД (шейпы, cvs и прочее)
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 42 гостя