È possibile impostare il progetto CRS di un progetto in QGIS tramite un comando Python?
Nel mio caso l'utente dovrebbe aprire QGIS, avviare il mio plugin scritto e questo plugin caricherà i dati spaziali che hanno il codice epsg 31467 (Gauss Krueger Zone 3). Sfortunatamente il CRS predefinito di QGIS è WGS84 e quindi ho problemi con le unità e la bilancia.
Il mio primo approccio è stato quello di utilizzare questo codice:
my_crs = core.QgsCoordinateReferenceSystem(31467, core.QgsCoordinateReferenceSystem.EpsgCrsId)
self.iface.mapCanvas().mapRenderer().setDestinationCrs(my_crs)
Questo cambia (dopo che i dati sono già visualizzati) il CRS in Gauss Krueger Zone 3. Almeno il codice espg nell'angolo in basso a destra è cambiato. Le unità sono ancora in gradi e la scala è totalmente sbagliata. 1: 5000 in Gauss Krüger è 1: 528822376 in WGS 84 (nel mio caso in QGIS). Dopo aver impostato il progetto CRS manualmente nelle proprietà, il progetto crs è davvero GK3 e la scala e le unità sono giuste.
Quindi la mia domanda è: posso impostare il progetto CRS in un modo diverso da come l'ho fatto? Voglio evitare il modo manuale.
Ho risolto il problema aggiungendo il seguente codice:
qgis.utils.iface.mapCanvas().setMapUnits(0)
qgis.utils.iface.mapCanvas().refresh()
In questo modo le unità vengono misurate e la scala viene aggiornata automaticamente. Lo 0 sta per metri, 1 è per piede, 2 è per grado e 3 per sconosciuto.