QGIS API: 表示範囲の設定

表示範囲をプログラム側から制御したいことはよくあると思います。
QGIS APIでは簡単に表示範囲を設定することができ、
大体以下のようなコードになるかと思います。

  # xL、yBは左下座標、xR、yTは右上座標
  # rect = QgsRect( QgsPoint( xL, yB ), QgsPoint( xR, yT ) ) ← v0.9
  rect = QgsRectangle( QgsPoint( xL, yB ), QgsPoint( xR, yT ) )
  
  # canvasはQgsMapCanvasクラス
  canvas.setExtent( rect )
  canvas.refresh()

点要素の周辺を表示するには

2008年11月19日の記事
QgsVectorLayer::zoomToSelected()は点要素の場合は拡大しすぎてしまうと
書きましたが、上のコードを使って点要素の周辺の範囲を表示させることができます。

大体以下のようにすると良いでしょう。
以下の例は選択された要素の周辺を表示するものです。

  # layerはQgsVectorLayerクラス
  # とりあえず選択された要素は1つだけとする
  sel = layer.selectedFeatures()[0]
  
  geometry = sel.geometry()
  pnt = geometry.asPoint()
  
  # 選択された点の周辺50を表示する
  # rect = QgsRect( QgsPoint( pnt.x()-50, pnt.y()-50 ),
  #                 QgsPoint( pnt.x()+50, pnt.y()+50 ) )
  # ↑v0.9
  
  rect = QgsRectangle( QgsPoint( pnt.x()-50, pnt.y()-50 ),
                       QgsPoint( pnt.x()+50, pnt.y()+50 ) )
  
  canvas.setExtent( rect )
  canvas.refresh()


実行例

実行例

アーカイブ