Определение
ST_InteriorRingN возвращает n-е внутреннее кольцо полигона в виде строки ST_LineString.
Порядок колец не может быть задан заранее, так как они организуются в соответствии с правилами, определенными внутренними процедурами проверки геометрии, а не геометрической ориентацией. Если индекс превышает число внутренних колец полигона, возвращается ноль.
Синтаксис
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)