Oracle Spatial定义空间参考系(三、测试)
•GIS
727
0
前面两篇文章,介绍了如何添加地理坐标系(SRID=4490)和投影坐标系(SRID=4525)。
下面测试投影坐标(SRID=4525)是否有效。
select * from MDSYS.CS_SRS where SRID = 4525;
create table
TEST_SRID_4525_POINT
(
GID NUMBER(10), -- 要素ID
GEOM SDO_GEOMETRY -- 几何信息
);
insert into
MDSYS.USER_SDO_GEOM_METADATA
(TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)
values
(
'TEST_SRID_4525_POINT', -- 数据表名称
'GEOM', -- 几何字段名称
SDO_DIM_ARRAY( -- 边界
MDSYS.SDO_DIM_ELEMENT('X', 37741879.441, 37766551.886, 0.000000050), -- X轴边界[37741879.441, 37766551.886]
MDSYS.SDO_DIM_ELEMENT('Y', 2550159.418, 2593352.733, 0.000000050) -- Y轴边界[2550159.418, 2593352.733]
),
4525 -- SRID
);
insert into
TEST_SRID_4525_POINT
(GID, GEOM)
values
(
1, -- GID
MDSYS.SDO_GEOMETRY( -- 该点的几何数据
2001, -- 【SDO_GTYPE】 第一位2表示二维,第二位一般为0,第三四位01表示点(POINT)类型
4525, -- 【SRID】
MDSYS.SDO_POINT_TYPE(37755042.450, 2566629.763, 0), -- 【SDO_POINT,仅用于点几何体】点坐标
NULL, -- 【SDO_ELEM_INFO】坐标解读方式,对于点集合体该处为空
NULL -- 【SDO_ORDINATES】坐标值,对于点集合体该处为空
)
);
create index SIDX_TEST_SRID_4525_POINT on TEST_SRID_4525_POINT(GEOM)
indextype is MDSYS.SPATIAL_INDEX parameters('SDO_COMMIT_INTERVAL=1000');
create table
TEST_SRID_4525_POLYLINE
(
GID NUMBER(10), -- 要素ID
GEOM SDO_GEOMETRY -- 几何信息
);
insert into
MDSYS.USER_SDO_GEOM_METADATA
(TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)
values
(
'TEST_SRID_4525_POLYLINE', -- 数据表名称
'GEOM', -- 几何字段名称
SDO_DIM_ARRAY( -- 边界
MDSYS.SDO_DIM_ELEMENT('X', 37741879.441, 37766551.886, 0.000000050), -- X轴边界[37741879.441, 37766551.886]
MDSYS.SDO_DIM_ELEMENT('Y', 2550159.418, 2593352.733, 0.000000050) -- Y轴边界[2550159.418, 2593352.733]
),
4525 -- SRID
);
insert into
TEST_SRID_4525_POLYLINE
(GID, GEOM)
values
(
1, -- GID
MDSYS.SDO_GEOMETRY( -- 该点的几何数据
2002, -- 【SDO_GTYPE】 第一位2表示二维,第二位一般为0,第三四位02表示线(POLYLINE)类型
4525, -- 【SRID】
NULL, -- 【SDO_POINT,仅用于点几何体】其他类型几何体,此处为空
MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1), -- 对于点集合体该处为空【SDO_ELEM_INFO】坐标解读方式,对于点集合体该处为空
MDSYS.SDO_ORDINATE_ARRAY( -- 【SDO_ORDINATES】坐标值
37750743.000, 2565769.866, -- 第1个点
37757489.889, 2564711.530, -- 第2个点
37759011.246, 2567092.785, -- 第3个点
37755472.437, 2570102.426, -- 第4个点
37757853.691, 2571524.565, -- 第5个点
37757357.597, 2574931.082 -- 第6个点
)
)
);
create index SIDX_TEST_SRID_4525_POLYLINE on TEST_SRID_4525_POLYLINE(GEOM)
indextype is MDSYS.SPATIAL_INDEX parameters('SDO_COMMIT_INTERVAL=1000');
select
MDSYS.SDO_GEOM.SDO_LENGTH(t.GEOM, m.DIMINFO) AS LINE_LENGTH
from
TEST_SRID_4525_POLYLINE t,
MDSYS.USER_SDO_GEOM_METADATA m
where
m.table_name = 'TEST_SRID_4525_POLYLINE' AND
m.column_name = 'GEOM';
create table
TEST_SRID_4525_POLYGON
(
GID NUMBER(10), -- 要素ID
GEOM SDO_GEOMETRY -- 几何信息
);
insert into
MDSYS.USER_SDO_GEOM_METADATA
(TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)
values
(
'TEST_SRID_4525_POLYGON', -- 数据表名称
'GEOM', -- 几何字段名称
SDO_DIM_ARRAY( -- 边界
MDSYS.SDO_DIM_ELEMENT('X', 37741879.441, 37766551.886, 0.000000050), -- X轴边界[37741879.441, 37766551.886]
MDSYS.SDO_DIM_ELEMENT('Y', 2550159.418, 2593352.733, 0.000000050) -- Y轴边界[2550159.418, 2593352.733]
),
4525 -- SRID
);
insert into
TEST_SRID_4525_POLYGON
(GID, GEOM)
values
(
1, -- GID
MDSYS.SDO_GEOMETRY( -- 该点的几何数据
2003, -- 【SDO_GTYPE】 第一位2表示二维,第二位一般为0,第三四位03表示面(POLYGON)类型
4525, -- 【SRID】
NULL, -- 【SDO_POINT,仅用于点几何体】其他类型几何体,此处为空
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), -- 对于点集合体该处为空【SDO_ELEM_INFO】坐标解读方式,对于点集合体该处为空
MDSYS.SDO_ORDINATE_ARRAY( -- 【SDO_ORDINATES】坐标值
37750743.000, 2565769.866, -- 第1个点
37757489.889, 2564711.530, -- 第2个点
37759011.246, 2567092.785, -- 第3个点
37755472.437, 2570102.426, -- 第4个点
37757853.691, 2571524.565, -- 第5个点
37757357.597, 2574931.082, -- 第6个点
37750743.000, 2565769.866 -- 第1个点(首尾相接)
)
)
);
create index SIDX_TEST_SRID_4525_POLYGON on TEST_SRID_4525_POLYGON(GEOM)
indextype is MDSYS.SPATIAL_INDEX parameters('SDO_COMMIT_INTERVAL=1000');
select
MDSYS.SDO_GEOM.SDO_LENGTH(t.GEOM, m.DIMINFO) AS POLYGON_LENGTH,
MDSYS.SDO_GEOM.SDO_AREA(t.GEOM, m.DIMINFO) AS POLYGON_AREA
from
TEST_SRID_4525_POLYGON t,
MDSYS.USER_SDO_GEOM_METADATA m
where
m.table_name = 'TEST_SRID_4525_POLYGON' AND
m.column_name = 'GEOM';