ฉันต้องการทราบว่ามีวิธีเพิ่มฟิลด์ระบบพิกัดแบบไดนามิกในเค้าโครงของนักแต่งเพลง QGIS หรือไม่
ฉันสามารถใช้นิพจน์เพื่อเพิ่มหลายรายการเช่นชื่อเอกสารพา ธ ไฟล์ ฯลฯ แต่ฉันไม่สามารถหาวิธีเพิ่มระบบพิกัดได้หรือไม่
ฉันต้องการทราบว่ามีวิธีเพิ่มฟิลด์ระบบพิกัดแบบไดนามิกในเค้าโครงของนักแต่งเพลง QGIS หรือไม่
ฉันสามารถใช้นิพจน์เพื่อเพิ่มหลายรายการเช่นชื่อเอกสารพา ธ ไฟล์ ฯลฯ แต่ฉันไม่สามารถหาวิธีเพิ่มระบบพิกัดได้หรือไม่
คำตอบ:
คำตอบนี้ให้และยอมรับก่อนการเปิดตัว QGIS 3.0
วิธีรับรหัสสิทธิ์ (เช่น " EPSG: 4326 "):
[% layer_property( 'your_layer_name_or_id', 'crs' ) %]
หากคุณต้องการได้รับคำอธิบายที่เป็นข้อความของ CRS (เช่น " WGS84 "):
รหัส:
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def get_crs(layer_name, feature, parent):
return QgsMapLayerRegistry.instance().mapLayersByName(layer_name)[0].crs().description()
get_crs( 'your_layer_name' )
คำตอบสำหรับ QGIS 3.x:
สำหรับวิธีแก้ปัญหาที่ง่ายกว่าโดยไม่ต้องใช้ภาษาไพ ธ อนดูความคิดเห็นจากด้านล่าง
เพิ่มสคริปต์นี้ไปยังฟังก์ชันที่กำหนดเองของคุณ:
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def get_crs(layer_name, feature, parent):
return QgsProject.instance().mapLayersByName(layer_name)[0].crs().description()
จากนั้นรับชื่อ crs ในเครื่องมือแก้ไขนิพจน์ด้วย
get_crs(@layer_name)
สำหรับชื่อ CRS ของโครงการของคุณ (ตัวอย่างเช่นการฉายในโครงร่างการพิมพ์ของคุณ) ใช้สิ่งนี้:
เพิ่มสคริปต์นี้ไปยังฟังก์ชันที่กำหนดเองของคุณ:
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def get_projectcrs(project_crs, feature, parent):
return QgsCoordinateReferenceSystem(project_crs).description()
จากนั้นรับชื่อ crs ในเครื่องมือแก้ไขนิพจน์ด้วย:
get_projectcrs(@project_crs)
แน่นอนคุณสามารถพิมพ์เช่น'EPSG:4326'
ด้วยตนเองหรือใช้ฟังก์ชั่นอื่นนอกเหนือจาก@project_crs
ที่ส่งคืนรหัส EPSG
หมายเหตุ:
ดูที่https://qgis.org/api/api_break.htmlสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงใน qgis 3.x