Ist es möglich, das Projekt-CRS eines Projekts in QGIS über einen Python-Befehl festzulegen?
In meinem Fall sollte der Benutzer QGIS öffnen, mein geschriebenes Plugin starten und dieses Plugin lädt räumliche Daten mit dem Epsg-Code 31467 (Gauss Krueger Zone 3). Leider ist QGIS Standard CRS WGS84 und ich bekomme Probleme mit den Einheiten und der Waage.
Mein erster Ansatz war die Verwendung dieses Codes:
my_crs = core.QgsCoordinateReferenceSystem(31467, core.QgsCoordinateReferenceSystem.EpsgCrsId)
self.iface.mapCanvas().mapRenderer().setDestinationCrs(my_crs)
Dies ändert (nachdem die Daten bereits visualisiert wurden) das CRS in Gauss Krueger Zone 3. Zumindest der Espg-Code in der unteren rechten Ecke hat sich geändert. Die Einheiten sind immer noch in Grad und die Skala ist völlig falsch. 1: 5000 in Gauß Krüger ist 1: 528822376 in WGS 84 (in meinem Fall in QGIS). Nach dem manuellen Einstellen des Projekt-CRS in den Eigenschaften ist das Projekt-CRS wirklich GK3 und der Maßstab und die Einheiten stimmen.
Meine Frage ist also, kann ich das Projekt CRS anders einstellen, als ich es getan habe? Ich möchte den manuellen Weg vermeiden.
Ich habe das Problem durch Hinzufügen des folgenden Codes gelöst:
qgis.utils.iface.mapCanvas().setMapUnits(0)
qgis.utils.iface.mapCanvas().refresh()
Dadurch werden die Einheiten auf Meter eingestellt und die Waage wird automatisch aktualisiert. Die 0 steht für Meter, 1 für Fuß, 2 für Grad und 3 für Unbekannt.