ポイントとポリゴンの最も近い部分の間の距離と方位を取得する方法は?


9

SQLを記述してPostGISを使用するのはかなり新しいので、これが少し単純または明白に思える場合は謝罪してください。postGISデータベースに保持されているポリゴンフィーチャのテーブルがあり、SQLクエリを作成して、すべての属性、距離、および事前定義されたポイントの特定の距離内のポリゴンフィーチャの方向を選択する必要があります。(ST_Distanceを使用して)フィーチャを選択して距離を計算することができましたが、方位を取得する方法がわかりません。

これは私がこれまで使ってきたスクリプトです:

SELECT *,
  ST_Distance (Geometry, ST_GeomFromText ('POINT(292596 90785)', 27700))
FROM mytable
WHERE
  ST_DWithin(
    Geometry,
    ST_GeomFromText('POINT(292596 90785)', 27700),
    250) 

フィーチャの方位と距離を計算するにはどうすればよいですか?

回答:


4

ST_Azimuthを使用して方位を計算できますが、パラメーターとしてポイントジオメトリのみを使用するため、本当に必要な方位を決定する必要があります。

@Nicklasが提案したように最短のラインを選択することもできます(これは、すでに計算した距離のラインです)。これは、ポリゴンに到達するために最速の「方向」が必要な場合に意味があります。それ以外の場合は、ポリゴンの重心(ST_Centroid)に対して計算することをお勧めします。これにより、任意の形状に対してより良い結果が得られます。


2

使用する

ST_Azimuth(ST_Shortestline(geom1、geom2))

編集する

ST_Azimuthは線ストリングを引数として取らないので、代わりに2つのポイントを与える必要があることに気づきました。

ジオメトリの1つがポイントの場合、それを直接使用し、ST_ClosestPointを使用してポリゴン上のポイントを取得できます。


1

ST_Azimuthは必要な関数です。北から時計回りにラジアンで角度返します。ST_Azimuth()ページのサンプルが示すように、それをdegrees()関数でラップするだけで、必要な場合は角度が度単位で表示されます。

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