ออมทรัพย์สมการที่ใช้ในเครื่องคำนวณภาคสนาม QGIS?


10

ฉันกำลังพยายามคำนวณค่าบางอย่างของจุดที่คำนวณใหม่ ดังนั้นฉันจึงใช้เครื่องคำนวณภาคสนามเพื่อเขียนสมการเพื่อกำหนดค่า

มีวิธีการบันทึกสมการนั้นหรือไม่ดังนั้นถ้าและเมื่อฉันเริ่มงานใหม่ฉันไม่จำเป็นต้องพิมพ์ซ้ำหรือไม่

สิ่งที่คล้ายกับวิธีที่คุณบันทึกสไตล์และสัญลักษณ์สำหรับอาร์เรย์ของคะแนน


นั่นเป็นคำขอคุณลักษณะที่ดีและค่อนข้างง่ายที่จะเพิ่ม
นาธาน W

คำตอบ:


5

QGIS บันทึกสมการสุดท้ายที่ใช้ในเครื่องคำนวณภาคสนามใต้แท็บ "ล่าสุด" ซึ่งคุณสามารถนำมาใช้ซ้ำได้โดยการดับเบิลคลิก

img สนามคำนวณ


ถูกต้องในกรณีที่ OP ไม่ได้ใช้สมการอื่นในภายหลัง แต่มันจะหายไปตามเวลาที่ OP ใช้สมการใหม่ Recentภาชนะเป็นเพียงชั่วคราว
ahmadhanb

5

คุณสามารถเขียนสมการของคุณในฟังก์ชั่นใหม่และจากนั้นคุณจะต้องเรียกใช้ฟังก์ชั่นเพื่อใช้การคำนวณอีกครั้ง

เปิดเครื่องคิดเลขฟิลด์คลิกที่Function Editorแท็บnew fileแล้วแก้ไขฟังก์ชั่น loadเลือก โปรดทราบว่าokจะไม่สามารถใช้ได้ในจุดนี้

กลับไปที่Expressionแท็บเลือกcustomกลุ่มฟังก์ชั่นและดับเบิลคลิกที่ฟังก์ชั่นของคุณ okเลือกฟิลด์ที่จะปรับปรุงและตี


value1หากคุณต้องการที่จะใช้เฉพาะค่าฟิลด์และค่าคงที่คุณสามารถแก้ไขลายเซ็นฟังก์ชั่นเริ่มต้นที่เริ่มต้นด้วย ในตัวอย่างของฉันฉันได้ลบมันออกไป แต่คุณสามารถใช้ฟิลด์นี้เพื่อส่งผ่านอาร์กิวเมนต์ใหม่

จากนั้นคุณสามารถเข้าถึงค่าฟิลด์ฟีเจอร์โดยใช้feature["fieldName"].... จงระวังที่จะเรียกใช้ฟังก์ชันนี้เฉพาะในเลเยอร์ที่มีฟิลด์ดังกล่าว!

@qgsfunction(args='auto', group='Custom')
def funcTestCalc( feature, parent):
    return feature["fieldA"]+feature["fieldB"];

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


3

นอกจากโซลูชันโดย @LaughU คุณสามารถรวมการดำเนินการเครื่องคำนวณฟิลด์ใด ๆ ลงในโมเดลกราฟิกจากนั้นบันทึกและเรียกใช้โมเดล สิ่งนี้ แต่ต้องการชื่อคอลัมน์ของคุณเสมอเหมือนกัน


2

หากคุณกำลังเพิ่มจุดใหม่ให้กับเลเยอร์ที่มีอยู่และคุณต้องการเรียกใช้การคำนวณเดียวกันสำหรับจุดนั้นเช่นเดียวกับจุดอื่น ๆ ทั้งหมดนี่คือคุณสมบัติที่มีประโยชน์สองประการ:

เขตข้อมูลเสมือน

เขตข้อมูลเสมือนจะคำนวณนิพจน์สำหรับแอตทริบิวต์ใหม่ทุกรายการโดยอัตโนมัติ มันยังปรับปรุงเป็นประจำ ดังนั้นเช่นสำหรับเขตข้อมูลเสมือนจริงที่เรียกว่า "รุ้ง" $yคุณสามารถใช้การแสดงออก

ข้อดีและข้อเสียของเขตข้อมูลเสมือน:

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

ฟิลด์ปกติที่มีค่าฟิลด์เริ่มต้น

คุณสามารถตั้งค่าเขตข้อมูลให้มีค่าเริ่มต้นตามนิพจน์ เมื่อคุณสร้างจุดใหม่แอตทริบิวต์ของมันจะถูกเติมอัตโนมัติด้วยค่าเริ่มต้น คุณสามารถเปลี่ยนค่าคุณสมบัติ มันไม่ได้อัปเดตโดยอัตโนมัติ *

ข้อดีและข้อเสียของค่าฟิลด์เริ่มต้น:

  • เมื่อใดก็ตามที่คุณเพิ่มจุดใหม่มันจะมีเอาต์พุตของนิพจน์ที่ถูกเพิ่มในฟิลด์นี้โดยอัตโนมัติ
  • ไม่อัปเดตอัตโนมัติ ในตัวอย่างนี้หมายความว่าหากคุณย้ายจุดที่มีอยู่ค่า "ละติจูด" ของมันจะไม่ถูกอัปเดต
  • คุณสามารถเปลี่ยนค่าของฟิลด์นี้
  • บันทึกเป็นส่วนหนึ่งของ shapefile ดังนั้นถ้าคุณเปิดเลเยอร์ในโครงการอื่นมันจะมีฟิลด์นี้ในตารางคุณสมบัติ

* ใน QGIS 3.2 สามารถตั้งค่าฟิลด์เริ่มต้น (เป็นทางเลือก) เป็น "ใช้ค่าเริ่มต้นในการอัปเดต" ด้วยตัวเลือกนี้หากคุณย้ายจุดที่ค่าเริ่มต้นคือ$yค่าปัจจุบันจะถูกแทนที่ด้วยพิกัด y ใหม่


ฉันคิดว่าค่าฟิลด์เริ่มต้นสามารถตั้งค่าให้อัพเดทอัตโนมัติใน QGIS 3.2
she_weeds

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