一、创建点空间
--创建表
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.开发注意事项:
- geoserver lib中添加 orai18n-12.1.0.2.0.jar
- Oracle数据库表空间名不能小写(坑1)
- 代码中视图sql表名需要大写(坑3)
- 代码中视图设置坐标系时,字段名得大写 -> final VTGeometryEncoder vtGeom = new VTGeometryEncoder(“LOCATION”, “Point”, “4326”); (坑2)
2.参考链接
版权声明:本文为wydydgh原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。