定義
ST_InteriorRingN は、ポリゴンの n 番目の内部リングを ST_LineString として返します。
リングの順序は事前に定義できません。リングは、幾何学的な向きではなく、内部のジオメトリ検証ルーチンによって定義された規則に従って編成されるためです。インデックスがポリゴンが持つ内部リングの数を超えた場合、NULL 値が返されます。
構文
Oracle
sde.st_interiorringn (polygon1 sde.st_polygon, INDEX integer)
PostgreSQL
sde.st_interiorringn (polygon1 sde.st_polygon, ring_number integer)
SQLite
st_interiorringn (polygon1 sde.st_polygon, ring_number int32)
戻り値のタイプ
ST_LineString
例
sample_polys テーブルを作成し、レコードを追加します。次に、内部リングの ID とジオメトリを選択します。
Oracle
CREATE TABLE sample_polys (
id integer,
geometry sde.st_geometry
);
INSERT INTO sample_polys VALUES (
1,
sde.st_polygon ('polygon ((40 120, 90 120, 90 150, 40 150, 40 120), (50 130, 60 130, 60 140, 50 140, 50 130),
(70 130, 80 130, 80 140, 70 140, 70 130))', 4326)
);
SELECT id, sde.st_astext (sde.st_interiorringn (geometry, 2)) Interior_Ring
FROM SAMPLE_POLYS;
ID INTERIOR_RING
1 LINESTRING (70.00000000 130.00000000, 70.00000000 140.00000000, 80.00000000 140.00000000, 80.00000000 130.00000000, 70.00000000 130.00000000)
PostgreSQL
CREATE TABLE sample_polys (
id serial,
geometry sde.st_geometry
);
INSERT INTO sample_polys (geometry) VALUES (
sde.st_polygon ('polygon ((40 120, 90 120, 90 150, 40 150, 40 120), (50 130, 60 130, 60 140, 50 140, 50 130),
(70 130, 80 130, 80 140, 70 140, 70 130))', 4326)
);
SELECT id, sde.st_astext (st_interiorringn (geometry, 2))
AS Interior_Ring
FROM sample_polys;
id interior_ring
1 LINESTRING (70 130, 70 140, 80 140, 80 130, 70 130)
SQLite
CREATE TABLE sample_polys (
id integer primary key autoincrement not null
);
SELECT AddGeometryColumn (
NULL,
'sample_polys',
'geometry',
4326,
'polygon',
'xy',
'null'
);
INSERT INTO sample_polys (geometry) VALUES (
st_polygon ('polygon ((40 120, 90 120, 90 150, 40 150, 40 120), (50 130, 60 130, 60 140, 50 140, 50 130),
(70 130, 80 130, 80 140, 70 140, 70 130))', 4326)
);
SELECT id, st_astext (st_interiorringn (geometry, 2))
AS "Interior_Ring"
FROM sample_polys;
id Interior_Ring
1 LINESTRING (70.00000000 130.00000000, 70.00000000 140.00000000, 80.00000000 140.00000000, 80.00000000 130.00000000, 70.00000000 130.00000000)