แสดงเฉพาะคุณสมบัติที่เลือกบนแผนที่ใน QGIS?


30

ไม่แน่ใจว่ามีตัวเลือกนี้อยู่หรือไม่ แต่รุ่น QGIS ใหม่ซ่อนสิ่งต่างๆมากมายและดูเหมือนง่ายมากที่ฉันเชื่อว่าเป็นไปได้ที่จะทำสิ่งนี้มาก่อน

ฉันมีชุดข้อมูลขนาดใหญ่พร้อมแทร็กของเรือ ตอนนี้ฉันต้องการวิเคราะห์แทร็กของเรือแต่ละลำ (ทำจากเลเยอร์พ้อยท์ด้วย points2one) - อย่างไรก็ตามมันแออัดมากจนยากที่จะดูแต่ละแทร็ก ฉันไม่ต้องการบันทึกแต่ละแทร็กเป็นเลเยอร์ใหม่ดังนั้นฉันจึงสงสัยว่าเป็นไปได้หรือไม่ที่จะเลือกหนึ่งแทร็กในตารางแอตทริบิวต์และแสดงเฉพาะแทร็กเดียวในแผนที่ / ซ่อนรายการอื่น?

คำตอบ:


33

คำตอบของ Kadeem จะป้องกันไม่ให้คุณสมบัติของคุณถูกมองเห็นได้ แต่จะยังคงปรากฏอยู่หากคุณพยายามระบุเส้นทางการเดินเรือแต่ละลำคุณอาจคลิกที่คุณสมบัติที่มองไม่เห็นโดยไม่ได้ตั้งใจ สิ่งที่ดูเหมือนว่าคุณต้องทำคือกำหนดเลเยอร์ของคุณเพื่อให้ราวกับว่าไม่มีคุณลักษณะเหล่านั้น ใน ArcGIS สิ่งนี้มักจะทำได้โดยใช้ Definition Query ใน QGIS คำสั่งที่เทียบเท่าคือ Layer ไปที่คุณสมบัติของเลเยอร์ของคุณภายใต้แท็บทั่วไปที่ด้านล่างคือกล่องคุณสมบัติย่อยคลิกปุ่มด้านล่างเพื่อเปิดตัวสร้างคิวรี:

ป้อนคำอธิบายรูปภาพที่นี่

ตัวสร้างแบบสอบถามจะช่วยคุณสร้างแบบสอบถาม SQL เพื่อกำหนดว่าคุณลักษณะใดในเลเยอร์ของคุณที่ควรแสดงในโครงการของคุณ คุณลักษณะใด ๆ ที่ไม่ได้ส่งคืนโดยการสืบค้นจะทำให้มองไม่เห็นไม่ใช่แค่การมองเห็น แต่ทั้งหมด (ไม่ได้ถูกลบออกจากข้อมูลของคุณแน่นอนพวกมันเพิ่งถูกกำหนดให้มีอยู่จนกว่าคุณจะลบการสืบค้นในชั้นย่อย)


แดนขอบคุณมาก !!! นี่คือสิ่งที่ฉันกำลังมองหาซับซ้อนกว่าที่ฉันคาดไว้เล็กน้อย มีประโยชน์มากขอบคุณ!
Kristina

นั่นคือคำตอบ Nice tip Dan!
kadéem

แปลก. บางครั้งก่อนหน้านี้ฉันทำสิ่งนี้และทำงานได้ ตอนนี้ฉันต้องการที่จะทำมันอีกครั้งในชั้นอื่นและกล่องคุณสมบัติย่อยเป็นสีเทาเช่นเดียวกับปุ่มของ QueryBuilder! ข้อเสนอแนะใด ๆ ???
Patrick Van Den Noortgaete

แก้ไข แต่ไม่ชัดเจนว่าทำไม ฉันบันทึกการเปลี่ยนแปลงที่ฉันทำและจากนั้นปุ่ม QueryBuilder ก็มีให้ใช้งาน ...
Patrick Van Den Noortgaete

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 ที่ฉันแทรกตัวกรองนี้
newGIS

ฉันได้เพิ่มรูปภาพ
HeikkiVesanto

1
การใช้ QGIS 2.18.14 และการแสดงออกที่ทำงานได้ถูกเลือก ('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

หากคุณเปิดตารางแอตทริบิวต์คุณสามารถค้นหาสัญลักษณ์ epsilon (ในรูปด้านล่างรูปที่ 4)

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งนี้อนุญาตให้คุณพิมพ์นิพจน์ ตัวอย่างเช่น:

"track_id" = 24

เมื่อคุณยืนยันแถวทั้งหมดที่ตรงกับนิพจน์ของคุณ (นั่นคือ: ทุกจุดที่เป็นของแทร็กด้วยtrack_idX) จะถูกเลือก หากคุณคลิกที่ปุ่มแว่นขยาย QGIS จะซูมไปที่สิ่งที่คุณเลือกในพื้นที่วาดแผนที่ คุณสมบัติที่เลือก (จุดในกรณีของคุณ) จะถูกเน้น


สิ่งที่คุณสามารถทำได้คือการใช้สไตล์ตามกฎ คุณสามารถแสดงแทร็กของเรือโดยใช้สัญลักษณ์หรือเครื่องหมายที่กำหนดและ 'ไม่แสดง' จุดอื่น ๆ ทั้งหมดโดยให้เครื่องหมาย 'ไม่สามารถมองเห็น' ภาพหน้าจอ (ส่วนหนึ่งจากคุณสมบัติของเลเยอร์) ด้านล่างอธิบายวิธีการทำงาน:

  • กฎข้อที่ 1: ใช้เครื่องหมายที่กำหนดให้กับทุกจุดที่มีค่า 24 สำหรับ track_id
  • กฎข้อที่ 2: ใช้เครื่องหมายที่กำหนด (วงกลมที่มีเส้นเติมสีขาวและเส้นขอบสีขาว ... ) กับทุกจุดที่ไม่ตรงกับtrack_idค่า 24

ป้อนคำอธิบายรูปภาพที่นี่

ในความเป็นจริงทุกจุดยังคงอยู่ที่นั่น (ทำให้พวกเขาเป็นสีขาวจะไม่ทำให้การเรนเดอร์ใช้เวลาน้อยลง) แต่อย่างน้อยดวงตาของคุณก็สามารถผ่อนคลายได้!


ขอบคุณมากสำหรับคำตอบของคุณ Kadeem! ฉันรู้ถึงฟังก์ชั่นการเลือกและมันใช้งานได้ดี แต่ฉันมี 500,000 จุดในพื้นที่เล็ก ๆ และเพียงแค่ไฮไลต์แทร็กที่ฉันกำลังมองหาไม่เพียงพอแผนที่ยังคงแออัดและสับสน คุณรู้หรือไม่ว่ามีความเป็นไปได้ที่จะปิดกั้นทุกจุดที่ไม่ได้เลือกหรือสิ่งที่ชอบ?
Kristina

2
ฉันแก้ไขคำตอบของฉันพร้อมตัวเลือกอื่นด้านล่างบรรทัด ฉันเดาว่านี่จะช่วยคุณได้
kadéem

Kadeem นี่มันเรียบง่าย แต่มีประสิทธิภาพ - ความคิดที่ดีขอบคุณมาก!
Kristina
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.