LoginSignup
1
0

More than 5 years have passed since last update.

【SpatiaLite】ジオメトリの頂点数を返すST_NPoints関数の例

Last updated at Posted at 2018-06-07

一番単純な例。

SELECT
    ST_NPoints(
        GeomFromText(
            'POINT(0 0)',
            0
        )
    ) AS ST_NPoints
;
-- 1

LINESTRINGは、それを構成する点の数を返す。

SELECT
    ST_NPoints(
        GeomFromText(
            'LINESTRING(0 0, 1 1)',
            0
        )
    ) AS ST_NPoints
;
-- 2

MULTI~系のジオメトリは、含まれるジオメトリそれぞれの頂点数の合計を返す。

SELECT
    ST_NPoints(
        GeomFromText(
            'MULTIPOINT((0 0), (1 1))',
            0
        )
    ) AS ST_NPoints
;
-- 2

SELECT
    ST_NPoints(
        GeomFromText(
            'MULTILINESTRING((0 0, 1 1), (2 2, 2 3, 2 5))',
            0
        )
    ) AS ST_NPoints
;
-- 5

注意が必要なのがPOLYGONで、リングを閉じるために始点と終点で同じ頂点を二度記述するため、そこが二重カウントされる。
以下の例では、三角形を与えているが(0, 0)が二重カウントされるので、ST_NPointsの戻り値としては4となる。

SELECT
    ST_NPoints(
        GeomFromText(
            'POLYGON((0 0, 1 1, 0 1, 0 0))',
            0
        )
    ) AS ST_NPoints
;
-- 4

GEOMETRYCOLLECTIONMULTI~と同様に、含まれるジオメトリの頂点数の合計を返す。

SELECT
    ST_NPoints(
        GeomFromText(
            'GEOMETRYCOLLECTION('            ||
                'MULTIPOINT((0 4), (7 8)), ' ||
                'LINESTRING(2 3, 10 11)'     ||
            ')',
            0
        )
    ) AS ST_NPoints
;
-- 4
1
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
1
0