QGISを使用して、選択したポリゴンの境界ボックス座標を計算します


17

郡ポリゴンの境界ボックス座標を手動で(そして多少不正確に確信しています)取得しました。郡ポリゴンは、郡形状のより大きなレイヤーからの選択です。QGISプラグインまたは他の関数を使用して、これを手作業ではなく迅速に計算できるようにしたいと思います。これはほぼ確実に可能ですが、Google検索で何も見つかりませんでした

回答:


26

次の小さなPython関数は、現在アクティブな機能の境界ボックス座標を出力します。

def printBB():
    feature = iface.activeLayer().selectedFeatures()[0]
    print feature.geometry().boundingBox().toString()

関数を定義するには、[プラグイン]メニューからPythonコンソールを開き、3行をコピーしてコンソールに貼り付け、Enterキーを押します。次にprintBB()、目的の機能が選択されているときにEnter キーを押して、関数を呼び出すことができます。


1
私はこのスクリプトを実行しようとすると、私はこのエラーを取得する: File "<input>", line 4 printBB() ^ SyntaxError: invalid syntax
cbunn

@cbunnレイヤー/コンテンツウィンドウでレイヤーが選択されていることを確認してください-これには非常に敏感です!
DPSS

助けてくれてありがとう。呼び出す前に関数printBB()を完全に定義するためにEnterキーを押すのを忘れていました。
cbunn

2
3行目にprint(feature.geometry()。boundingBox()。toString())を使用する必要がありました。–
cm1

16

QGISは、レイヤーエクステントからポリゴンを介してそれを行うことができます

ベクトル-研究ツール-レイヤー範囲からのポリゴン

XMIN XMAX YMIN YMAX AREA WIDTH HEIGHTのような属性を持つ新しいシェープファイルを作成します


1
確認Use only selected obectscalculate for every objectて、目的の結果を取得する必要があります。
アンドレイ

うーん、私にとっては
うまくいき

1
オブジェクトが選択されている場合にのみ、[選択したオブジェクトのみを使用する]をオンにします。これらのフィールドを両方ともチェックせずに残し、素晴らしい結果を得ました。
ヨハンナ

4

PythonのPyShpプラグインを使用してこれを行うこともできます。

import shapefile

sf = shapefile.Reader("Path to shapefile...") 
shapes = sf.shapes() 
bbox = shapes[0].bbox # Retrieves the bounding box of the first shape

print bbox # Will print the bounding box coordinates

PyShpおよびその他の機能の詳細については、こちらをご覧ください


3

多くのポリゴンのバウンディングボックスが必要な場合、WRITE_BBOX = YESオプションを使用して、GeoJSONにレイヤーを「名前を付けて保存」できます。マルチポリゴンの場合でも、「ジオメトリ」属性の前に単一の「bbox」属性があります。

..., "bbox": [ -70.062408006999874, 12.417669989000046, -69.876820441999939, 12.632147528000104 ], "geometry": ...

1

他の場所でリストとしてインポートできるフィールドを生成するには、これを行う必要がありました。

  1. QGISプラグインFieldPyculatorをインストールする
  2. レイヤーの編集を切り替える
  3. bbox(編集を保存)などの文字列として属性テーブルに新しい列を作成します
  4. FieldPyculatorを開く
  5. 更新フィールドをbboxに設定
  6. [フィールド式]に次のように入力します。

    bb = $geom.boundingBox().toString()

    bb = bb.replace(' ','')

    bb = bb.replace(':',',')

    value = bb

  7. 走る

  8. 編集をオフにしてレイヤーを保存

1

簡単にアクセスできるようにするためのオプションは、bbox座標を属性テーブルに保持することです。

  • トゥール編集モード
  • フィールド計算機を起動する
  • 新しいフィールドの作成、名前(xminなど)、タイプ(10進数)、長さ、(精度)の設定
  • 式:x_min($ geometry)
  • LEFT座標を持つ属性テーブルの新しいフィールドを取得します。

    式を使用して、RIGHT、BOTTOM、TOPに対してこれを繰り返します。

  • x_max($ geometry)
  • y_min($ geometry)
  • y_max($ geometry)
  • 結果の例 ここに画像の説明を入力してください

    次に、機能が変更されたときにこれらのフィールドを自動的に更新するようにAutoFieldsプラグインを設定できます

    弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
    Licensed under cc by-sa 3.0 with attribution required.