oracle spatial空间类型创建

oracle spatial空间类型创建

oracle空间表创建

使用oracle11G创建空间表数据,基于Oracle Spatial的存储方式,通过这种存储方式的几何列Shape的字段类型为MDSYS.SDO_GEOMETRY类型,个人觉得关于操作空间数据的SQL语句来说,相交于PostgreSQL、MS SQLServer麻烦一些

创建空间表SQL

空间字段:location

CREATE TABLE mylake (
    feature_id NUMBER PRIMARY KEY,
    name VARCHAR2(32),
    location MDSYS.SDO_GEOMETRY);

在user_sdo_geom_metadata 表中插入新记录,用于描述空间字段

INSERT INTO user_sdo_geom_metadata VALUES (
    'mylake',    ---表名
    'location',   ---字段名
    MDSYS.SDO_DIM_ARRAY(   
        MDSYS.SDO_DIM_ELEMENT('X', 0, 100, 0.05),    ---X维最小,最大值和容忍度。
        MDSYS.SDO_DIM_ELEMENT('Y', 0, 100, 0.05)   ---Y维最小,最大值和容忍度
    ),
    '8307'//---坐标系,缺省为笛卡尔坐标系
);

创建空间索引

CREATE INDEX MYLAKE_SIDX ON MYLAKE(LOCATION) 
    INDEXTYPE IS MDSYS.SPATIAL_INDEX

创建一条空间点数据

INSERT INTO mylakepoint
VALUES
  (11,
   'UpDooGIS',
   (MDSYS.SDO_GEOMETRY(2001,
                       8307,
                       MDSYS.SDO_POINT_TYPE(t.jd, t.wd, NULL),
                       NULL,
                       NULL)))

插入一条空间线数据

INSERT INTO mylakeline VALUES(
              11,
             'UpDooGIS',
              MDSYS.SDO_GEOMETRY(2002,8307,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1),MDSYS.SDO_ORDINATE_ARRAY(118.158115,29.491359,118.159059,29.492015,118.164604,29.496581)
             )
 )

插入多边形数据

INSERT INTO mylake VALUES(
    10, 
    'Lake Calhoun', 
    MDSYS.SDO_GEOMETRY(
        2003,
        8307,
        NULL,
        MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),
        MDSYS.SDO_ORDINATE_ARRAY(118.5482066778768,31.489250722082257,118.54821566102964,31.489235401526255,118.5482066778768,31.489227741247323)
    ));
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值