LoginSignup
0
0

More than 5 years have passed since last update.

【PostGIS】【SpatiaLite】WKTのPOLYGONの頂点を時計回りに記述して正しく動作するか

Posted at

目的

WKT(Well-known text)ではPOLYGONの外側を構成する頂点は反時計回りに書くのがOGC標準で定められているとのこと(WikipediaのWKTの記事より)。
でも、常に反時計回りに頂点を書くのが大変なので、時計回りでも正しく動くか簡単に試してみた。

確認したバージョン

PostGIS 2.1.3、 SpatiaLite 4.3.0aで確認

方法

以下のSQLをPostGIS、SpatiaLiteで実行する。
clockwise_intersectscounterclockwise_intersectsの両者がtrueに相当する値を返すことを期待する。

SELECT
    ST_Intersects(clockwise, point) AS clockwise_intersects,
    ST_Intersects(counterclockwise, point) AS counterclockwise_intersects
FROM
(
    SELECT
        ST_GeomFromText('POLYGON ((0 1, 1 1, 1 0, 0 0, 0 1))') AS clockwise,
        ST_GeomFromText('POLYGON ((0 1, 0 0, 1 0, 1 1, 0 1))') AS counterclockwise,
        ST_GeomFromText('POINT (0.5 0.5)') AS point
) AS t
;

結果

PostGIS 2.1.3

出力
 clockwise_intersects | counterclockwise_intersects
----------------------+-----------------------------
 t                    | t
(1 行)

両者ともtrueが返された。期待通り!

SpatiaLite 4.3.0a

出力
clockwise_intersects    counterclockwise_intersects
1   1

どちらもtrueに相当する1が返された。期待通り!

まとめ

  • WKTでPOLYGONを記述する際、外側の頂点を反時計回り、時計回りの両方で与えてみた。
  • ST_Intersects()関数の引数とする限り、時計回り/反時計回りとも正しく動作した。
  • 今後、正しく動作しないケースが見つかった場合はここでお知らせしたい。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0