ポリゴンの重心を決定する方法は?


34

ポリゴンベクトルがあり、テキストドキュメントに挿入するためにこのポリゴンの重心をすばやく取得したい。私はQGISを使用しています。私は他の質問を検索しましたが、いくつかは少し近いですが、私の質問にまったく答えていません。

理想的には、重心座標はポリゴンの属性テーブルにあり、座標をコピーして貼り付けることができます。

重心を表す別のポイントベクトルファイルを作成し、これらの座標を見つけてコピーして貼り付ける必要はありません。


テキストドキュメントはどのような形式ですか?
ネイサンW

MS Word文書ですが、実際には何でもかまいません。
デビッド

回答:


34

重心は定義ごとにポイントレイヤーであり、ポリゴンではありません。そのため、新しいレイヤーを作成する必要があります。これは、QGIS 1.8以降のバージョンでは簡単です。

  • ポリゴンを読み込みます
  • メニュー->ベクトル->ジオメトリツール->ポリゴンセントロイドに移動し、セントロイドポイントレイヤーを作成します。
  • ->ベクトルメニュー->ジオメトリツール->ジオメトリ列のエクスポート/追加をクリックして、作成された重心の座標を属性テーブルにエクスポートします。

その後、空間結合を作成して、重心の列をポリゴンに追加し、ポイントレイヤーを再度削除します。


返信いただきありがとうございます。それでも、これは重心の座標が何であるかを知るための簡単な作業です。残念なことに、QGISには簡単な方法はありません。
デビッド

それでももっと簡単にしたい場合は、PostGISと下記のST_Centroid関数をご覧ください。これにより、一時ファイルを作成する必要がなくなります。あるいは、QGIS用のpythonスクリプトを自分で作成するか、SEXTANTE Modelerを使用することもできます。
Curlew

10

実際、新しいシェープファイルを作成することは、最も簡単なオプションの1つです。ただし、座標をコピーして貼り付ける必要はありません。これを行う:

  • Polygon Centroidsツールを使用して、図心ファイルを作成します。
  • 重心属性テーブルを開き、編集可能にします(下部の鉛筆アイコン)。
  • フィールド計算機(下部の計算機アイコン)を開き、[新しいフィールドの作成]オプションを選択して、意味のある名前(たとえば、東向き)を呼び出します。
  • 関数リストから[ジオメトリ]メニューを展開し、[$ x]を選択して、$ yの新しい列で繰り返します(たとえば、Northingと呼びます)。
  • 編集を保存すると、重心ツールを使用した場合、元のポリゴンIDと属性を備えた属性テーブルの一部としてすべての座標が得られます。

または、データをPostGISにインポートしてから、ST_Centroid関数を使用してポリゴンを反復処理し、結果を新しいフィールドに保存する必要があります。関連する作業はほぼ同じですが、2番目のオプションは、別のセントロイドポイントファイルがないことを意味します。


答えてくれてありがとう。私はあなたの助けに感謝します。Curlewの答えは私にとって少し簡単なようです。それでも、これらの答えは両方とも、私が望んでいたより多くの仕事です。最終的には、名前を付けたり、削除したり、編集したりする必要があるさまざまなシェープファイルが作成されます。
David


6

2.2 Field Calculatorでこれを使用してはどうですか?

ロングフィールド= substr(geomToWKT(centroid($ geometry))、7、12)

緯度フィールド= substr(geomToWKT(centroid($ geometry))、strpos(geomToWKT(centroid($ geometry))、 '')+2、12)

これはxminオプションxmin(centroid($ geometry))で2.6で対処されているようです


5

5年近く遅れてこの投稿に出会いました(!)が、バージョン2.18.14でポリゴンの重心を計算するために次のようにしています。

  1. ポリゴンレイヤーの編集を開始
  2. 新しいテキストフィールドを作成し、centroidxyと呼びます
  3. フィールド計算機を使用して、centroidxy = x($ geometry)||を計算します '、' || y($ geometry)
  4. 結果は次のようになります:397640.915545362、2126924.53637653
  5. 編集を保存します。
  6. ポリゴンレイヤーに、x、y重心値を持つフィールドが含まれるようになりました

シンプルで素晴らしい
和人

3

重心ポイントテーブルを多角形のテーブルに関連付けてから、座標を多角形の名前と形状で出力します。ポリゴンには、1つの緯度がありません。


ご回答有難うございます。はい、ポリゴンには1つの長い緯度がなく、それ自体が単に計算可能なものであることがわかります。残念ながら、QGISではこれは簡単ではありません。答えてくれてありがとう。とても速い。ありがとう!
デビッド

2

この投稿に出くわして、フォローするのは困難でした、更新を提案しました:

注:これにより、投影座標の緯度と経度(メートル)が計算されます。10進度の座標が必要な場合(または、ほとんど理解できないと仮定して)、最初にこのCRSにレイヤーを保存します:EPSG:4326、WGS 84。

  1. オープンフィールド電卓
  2. 新しいフィールドを作成
  3. 名前を入力してください(緯度または経度)
  4. 出力フィールドタイプとして10進数を選択
  5. 緯度には次の式を入力します:y($ geometry)経度には次の式を入力します:x($ geometry)
  6. OKを押す

-2

lon = ToReal(regexp_substr(geomToWKT(centroid($ geometry))、 '([\ s]'))lat = ToReal(regexp_substr(geomToWKT(centroid($ geometry))、 '\ s [)]'))


1
これはまったく答えではありません。...どのように質問に答えるために、より良い理解を得るためにツアーをご覧ください
ナイトウォッチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.