Est-il possible de définir le projet CRS d'un projet dans QGIS via une commande Python?
Dans mon cas, l'utilisateur doit ouvrir QGIS, démarrer mon plugin écrit et ce plugin chargera les données spatiales qui ont le code epsg 31467 (Gauss Krueger Zone 3). Malheureusement, le CRS par défaut de QGIS est le WGS84 et j'ai donc des problèmes avec les unités et l'échelle.
Ma première approche a été d'utiliser ce code:
my_crs = core.QgsCoordinateReferenceSystem(31467, core.QgsCoordinateReferenceSystem.EpsgCrsId)
self.iface.mapCanvas().mapRenderer().setDestinationCrs(my_crs)
Cela change (une fois les données déjà visualisées) le CRS en Gauss Krueger Zone 3. Au moins le code espg dans le coin inférieur droit a changé. Les unités sont toujours en degrés et l'échelle est totalement fausse. 1: 5000 dans Gauss Krüger est 1: 528822376 dans WGS 84 (dans mon cas dans QGIS). Après avoir défini le projet CRS manuellement dans les propriétés, le projet CRS est vraiment GK3 et l'échelle et les unités sont correctes.
Donc ma question est, puis-je définir le projet CRS d'une autre manière que je l'ai fait? Je veux éviter la voie manuelle.
J'ai résolu le problème en ajoutant le code suivant:
qgis.utils.iface.mapCanvas().setMapUnits(0)
qgis.utils.iface.mapCanvas().refresh()
Cela définit les unités au mètre et l'échelle est mise à jour automatiquement. Le 0 signifie mètres, 1 pour pied, 2 pour degré et 3 pour inconnu.
Utilisez ceci:
la source
my_crs=QgsCoordinateReferenceSystem(4326)
:)