Oracle创建空间字段、空间索引

一、创建点空间

--创建表
CREATE TABLE my_shape_test (
  id NUMBER PRIMARY KEY,
  name VARCHAR2(32),
  location SDO_GEOMETRY,
  x84 number(20,10),
  y84 number(20,10)
  );
--插入两条数据
INSERT INTO my_shape_test VALUES(
  1,
  'point1',
  SDO_GEOMETRY(
    2001,
    4326,
    SDO_POINT_TYPE(
        115.60843803,
        32.1681994271,
        0),
    NULL,
    NULL),
    115.60843803,
    32.1681994271
);
INSERT INTO my_shape_test VALUES(
  2,
  'point2',
 SDO_GEOMETRY(
    2001,
    4326,
    SDO_POINT_TYPE(
        115.6094495600,
        32.1684263561,
        0),
    NULL,
    NULL),
    115.6094495600,
    32.1684263561
);
---------------------------------------------------------------------------
-- UPDATE METADATA VIEW -- 更新元数据视图
---------------------------------------------------------------------------
-- Update the USER_SDO_GEOM_METADATA view. This is required
-- before the spatial index can be created. Do this only once for each
-- layer (that is, table-column combination; here: COLA_MARKETS and SHAPE).

INSERT INTO user_sdo_geom_metadata
    (TABLE_NAME,
     COLUMN_NAME,
     DIMINFO,
     SRID)
  VALUES (
  'my_shape_test',
  'location',
  SDO_DIM_ARRAY(SDO_DIM_ELEMENT('X',-180,180,0.005),SDO_DIM_ELEMENT('Y',-90,90,0.005)),
   4326   -- SRID
);

-------------------------------------------------------------------
-- CREATE THE SPATIAL INDEX --创建空间索引
-------------------------------------------------------------------
-- Preceding statement created an R-tree index.

CREATE INDEX my_shape_test_idx
   ON my_shape_test(location)
   INDEXTYPE IS MDSYS.SPATIAL_INDEX;

二、创建面空间

官方示例

三、其他

1.开发注意事项:

  1. geoserver lib中添加 orai18n-12.1.0.2.0.jar
  2. Oracle数据库表空间名不能小写(坑1)
  3. 代码中视图sql表名需要大写(坑3)
  4. 代码中视图设置坐标系时,字段名得大写 -> final VTGeometryEncoder vtGeom = new VTGeometryEncoder(“LOCATION”, “Point”, “4326”); (坑2)

2.参考链接

参考1

参考2

参考3

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值