Czy można ustawić CRS projektu w QGIS za pomocą komendy Python?
W moim przypadku użytkownik powinien otworzyć QGIS, uruchomić moją pisemną wtyczkę, a ta wtyczka załaduje dane przestrzenne, które mają kod epsg 31467 (Gauss Krueger Zone 3). Niestety domyślnym CRS QGIS jest WGS84, więc mam kłopoty z jednostkami i skalą.
Moje pierwsze podejście polegało na użyciu tego kodu:
my_crs = core.QgsCoordinateReferenceSystem(31467, core.QgsCoordinateReferenceSystem.EpsgCrsId)
self.iface.mapCanvas().mapRenderer().setDestinationCrs(my_crs)
Zmienia się (po wizualizacji danych) CRS na Gauss Krueger Zone 3. Przynajmniej kod espg w prawym dolnym rogu się zmienił. Jednostki są nadal w stopniach, a skala jest całkowicie błędna. 1: 5000 w Gaussu Krügerze to 1: 528822376 w WGS 84 (w moim przypadku w QGIS). Po ręcznym ustawieniu CRS projektu we właściwościach crs projektu to tak naprawdę GK3, a skala i jednostki mają rację.
Więc moje pytanie brzmi: czy mogę ustawić projekt CRS w inny sposób niż to zrobiłem? Chcę uniknąć sposobu ręcznego.
Rozwiązałem problem, dodając następujący kod:
qgis.utils.iface.mapCanvas().setMapUnits(0)
qgis.utils.iface.mapCanvas().refresh()
Spowoduje to ustawienie jednostek na metry, a waga zostanie automatycznie zaktualizowana. 0 oznacza metry, 1 oznacza stopę, 2 oznacza stopień, a 3 - nieznany.
Użyj tego:
źródło
my_crs=QgsCoordinateReferenceSystem(4326)
:)