Можно ли установить проект CRS проекта в QGIS с помощью команды Python?
В моем случае пользователь должен открыть QGIS, запустить мой написанный плагин, и этот плагин будет загружать пространственные данные, которые имеют код epsg 31467 (Gauss Krueger Zone 3). К сожалению, по умолчанию QGIS CRS - 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 - неизвестный.