ST_ExteriorRing
定義
ST_ExteriorRing は、ポリゴンの外部リングをラインストリングとして返します。
構文
sde.st_exteriorring (polygon1 sde.st_geometry)
Oracle および PostgreSQL
sde.st_exteriorring (polygon1 sde.st_geometry)
SQLite
st_exteriorring (polygon1 geometryblob)
戻り値のタイプ
ST_LineString
例
複数の島で鳥の生息数を調査している鳥類学者は、目的の鳥類の餌場が海岸線に限定されることを知っています。島の扶養能力を計算する上で、鳥類学者は島の周長を知る必要があります。島の中には、非常に広大で複数の湖がある島もあります。しかし、湖の縁は攻撃的な別の鳥類が独占しています。そのため、鳥類学者が必要なのは、島の外部リングの周長だけです。
islands テーブルの ID と name 列は各島を識別します。land ポリゴン列は島のジオメトリを格納します。
ST_ExteriorRing 関数は、各島のポリゴンの外部リングをラインストリングとして抽出します。ラインストリングの長さは、ST_Length 関数によって計算されます。ラインストリングの長さは、SUM 関数によって合計されます。
島の外部リングは、各島が海と共有する生態環境インタフェースを表します。
Oracle
--Create the table and insert two polygons.
CREATE TABLE islands (
id integer,
name varchar(32),
land sde.st_geometry
);
INSERT INTO islands VALUES (
1,
'Bear',
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)
);
INSERT INTO islands VALUES (
2,
'Johnson',
sde.st_polygon ('polygon ((10 10, 50 10, 10 30, 10 10))', 4326)
);
--Extract the exterior ring from each island and find its length.
SELECT SUM (sde.st_length (sde.st_exteriorring (land)))
FROM ISLANDS;
SUM(ST_LENGTH(ST_EXTERIORRING(LAND)))
264.72136
PostgreSQL
--Create the table and insert two polygons.
CREATE TABLE islands (
id serial,
name varchar(32),
land sde.st_geometry
);
INSERT INTO islands (name, land) VALUES (
'Bear',
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)
);
INSERT INTO islands (name, land) VALUES (
'Johnson',
sde.st_polygon ('polygon ((10 10, 50 10, 10 30, 10 10))', 4326)
);
--Extract the exterior ring from each island and find its length.
SELECT SUM (sde.st_length (sde.st_exteriorring (land)))
FROM islands;
sum
264.721359549996
SQLite
--Create the table and insert two polygons.
CREATE TABLE islands (
id integer primary key autoincrement not null,
name varchar(32)
);
SELECT AddGeometryColumn (
NULL,
'islands',
'land',
4326,
'polygon',
'xy',
'null'
);
INSERT INTO islands (name, land) VALUES (
'Bear',
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)
);
INSERT INTO islands (name, land) VALUES (
'Johnson',
st_polygon ('polygon ((10 10, 50 10, 10 30, 10 10))', 4326)
);
--Extract the exterior ring from each island and find its length.
SELECT SUM (st_length (st_exteriorring (land)))
FROM islands;
sum
264.721359549996
関連トピック
5/25/2014