ความแตกต่างระหว่างเรขาคณิตและ $ geometry QGIS


12

นี่อาจเป็นคำถามที่ไม่สำคัญ แต่ฉันสับสนว่าอะไรคือความแตกต่างระหว่างเรขาคณิตกับ $ geometry ใน QGIS ฉันไม่พบตัวอย่างการใช้ฟังก์ชั่นนี้

เรขาคณิตและเรขาคณิต $

โดยเฉพาะอย่างยิ่งฉันสนใจเรื่องรูปทรงเรขาคณิตในกรณีใดบ้างที่เป็นประโยชน์

คำตอบ:


19

ถัดจากรายการฟังก์ชั่นของภาพหน้าจอของคุณควรเป็นเอกสารของฟังก์ชันที่เลือกในปัจจุบัน สำหรับฉันด้วย 2.18.12 ที่อ่าน:

$ geometry คืนค่าเรขาคณิตของฟีเจอร์ปัจจุบัน สามารถใช้สำหรับการประมวลผลด้วยฟังก์ชั่นอื่น ๆ

เรขาคณิต ส่งคืนเรขาคณิตของคุณสมบัติ

นี่เป็นเหมือนวิธีการที่แตกต่างจากฟังก์ชั่นในการเขียนโปรแกรมเชิงวัตถุ $ เรขาคณิตนี้ / ตนเอง 's เรขาคณิต คุณสามารถคิดได้มากกว่าเช่นคุณสมบัติหรือทรัพย์สินอาจจะ

ในทางกลับกันรูปทรงเรขาคณิตนั้นต้องการ / อนุญาตให้คุณส่งคุณสมบัติไปและจะคืนรูปทรงเรขาคณิตที่สอดคล้องกัน ตามที่แสดงในเอกสารคุณสามารถใช้สิ่งนี้เพื่อรับรูปทรงเรขาคณิตจากการเลือกคุณสมบัติตามคุณลักษณะ:

geometry(
  get_feature(layer, attributeField, value)
)

คุณสามารถทำอะไรกับมันถูก จำกัด ด้วยความคิดสร้างสรรค์ของคุณและแหล่งที่มาของคุณสมบัติที่จะส่งผ่านไป :)


ดังนั้นฉันจะใช้มันอย่างไรเมื่อพยายามแปลงจุดแยกที่เป็นบรรทัด ((make_line (make_point ("xlbl" -1000, "ylbl")), make_point (("xlbl" + ความยาว (("เวลา")) * 3000 +7000), "ylbl"),) ... ฯลฯ ฉันหมายความว่าฉันต้องการแปลงทุก ๆ จุดของเส้นตามพิกัดในค่าตารางแอตทริบิวต์
Jane

ฉันคิดว่าฉันจะต้องเป็นตัวแทนของทุกจุดของเส้นของฉัน (จาก func make_point) เป็นรูปทรงเรขาคณิตแล้วเปลี่ยนมันให้ไกลที่สุดเท่าทั้งสร้าง make_line เรขาคณิตแปลงผิดgis.stackexchange.com/questions/253002/...
เจน

แน่นอนค่ะ ฟังดูเหมือนว่าใช้เครื่องมือผิดคุณลองใช้ปลั๊กอิน points2one หรือการประมวลผลอื่น ๆ บ้างไหม?
bugmenot123

1
ไม่นี่เป็นสไตล์ของเลเยอร์ฉันไม่สามารถใช้ปลั๊กอินในคุณสมบัติเลเยอร์ได้ ฉันพยายามที่จะแก้ปัญหาของฉันโดยอาศัยฟังก์ชั่นในตัวของ qgis
Jane

2
การเปรียบเทียบคุณสมบัติฟังดูดี แต่การเปรียบเทียบ OO ค่อนข้างอ่อนแอ$geometryเป็นตัวแปร (const) โดยไม่คำนึงว่า OO หรือไม่
Matthias Kuhn

15

$geometryส่งคืนเรขาคณิตของคุณลักษณะปัจจุบันตามที่geom_to_wkt($geometry)

geometryส่งคืนเรขาคณิตของคุณลักษณะเฉพาะดังที่geom_to_wkt(geometry(get_feature('my_layer', 'my_feature', feature_id)))

คุณจะใช้ตัวพิมพ์ที่สองหากต้องการตัวอย่างเช่นเพื่อประมวลผลคุณลักษณะปัจจุบันกับคุณลักษณะเฉพาะ:

intersects($geometry,geometry(get_feature(layer,attributeField,value)))

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