bugfix> geospatial > 投稿

ポリゴン内に(部分的に)存在する地理空間オブジェクトを見つけようとする特異な状況に遭遇しました。 ST_Intersect を適用するときを使用する2つのジオメトリの関数WGS84 SRID 多角形と明らかに多角形の北のポイントの交差点は FALSE を返します予想通り:

SELECT ST_Intersects(
    ST_GeomFromText('POLYGON((-12 0,12 0,12 50.7,-12 50.7,-12 0))', 4326), 
    ST_GeomFromText('POINT(6.0 50.9)', 4326)
);


今、この同じクエリを実行しますが、ジオメトリではなく2つの地理を使用すると、クエリは TRUE を返します :

SELECT ST_Intersects( 
    ST_GeogFromText('POLYGON((-12 0,12 0,12 50.7,-12 50.7,-12 0))'),
    ST_GeogFromText('POINT(6 50.9)')
);

私は期待しています地理バージョン 使用する最短大円距離 ポリゴンを作成し、ジオメトリバージョン 平面上にポリゴンを作成してから、これをWGS84 楕円。

誰かが私の疑いを確認したり、だますことができますか?

PostGis 2.4.4でPostgresql 9.6を実行しています

回答 1 件
  • geography の操作  データ型は球体上で行われます。 geometry の操作  データ型は平面上で行われます。

    平面上の2点を結ぶ最短線は直線です。

    球上の2点を結ぶ最短線は円弧です。この弧は大円弧と呼ばれ、2点と地球の中心を通る計画で球体を交差させることによって構築されます。

    その結果、アークは-12;50.7Nおよび+12;50.7Nを通り、0;51.3N付近の点を通過します。これは、ラインだけでなくポリゴン境界にも当てはまります。

    このドキュメントには、 geography の背後にある概念を理解するための興味深いグラフィックがいくつかあります。  タイプ

あなたの答え