Python 명령을 통해 QGIS에서 프로젝트의 프로젝트 CRS를 설정할 수 있습니까?
필자의 경우 사용자는 QGIS를 열고 작성된 플러그인을 시작하면이 플러그인은 epsg 코드 31467 (Gauss Krueger Zone 3)이있는 공간 데이터를로드합니다. 불행히도 QGIS 기본 CRS는 WGS84이므로 단위 및 스케일에 문제가 있습니다.
내 첫 번째 접근 방식은이 코드를 사용하는 것입니다.
my_crs = core.QgsCoordinateReferenceSystem(31467, core.QgsCoordinateReferenceSystem.EpsgCrsId)
self.iface.mapCanvas().mapRenderer().setDestinationCrs(my_crs)
이것은 데이터가 이미 시각화 된 후 CRS를 Gauss Krueger Zone 3으로 변경합니다. 적어도 오른쪽 하단의 espg 코드가 변경되었습니다. 단위는 여전히도이며 스케일은 완전히 잘못되었습니다. Gauss Krüger의 1 : 5000은 WGS 84 (제 경우 QGIS)의 1 : 528822376입니다. 속성에서 프로젝트 CRS를 수동으로 설정 한 후 프로젝트 crs는 실제로 GK3이며 스케일과 단위가 맞습니다.
그래서 제 질문은 프로젝트 CRS를 다른 방식으로 설정할 수 있습니까? 수동 방법을 피하고 싶습니다.
다음 코드를 추가하여 문제를 해결했습니다.
qgis.utils.iface.mapCanvas().setMapUnits(0)
qgis.utils.iface.mapCanvas().refresh()
단위를 미터로 설정하고 스케일이 자동으로 업데이트됩니다. 0은 미터, 1은 발, 2는 정도, 3은 알 수 없음을 나타냅니다.