Oracle Spatial定义空间参考系(三、测试)

前面两篇文章,介绍了如何添加地理坐标系(SRID=4490)和投影坐标系(SRID=4525)。

下面测试投影坐标系(SRID=4525)是否有效。

1. 判断是否存在投影坐标系(SRID=4525)

select * from MDSYS.CS_SRS where SRID = 4525;

2. 点(POINT)

2.1 创建测试数据表

create table
 TEST_SRID_4525_POINT
 (
   GID NUMBER(10),    -- 要素ID
   GEOM SDO_GEOMETRY  -- 几何信息
 );

2.2 写入元数据表信息

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
 );

2.3 写入点数据

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】坐标值,对于点集合体该处为空
   )
 );

2.4 创建空间索引

create index SIDX_TEST_SRID_4525_POINT on TEST_SRID_4525_POINT(GEOM)
  indextype is MDSYS.SPATIAL_INDEX parameters('SDO_COMMIT_INTERVAL=1000');

3. 线(POLYLINE)

3.1 创建数据表

create table
 TEST_SRID_4525_POLYLINE
 (
   GID NUMBER(10),    -- 要素ID
   GEOM SDO_GEOMETRY  -- 几何信息
 );

3.2 写入元数据表信息

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
 );

3.3 写入线数据

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个点
     )   
   )
 );

4.4 创建空间索引

create index SIDX_TEST_SRID_4525_POLYLINE on TEST_SRID_4525_POLYLINE(GEOM)
  indextype is MDSYS.SPATIAL_INDEX parameters('SDO_COMMIT_INTERVAL=1000');

5.5 计算长度

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';

在这里插入图片描述

4. 面(POLYGON)

4.1 创建数据表

create table
 TEST_SRID_4525_POLYGON
 (
   GID NUMBER(10),    -- 要素ID
   GEOM SDO_GEOMETRY  -- 几何信息
 );

4.2 写入元数据表信息

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
 );

4.3 写入面数据

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个点(首尾相接)
     )
   )
 );

4.4 创建空间索引

create index SIDX_TEST_SRID_4525_POLYGON on TEST_SRID_4525_POLYGON(GEOM)
  indextype is MDSYS.SPATIAL_INDEX parameters('SDO_COMMIT_INTERVAL=1000');

4.5 计算周长 和 面积

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';

在这里插入图片描述

END

Thanks for Reading!

转载自个人网站:https://blog.icrystal.top/archives/6.html

作者:iCrystal
邮箱:leopard.c@outlook.com
博客:https://blog.icrystal.top
GitHub: https://github.com/Leopard-C

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值