ST_Boundary
定義
ST_Boundary は、ジオメトリ オブジェクトを入力として、その結合された境界をジオメトリ オブジェクトとして返します。
構文
sde.st_boundary (g1 sde.st_geometry)
戻り値のタイプ
ST_Geometry
例
この例では、varchar として定義される type と、スーパークラス ST_Geometry として定義される geometry という 2 つの列を持つ boundaries テーブルを作成します。それに続く INSERT ステートメントは、それぞれのサブクラス ジオメトリに対して 1 つのレコードを追加します。ST_Boundary 関数は、geometry 列に格納された各サブクラスの境界を取得します。結果のジオメトリのディメンションは、入力ジオメトリより常に 1 つ少なくなることに注意してください。ポイントおよびマルチポイントは、常に空のジオメトリの境界(ディメンション -1)になります。ラインストリングとマルチラインストリングは、マルチポイント境界(ディメンション 0)を返します。ポリゴンまたはマルチポリゴンは、常にマルチラインストリング境界(ディメンション 1)を返します。
Oracle
CREATE TABLE boundaries (geotype varchar(20), geometry sde.st_geometry); INSERT INTO BOUNDARIES VALUES ( 'Point', sde.st_pointfromtext ('point (10.02 20.01)', 0) ); INSERT INTO BOUNDARIES VALUES ( 'Linestring', sde.st_linefromtext ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 0) ); INSERT INTO BOUNDARIES VALUES ( 'Polygon', sde.st_polyfromtext ('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01))', 0) ); INSERT INTO BOUNDARIES VALUES ( 'Multipoint', sde.st_mpointfromtext ('multipoint (10.02 20.01, 10.32 23.98, 11.92 25.64)', 0) ); INSERT INTO BOUNDARIES VALUES ( 'Multilinestring', sde.st_mlinefromtext ('multilinestring ((10.02 20.01, 10.32 23.98, 11.92 25.64), (9.55 23.75, 15.36 30.11))', 0) ); INSERT INTO BOUNDARIES VALUES ( 'Multipolygon', sde.st_mpolyfromtext ('multipolygon (((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01), (51.71 21.73,73.36 27.04,71.52 32.87, 52.43 31.90, 51.71 21.73)))', 0) ); SELECT type, sde.st_astext (sde.st_boundary (geometry)) "The boundary" FROM BOUNDARIES; GEOTYPE The boundary Point POINT EMPTY Linestring MULTIPOINT(10.02000000 20.01000000, 11.92000000 25.64000000) Polygon MULTILINESTRING ((10.02000000 20.01000000, 19.15000000 33.94000000,25.02000000 34.15000000, 11.92000000 35.64000000, 10.02000000 20.01000000)) Multipoint POINT EMPTY Multilinestring MULTIPOINT (9.55000000 23.75000000, 10.02000000 20.01000000, 11.92000000 25.64000000, 15.36000000 30.11000000) Multipolygon MULTILINESTRING((51.71000000 21.73000000, 73.36000000 27.04000000, 71.52000000 32.87000000, 52.43000000 31.90000000, 51.71000000 21.73000000), (10.02000000 20.01000000, 19.15000000 33.94000000, 25.02000000 34.15000000, 11.92000000 35.64000000, 10.02000000 20.01000000))
PostgreSQL
CREATE TABLE boundaries (type varchar(20), geometry st_geometry); INSERT INTO boundaries VALUES ( 'Point', st_point ('point (10.02 20.01)', 0) ); INSERT INTO boundaries VALUES ( 'Linestring', st_linestring ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 0) ); INSERT INTO boundaries VALUES ( 'Polygon', st_polygon ('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01))', 0) ); INSERT INTO boundaries VALUES ( 'Multipoint', st_multipoint ('multipoint (10.02 20.01, 10.32 23.98, 11.92 25.64)', 0) ); INSERT INTO boundaries VALUES ( 'Multilinestring', st_multilinestring ('multilinestring ((10.02 20.01, 10.32 23.98, 11.92 25.64), (9.55 23.75, 15.36 30.11))', 0) ); INSERT INTO boundaries VALUES ( 'Multipolygon', st_multipolygon ('multipolygon (((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01), (51.71 21.73, 73.36 27.04, 71.52 32.87, 52.43 31.90, 51.71 21.73)))', 0) ); SELECT type, st_astext (st_boundary (geometry)) AS "The boundary" FROM boundaries; type The boundary Point EMPTY Linestring MULTIPOINT(10.02000000 20.01000000, 11.92000000 25.64000000) Polygon LINESTRING ((10.02000000 20.01000000, 19.15000000 33.94000000,25.02000000 34.15000000, 11.92000000 35.64000000, 10.02000000 20.01000000)) Multipoint EMPTY Multilinestring MULTIPOINT (9.55000000 23.75000000, 10.02000000 20.01000000, 11.92000000 25.64000000, 15.36000000 30.11000000) Multipolygon MULTILINESTRING((51.71000000 21.73000000, 73.36000000 27.04000000, 71.52000000 32.87000000, 52.43000000 31.90000000, 51.71000000 21.73000000), (10.02000000 20.01000000, 19.15000000 33.94000000, 25.02000000 34.15000000, 11.92000000 35.64000000, 10.02000000 20.01000000))
3/6/2012