¿Es posible configurar el CRS del proyecto de un proyecto en QGIS mediante un comando de Python?
En mi caso, el usuario debe abrir QGIS, iniciar mi complemento escrito y este complemento cargará datos espaciales que tienen el código epsg 31467 (Gauss Krueger Zone 3). Lamentablemente, el CRS predeterminado de QGIS es WGS84 y, por lo tanto, me meto en problemas con las unidades y la escala.
Mi primer enfoque fue usar este código:
my_crs = core.QgsCoordinateReferenceSystem(31467, core.QgsCoordinateReferenceSystem.EpsgCrsId)
self.iface.mapCanvas().mapRenderer().setDestinationCrs(my_crs)
Esto cambia (después de visualizar los datos) el CRS a Gauss Krueger Zone 3. Al menos el código espg en la esquina inferior derecha ha cambiado. Las unidades todavía están en grados y la escala está totalmente equivocada. 1: 5000 en Gauss Krüger es 1: 528822376 en WGS 84 (en mi caso en QGIS). Después de configurar el CRS del proyecto manualmente en las propiedades, el crs del proyecto es realmente GK3 y la escala y las unidades son correctas.
Entonces, mi pregunta es, ¿puedo configurar el proyecto CRS de otra manera que no lo he hecho? Quiero evitar la forma manual.
Resolví el problema agregando el siguiente código:
qgis.utils.iface.mapCanvas().setMapUnits(0)
qgis.utils.iface.mapCanvas().refresh()
Esto configura las unidades para medir y la escala se actualiza automáticamente. El 0 significa metros, 1 es para pie, 2 es para grado y 3 para desconocido.