Чи можливо встановити проектну CRS проекту в QGIS за допомогою команди Python?
У моєму випадку користувач повинен відкрити QGIS, запустити свій письмовий плагін, і цей плагін буде завантажувати просторові дані, що мають код epsg 31467 (зона Гаусса Крюгера 3). На жаль, CRS за замовчуванням QGIS - це WGS84, тому я потрапляю в проблеми з одиницями та масштабом.
Першим моїм підходом було використання цього коду:
my_crs = core.QgsCoordinateReferenceSystem(31467, core.QgsCoordinateReferenceSystem.EpsgCrsId)
self.iface.mapCanvas().mapRenderer().setDestinationCrs(my_crs)
Це змінюється (після того, як дані вже візуалізуються) CRS до зони Гаусса Крюгера 3. Принаймні код espg у правому нижньому куті змінився. Одиниці все ще в градусах, і масштаб абсолютно невірний. 1: 5000 у Гаусса Крюгера - 1: 528822376 у WGS 84 (у моєму випадку - у QGIS). Після встановлення проекту CRS вручну у властивостях проект crs дійсно GK3, і масштаб та одиниці є правильними.
Отже, моє питання: чи можу я встановити проект CRS іншим способом, ніж я це зробив? Я хочу уникати ручного способу.
Я вирішив проблему, додавши наступний код:
qgis.utils.iface.mapCanvas().setMapUnits(0)
qgis.utils.iface.mapCanvas().refresh()
Це встановлює одиниці вимірювання, і масштаб оновлюється автоматично. 0 означає метри, 1 - для ступні, 2 - для ступеня, а 3 - для невідомого.