Apakah mungkin untuk menetapkan CRS proyek dari sebuah proyek di QGIS melalui perintah Python?
Dalam kasus saya pengguna harus membuka QGIS, mulai plugin tertulis saya dan plugin ini akan memuat data spasial yang memiliki kode epsg 31467 (Gauss Krueger Zone 3). Sayangnya QGIS default CRS adalah WGS84, jadi saya mendapat masalah dengan unit dan skala.
Pendekatan pertama saya adalah menggunakan kode ini:
my_crs = core.QgsCoordinateReferenceSystem(31467, core.QgsCoordinateReferenceSystem.EpsgCrsId)
self.iface.mapCanvas().mapRenderer().setDestinationCrs(my_crs)
Perubahan ini (setelah data sudah divisualisasikan) CRS ke Gauss Krueger Zone 3. Setidaknya kode espg di sudut kanan bawah telah berubah. Unit masih dalam derajat dan skalanya benar-benar salah. 1: 5000 di Gauss Krüger adalah 1: 528822376 di WGS 84 (dalam kasus saya di QGIS). Setelah mengatur proyek CRS secara manual di properti, proyek crs benar-benar GK3 dan skala dan unitnya benar.
Jadi pertanyaan saya adalah, dapatkah saya mengatur proyek CRS dengan cara lain daripada yang telah saya lakukan? Saya ingin menghindari cara manual.
Saya memecahkan masalah dengan menambahkan kode berikut:
qgis.utils.iface.mapCanvas().setMapUnits(0)
qgis.utils.iface.mapCanvas().refresh()
Ini mengatur unit ke meter dan skala diperbarui secara otomatis. 0 berarti meter, 1 untuk kaki, 2 untuk derajat dan 3 untuk tidak diketahui.
Gunakan ini:
sumber
my_crs=QgsCoordinateReferenceSystem(4326)
:)