Відображення на карті лише вибраних функцій у QGIS?


30

Не впевнений, чи існував такий варіант колись, але нова версія QGIS приховує багато речей десь ще, і це здається настільки простим, що я певно переконаний, що це можна було зробити і раніше.

У мене досить великий набір даних із судновими треками. Зараз я хочу проаналізувати окремі доріжки судна (зроблені з точкового шару з пунктами2), проте він настільки переповнений, що важко дивитись на окремі доріжки. Я не хочу зберігати кожен трек як новий шар, тому мені цікаво, чи можна вибрати одну доріжку в таблиці атрибутів і відобразити лише ту на карті / приховати інші?

Відповіді:


33

Відповідь Kadeem не дозволить побачити ваші функції, але вони все одно будуть присутніми, якщо ви намагаєтесь визначити окремий трек судна, ви можете помилково натиснути невидиму функцію. Що вам здається, що вам потрібно зробити, - це визначити свій шар так, ніби ці функції не існують. У ArcGIS це зазвичай робиться за допомогою Запиту на визначення, у QGIS еквівалентною командою є Підмножина шару. Перейдіть до Властивості вашого шару, на вкладці Загальні, внизу знаходиться поле Підмножина функцій, натисніть кнопку під ним, щоб відобразити Builder Query:

введіть тут опис зображення

Конструктор запитів допоможе вам створити запит SQL, щоб визначити, які функції вашого шару повинні відображатися у вашому проекті. Будь-які функції, не повернуті запитом, стають невидимими, не просто візуально, а цілком (вони не видаляються з ваших даних, звичайно, вони просто визначені поза існуванням, поки ви не видалите запит підмножини шару).


Ден, велике спасибі !!! Це те, що я шукав, трохи складніше, ніж я сподівався, але робить трюк! Дуже корисно, дякую!
Крістіна

Це ідд відповіді. Гарна порада Дане!
kadéem

Дивно. Деякий час тому я це робив, і це спрацювало. Тепер я хочу зробити це ще раз на іншому шарі, і поле Підмножина функцій має сірий колір, а також кнопку QueryBuilder! Будь-яка пропозиція ???
Патрік Ван Ден Нортгаете

Вирішили, але не зрозуміло, чому. Я врятував зміни, які я вніс, і тоді кнопка QueryBuilder стала доступною ...
Патрік Ван Ден Нортгаете

1
@SimoA. Якщо ваші дані в Excel, можна відфільтрувати його там, додати нове поле , де ви конвертувати VALUEв 'VALUE',, а потім скопіювати і вставити це поле у поле запиту з допомогою запиту IN.
Dan C

15

Зараз це можливо, використовуючи лише виділення та символіку, засновану на правилах.

Для цього потрібен плагін Expression Plus (для QGIS 2.x. 3.0 вбудований функціонал).

Створіть на основі правил символіку з фільтром:

QGIS 3.0+ (із ​​тестування в коментарях):

is_selected()

QGIS 2.12-2.18:

isselected( @layer_name )

Або QGIS 2.8:

isselected( 'ACTUAL_NAME_OF_LAYER' )

Тепер будуть показані лише вибрані функції, які відповідають цьому правилу.

Ви також можете мати правило ELSE для всіх невибраних функцій.

введіть тут опис зображення


1
Саме це я шукав - дякую за цю відповідь
geobar

HeikkiVesanto, куди я вставляю цей фільтр?
новийГІС

Я додав картинку.
HeikkiVesanto

1
Використовуючи QGIS 2.18.14, а вираз, який працював, вибирається ('ім'я шару'). Використання (@name_name) повернуло 0 результатів.
Techie_Gus

2
У QGIS 3 і вище ця функція вбудована. Ви можете знайти її Record and Attributesв розділі Expression String Builder. Крім того, вам більше не потрібно ставити назву шару і не забувати підкреслити між isі selected. Нижче наведено приклад для QGIS 3 і вище: is_selected().
thequerist

12

Крістіна, я припускаю, що у вашій таблиці є атрибут, який дозволяє ідентифікувати один трек? Наприклад:

  point_id  |  track_id
------------+------------
     1      |     15
     2      |     15
     5      |     24
     6      |     24
     7      |     24

Якщо ви відкриєте таблицю атрибутів, ви можете знайти символ епсилону (на малюнку нижче - четвертий).

введіть тут опис зображення

Це дозволяє вводити вираз; наприклад:

"track_id" = 24

Після підтвердження track_idвибираються всі рядки, які задовольняють ваше вираження (тобто: усі точки, що належать до треку з X). Якщо потім натиснути кнопку лупи, QGIS збільшує ваш вибір на полотні карти. Вибрані функції (бали у вашому випадку) виділяються.


Що ви можете зробити, це застосувати стиль, заснований на правилах. Як такий, ви можете показувати окремий трек судна за допомогою заданого символу або маркера, а "не показувати" всі інші точки, даючи їм маркер "невидимий". Скріншот (частина з властивостей шару) нижче пояснює, як це працює:

  • Правило 1: застосуйте даний маркер до всіх точок, що мають значення 24 для track_id
  • Правило 2: застосуйте даний маркер (коло з білою заливкою та білою облямівкою ...) до всіх точок, які не відповідають track_idзначенню 24

введіть тут опис зображення

Насправді всі точки все ще існують (якщо зробити їх білими, це не призведе до того, що візуалізація займе менше часу), але принаймні ваші очі можуть розслабитися!


Велике спасибі за вашу відповідь, Kadeem! Я знаю про функцію відбору, і це добре працює, однак, я буквально маю 500 000 очок на невеликій площі, і лише виділення треків, які я шукаю, недостатньо, карта все ще занадто переповнена і заплутана. Чи знаєте ви, чи є можливість заблокувати всі не вибрані пункти чи щось подібне?
Крістіна

2
Я відредагував свою відповідь іншим варіантом під рядком. Я думаю, це допоможе тобі.
kadéem

Кадеем, це так просто, але ефективно - чудова ідея, велике спасибі!
Крістіна
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.