เป็นไปได้ไหมที่จะตั้งค่า CRS โครงการของโครงการใน QGIS ผ่านคำสั่ง Python?
ในกรณีของฉันผู้ใช้ควรเปิด QGIS เริ่มปลั๊กอินที่เขียนของฉันและปลั๊กอินนี้จะโหลดข้อมูลเชิงพื้นที่ซึ่งมีรหัส epsg 31467 (Gauss Krueger Zone 3) น่าเสียดายที่ CRS เริ่มต้นของ QGIS คือ WGS84 และฉันก็เลยมีปัญหากับยูนิตและสเกล
วิธีแรกของฉันคือการใช้รหัสนี้:
my_crs = core.QgsCoordinateReferenceSystem(31467, core.QgsCoordinateReferenceSystem.EpsgCrsId)
self.iface.mapCanvas().mapRenderer().setDestinationCrs(my_crs)
การเปลี่ยนแปลงนี้ (หลังจากข้อมูลถูกแสดงให้เห็นแล้ว) CRS เป็น Gauss Krueger Zone 3 อย่างน้อยโค้ด espg ที่มุมขวาล่างได้เปลี่ยนไป หน่วยยังคงอยู่ในระดับและขนาดผิดทั้งหมด 1: 5000 ใน Gauss Krügerคือ 1: 528822376 ใน WGS 84 (ในกรณีของฉันใน QGIS) หลังจากตั้งค่า CRS โครงการด้วยตนเองในคุณสมบัติ crs โครงการคือ GK3 จริง ๆ และสเกลและหน่วยถูกต้อง
ดังนั้นคำถามของฉันคือฉันสามารถตั้งค่า CRS โครงการในวิธีอื่นที่ฉันได้ทำไปแล้วได้หรือไม่? ฉันต้องการหลีกเลี่ยงวิธีการด้วยตนเอง
ฉันแก้ไขปัญหาด้วยการเพิ่มรหัสต่อไปนี้:
qgis.utils.iface.mapCanvas().setMapUnits(0)
qgis.utils.iface.mapCanvas().refresh()
เป็นการตั้งค่าหน่วยเป็นเมตรและเครื่องชั่งจะได้รับการอัพเดตโดยอัตโนมัติ 0 หมายถึงเมตร 1 สำหรับเท้า 2 สำหรับองศาและ 3 สำหรับไม่ทราบ