oracle spatial 数据导入_oracle spatial 空间数据学习

最近项目使用 空间数据库 oracle spatial

--创建测试用表

CREATE TABLE SPATIALTEST (

"ID" VARCHAR2(20) NOT NULL,

"NAME" VARCHAR2(100),

"ADDRESS" VARCHAR2(200),

"TELEPHONE" VARCHAR2(50),

"LOCATION" "MDSYS"."SDO_GEOMETRY"

)

--创建主键约束

ALTER TABLE "SPATIALTEST"

ADD CONSTRAINT "PK_SPATIAL" PRIMARY KEY("ID");

--根据用户表填写空间元数据,创建了点信息,与点信息经纬度最大值,与最小值,与误差范围

INSERT INTO USER_SDO_GEOM_METADATA

VALUES(

'SPATIALTEST',

'location',

MDSYS.SDO_DIM_ARRAY(

MDSYS.SDO_DIM_ELEMENT('Longitude',-180,180,10),---Longitude维最小,最大值和容忍度。

MDSYS.SDO_DIM_ELEMENT('Latitude',-90,90,10)-----Latitude维最小,最大值和容忍度。

),

4326

);

--建立空间索引 关键 假如不创建空间索引,速度很慢

CREATE INDEX SPATIAL_IDX ON SPATIALTEST(location) INDEXTYPE IS MDSYS.SPATIAL_INDEX

--导入测试数据

--1

INSERT INTO SPATIALTEST

VALUES

('1',

'中油瑞飞',

'北京市歌华大厦',

'010-123456',

MDSYS.SDO_GEOMETRY(2001,--定义的点的代码

4326,--定义的坐标系统代码

MDSYS.SDO_POINT_TYPE(113.3293658, 23.14338586, 0),--定义了点的坐标值

NULL,

NULL));

--导入测试数据

--2

INSERT INTO SPATIALTEST

VALUES

('2',

'山东',

'山东省日照市东港区',

'010-123456',

MDSYS.SDO_GEOMETRY(2001,--定义的点的代码

4326,

MDSYS.SDO_POINT_TYPE(113.2932474, 23.11883515, 0),

NULL,

NULL));

-- 关系查询

select location from spatialtest;

select s.location.SDO_POINT.x langtitude from spatialtest s;

--空间分析查询(113.2359818,23.16937253)周边十公里信息5条

SELECT B.id id, B.name name, B.dist dist

FROM (SELECT A.id id,

A.name name,

SDO_GEOM.SDO_DISTANCE(A.location,

MDSYS.SDO_GEOMETRY(2001,

4326,

MDSYS.SDO_POINT_TYPE(113.2359818,

23.16937253,

0),

NULL,

NULL),

1) dist

FROM spatialtest A

WHERE SDO_WITHIN_DISTANCE(A.LOCATION,

MDSYS.SDO_GEOMETRY(2001,

4326,

MDSYS.SDO_POINT_TYPE(113.2359818,

23.16937253,

0),

NULL,

NULL),

'distance=10000') = 'TRUE'

ORDER BY A.name) B

WHERE ROWNUM <= 5;

-- 空间分析查询(113.2359818,23.16937253)附近的5条信息

SELECT A.id id,

A.name name,

A.location.SDO_POINT.x langtitude,

A.location.SDO_POINT.y latitude,

MDSYS.SDO_NN_DISTANCE(1) distance

FROM spatialtest A

WHERE SDO_NN(A.LOCATION,

MDSYS.SDO_GEOMETRY(2001,

4326,

MDSYS.SDO_POINT_TYPE(113.2359818,

23.16937253,

0),

null,

null),

'SDO_NUM_RES=5',

1) = 'TRUE'

分享到:

2012-05-17 16:09

浏览 1518

分类:数据库

评论

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值