É possível definir o CRS do projeto de um projeto no QGIS por meio de um comando Python?
No meu caso, o usuário deve abrir o QGIS, iniciar meu plug-in escrito e este plug-in carregará dados espaciais com o código epsg 31467 (Gauss Krueger Zone 3). Infelizmente, o CRS padrão do QGIS é o WGS84 e, por isso, tenho problemas com as unidades e a balança.
Minha primeira abordagem foi usar esse código:
my_crs = core.QgsCoordinateReferenceSystem(31467, core.QgsCoordinateReferenceSystem.EpsgCrsId)
self.iface.mapCanvas().mapRenderer().setDestinationCrs(my_crs)
Isso muda (depois que os dados já são visualizados) o CRS para a Zona 3. de Gauss Krueger. Pelo menos o código espg no canto inferior direito foi alterado. As unidades ainda estão em graus e a escala está totalmente errada. 1: 5000 no Gauss Krüger é 1: 528822376 no WGS 84 (no meu caso no QGIS). Após definir o CRS do projeto manualmente nas propriedades, o crs do projeto é realmente GK3 e a balança e as unidades estão corretas.
Portanto, minha pergunta é: posso definir o CRS do projeto de outra maneira que eu fiz? Eu quero evitar o caminho manual.
Resolvi o problema adicionando o seguinte código:
qgis.utils.iface.mapCanvas().setMapUnits(0)
qgis.utils.iface.mapCanvas().refresh()
Isso define as unidades para medir e a balança é atualizada automaticamente. O 0 significa metros, 1 é para pé, 2 é para grau e 3 é desconhecido.
Usa isto:
fonte
my_crs=QgsCoordinateReferenceSystem(4326)
:)