今回は、QGISでの座標変換の方法を紹介します。
QGISでは、オンザフライで座標系が違う場合でも表示を合わせて表示してくれています。
QgsGeometryから座標を取得する場合、元々の座標での取得されます。
そのため、QgsGeometryからラバーバンドを描画すると、予期しない位置に描画されることがあります。
*プロジェクトとレイヤが同じ場合は、問題なく表示されます。
QgsCoordinateTransformを使えば、簡単に座標変換を行います。
環境:
QGIS 2.14.19
layer = iface.activeLayer() # 適当なポイントレイヤ layer_crs = layer.crs() # レイヤの座標系 canvas = self.iface.mapCanvas() renderer = canvas.mapRenderer() canvas_crs = renderer.destinationCrs() # キャンバスの座標系 crs_trans = QgsCoordinateTransform(layer_crs, canvas_crs) # 座標変換クラス (変換前座標系, 変換後座標系) features = layer.selectedFeatures() # 選択地物を取得 feature = features[0] geom = feature.geometry() # 地物からジオメトリ取得 point = geom.asPoint() # ジオメトリからポイントの取得 trans_point = crs_trans.transform(point) # ポイントの座標変換 result = geom.transform(crs_trans) # geometryの座標変換