Có thể đặt CRS dự án của một dự án trong QGIS thông qua lệnh Python không?
Trong trường hợp của tôi, người dùng nên mở QGIS, bắt đầu plugin viết của tôi và plugin này sẽ tải dữ liệu không gian có mã epsg 31467 (Gauss Krueger Vùng 3). Thật không may, CRS mặc định của QGIS là WGS84 và vì vậy tôi gặp rắc rối với các đơn vị và quy mô.
Cách tiếp cận đầu tiên của tôi là sử dụng mã này:
my_crs = core.QgsCoordinateReferenceSystem(31467, core.QgsCoordinateReferenceSystem.EpsgCrsId)
self.iface.mapCanvas().mapRenderer().setDestinationCrs(my_crs)
Điều này thay đổi (sau khi dữ liệu đã được trực quan hóa) CRS sang Gauss Krueger Vùng 3. Ít nhất là mã đặc biệt ở góc dưới bên phải đã thay đổi. Các đơn vị vẫn ở độ và quy mô là hoàn toàn sai. 1: 5000 trong Gauss Krüger là 1: 528822376 trong WGS 84 (trong trường hợp của tôi ở QGIS). Sau khi thiết lập CRS dự án theo cách thủ công trong các thuộc tính, crs dự án thực sự là GK3 và tỷ lệ và các đơn vị là đúng.
Vì vậy, câu hỏi của tôi là, tôi có thể thiết lập CRS dự án theo cách khác so với tôi đã làm không? Tôi muốn tránh cách thủ công.
Tôi đã giải quyết vấn đề bằng cách thêm đoạn mã sau:
qgis.utils.iface.mapCanvas().setMapUnits(0)
qgis.utils.iface.mapCanvas().refresh()
Điều này đặt các đơn vị để đo và thang đo được cập nhật tự động. 0 là viết tắt của mét, 1 là chân, 2 là độ và 3 là không rõ.