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コードが変更されました。単位はまだ度数であり、スケールは完全に間違っています。GaussKrügerでの1:5000はWGS 84で1:528822376です(私の場合はQGIS)。プロパティでプロジェクトCRSを手動で設定した後、プロジェクトcrsは実際にはGK3であり、スケールと単位は正しいです。
だから私の質問は、プロジェクトCRSを私が行った方法とは別の方法で設定できますか?手動の方法は避けたい。
次のコードを追加して問題を解決しました:
qgis.utils.iface.mapCanvas().setMapUnits(0)
qgis.utils.iface.mapCanvas().refresh()
これにより、単位がメートルに設定され、スケールが自動的に更新されます。0はメートル、1は足、2は度、3は不明を表します。