ST_Dimension
定義
ST_Dimension は、ジオメトリ オブジェクトのディメンション(次元)を返します。この場合、ディメンションとは長さと幅のことを指しています。たとえば、ポイントには長さも幅もないため、ディメンションは 0 になります。ラインには長さはあるものの幅がないため、ディメンションは 1 になります。
構文
Oracle および PostgreSQL
sde.st_dimension (geometry1 sde.st_geometry)
SQLite
st_dimension (geometry1 geometryblob)
戻り値のタイプ
Integer
例
geotype および g1 列を持つ dimension_test テーブルを作成します。geotype 列には、g1 ジオメトリ列に格納されるサブクラスの名前を格納します。
SELECT ステートメントは、geotype 列に格納されているサブクラス名と、その geotype のディメンションをリストします。
Oracle
CREATE TABLE dimension_test (
geotype varchar(20),
g1 sde.st_geometry
);
INSERT INTO DIMENSION_TEST VALUES (
'Point',
sde.st_pointfromtext ('point (10.02 20.01)', 4326)
);
INSERT INTO DIMENSION_TEST VALUES (
'Linestring',
sde.st_linefromtext ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO DIMENSION_TEST 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))', 4326)
);
INSERT INTO DIMENSION_TEST VALUES (
'Multipoint',
sde.st_mpointfromtext ('multipoint (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO DIMENSION_TEST 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))', 4326)
);
INSERT INTO DIMENSION_TEST 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)))', 4326)
);
SELECT geotype, sde.st_dimension (g1) Dimension
FROM DIMENSION_TEST;
GEOTYPE Dimension
Point 0
Linestring 1
Polygon 2
Multipoint 0
Multilinestring 1
Multipolygon 2
PostgreSQL
CREATE TABLE dimension_test (
geotype varchar(20),
g1 sde.st_geometry
);
INSERT INTO dimension_test VALUES (
'Point',
sde.st_point ('point (10.02 20.01)', 4326)
);
INSERT INTO dimension_test VALUES (
'Linestring',
sde.st_linestring ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO dimension_test VALUES (
'Polygon',
sde.st_polygon ('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01))', 4326)
);
INSERT INTO dimension_test VALUES (
'Multipoint',
sde.st_multipoint ('multipoint (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO dimension_test VALUES (
'Multilinestring',
sde.st_multilinestring ('multilinestring ((10.02 20.01, 10.32 23.98, 11.92 25.64), (9.55 23.75, 15.36 30.11))', 4326)
);
INSERT INTO dimension_test VALUES (
'Multipolygon',
sde.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)))', 4326)
);
SELECT geotype, sde.st_dimension (g1)
AS Dimension
FROM dimension_test;
geotype dimension
Point 0
Linestring 1
Polygon 2
Multipoint 0
Multilinestring 1
Multipolygon 2
SQLite
CREATE TABLE dimension_test (
geotype varchar(20)
);
SELECT AddGeometryColumn (
NULL,
'dimension_test',
'g1',
4326,
'geometry',
'xy',
'null'
);
INSERT INTO dimension_test VALUES (
'Point',
st_point ('point (10.02 20.01)', 4326)
);
INSERT INTO dimension_test VALUES (
'Linestring',
st_linestring ('linestring (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO dimension_test 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))', 4326)
);
INSERT INTO dimension_test VALUES (
'Multipoint',
st_multipoint ('multipoint (10.02 20.01, 10.32 23.98, 11.92 25.64)', 4326)
);
INSERT INTO dimension_test 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))', 4326)
);
INSERT INTO dimension_test 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)))', 4326)
);
SELECT geotype, st_dimension (g1)
AS "Dimension"
FROM dimension_test;
geotype Dimension
Point 0
Linestring 1
Polygon 2
Multipoint 0
Multilines 1
Multipolyg 2
関連トピック
5/25/2014