Oracle
带有空间数据类型的字段的表创建
1.创建表
CREATE TABLE GIS_SHANXI_GBNT_2020
(
"ID" NUMBER(32) NOT NULL,
"GEOM" "MDSYS"."SDO_GEOMETRY", --空间数据类型字段
"SRID" number(4),
CONSTRAINT "GIS_SHANXI_GBNT_2020_PK" PRIMARY KEY("ID")
);
2.创建元数据
INSERT INTO user_sdo_geom_metadata VALUES (
'GIS_SHANXI_GNBT_2020',
'GEOM', -- 空间数据字段
MDSYS.SDO_DIM_ARRAY(
MDSYS.SDO_DIM_ELEMENT('X', -180, 180, 0.5),
MDSYS.SDO_DIM_ELEMENT('Y', -90, 90, 0.5)
),
null
);
3.创建索引
create index idx_GIS_SHANXI_GBNT_2020 on GIS_SHANXI_GBNT_2020(GEOM) indextype is mdsys.spatial_index;
1.SDO_UTIL.TO_WKTGEOMETRY(GEOM) 将GEOMETRY对象转成wkt格式的字符串,返回类型CLOB
2.SDO_UTIL.FROM_WKTGEOMETRY('MULTIPOLYGON (((121.042946940262 31.3159021847315)))') 将WTK数据转成空间类型对象
1.SDO_UTIL.TO_WKTGEOMETRY(GEOM) 将GEOMETRY对象转成wkt格式的字符串,返回类型CLOB
例:
SELECT ID,ZCDM,ZCMC,SZC,ZLWZ,GSDW,SDO_UTIL.TO_WKTGEOMETRY(GEOM),TO_CHAR(SCRQ,'yyyy-MM-dd HH24:mi:ss') FROM GIS_DJDZC where zcmc like '%公司%';
2.拉框查询 SDO_FILTER(GEOMETRY,GEOMETRY) 即判断两个几何体是否有相交
例:
SELECT * FROM gis_djdzc t
WHERE SDO_FILTER(
t.GEOM,