Отображать только выбранные объекты на карте в QGIS?

30

Не уверен, существовал ли когда-либо этот параметр, но новая версия QGIS скрывает много вещей где-то еще, и это кажется настолько простым, что я как-то убежден, что это можно было сделать раньше.

У меня довольно большой набор данных с треками кораблей. Теперь я хочу проанализировать отдельные траектории корабля (сделанные из точечного слоя с points2one) - однако, он настолько переполнен, что трудно смотреть на отдельные треки. Я не хочу сохранять каждую отдельную дорожку в качестве нового слоя, поэтому мне интересно, можно ли выбрать одну дорожку в таблице атрибутов и отобразить только одну на карте / скрыть остальные?

Кристина
источник

Ответы:

33

Ответ Kadeem предотвратит видимость ваших объектов, но они все равно будут присутствовать, если вы пытаетесь идентифицировать отдельную траекторию корабля, вы можете по ошибке щелкнуть невидимую функцию. Похоже, что вам нужно сделать, это определить свой слой так, чтобы эти объекты не существовали. В ArcGIS это обычно делается с помощью запроса определения, в QGIS эквивалентной командой является подмножество слоев. Перейдите в Свойства вашего слоя, на вкладке Общие, в нижней части окна Подмножество объектов, нажмите кнопку под ним, чтобы вызвать Query Builder:

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

Query Builder поможет вам создать SQL-запрос, чтобы определить, какие функции в вашем слое должны фактически отображаться в вашем проекте. Любые функции, не возвращаемые запросом, делаются невидимыми, не только визуально, но и полностью (они не удаляются из ваших данных, конечно, они просто определены как не существующие до тех пор, пока вы не удалите запрос подмножества слоев).

Дэн С
источник
Дэн, спасибо большое !!! Это то, что я искал, немного сложнее, чем я ожидал, но делает свое дело! Очень полезно, спасибо!
Кристина
Это странный ответ. Хороший совет, Дэн!
kadéem
Weird. Некоторое время назад я сделал это, и это сработало. Теперь я хочу сделать это снова на другом слое, а поле Подмножество элементов будет серым, а также кнопка QueryBuilder! Любое предложение???
Патрик Ван Ден Ноортгате
Решено, но не понятно почему. Я сохранил сделанные мной изменения, и тогда кнопка QueryBuilder стала доступной ...
Патрик Ван Ден Ноортгате
1
@SimoA. Если ваши данные в Excel, можно отфильтровать его там, добавить новое поле , где вы конвертировать VALUEв 'VALUE',, а затем скопировать и вставить это поле в поле запроса с помощью запроса IN.
Дан С
16

Теперь это возможно, используя только выборки и символы на основе правил.

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

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

QGIS 3.0+ (от thequerist в комментариях):

is_selected()

QGIS 2.12-2.18:

isselected( @layer_name )

Или QGIS 2.8:

isselected( 'ACTUAL_NAME_OF_LAYER' )

Теперь будут показаны только выбранные объекты, которые соответствуют этому правилу.

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

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

HeikkiVesanto
источник
1
Это именно то, что я искал - спасибо за этот ответ
Geobar
HeikkiVesanto, куда я вставляю этот фильтр?
newGIS
Я добавил картинку.
HeikkiVesanto
1
Используя QGIS 2.18.14 и выбранное выражение isselected ('layer_name'). Использование (@layer_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 увеличит ваш выбор на холсте карты. Выбранные функции (точки в вашем случае) подсвечиваются.


Что вы можете сделать, так это применить стиль, основанный на правилах. Таким образом, вы можете показать отдельную траекторию корабля, используя данный символ или маркер, и «не показывать» все остальные точки, давая им «невидимый» маркер. Снимок экрана (часть из Layer Properties) ниже объясняет, как это работает:

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

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

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

kadéem
источник
Большое спасибо за ответ Kadeem! Мне известна функция выбора, и она работает хорошо, однако у меня буквально 500 000 точек в небольшой области, и недостаточно просто выделить нужные треки, карта все еще слишком переполнена и запутана. Знаете ли вы, есть ли возможность заблокировать все невыбранные точки или что-то подобное?
Кристина
2
Я отредактировал свой ответ с другой опцией ниже линии. Я думаю, это поможет вам.
Кадим
Kadeem, это так просто, но эффективно - отличная идея, большое спасибо!
Кристина