- 浏览: 35723 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
一、Oracle Spatial简介
Oracle 支持自定义的数据类型,可以用数组,结构体或者带有构造函数,功能函数的类来定义自己的对象类型。这样的对象类型可以用于属性列的数据类型,也可以用来创建对象表。而Oracle Spatial也正是基于此种特性所开发的一套空间数据处理系统。
Spatial 的自定义数据类型有很多,全部在MDSYS方案下,经常使用到的是SDO_GEOMETRY类型。SDO_GEOMETRY表示一个几何对象,可以是点、线、面、多点、多线、多面或混合对象。
Spatial 在此数据类型的基础上,实现了R树空间索引和四叉树空间索引,还以SQL函数的形式实现了多种空间分析功能。
二、测试表的建立与应用(点类型)
-- 创建测试用表 CREATE TABLE "SPATIALTEST" ( "ID" VARCHAR2(20) NOT NULL, "NAME" VARCHAR2(100), "ADDRESS" VARCHAR2(200), "TELEPHONE" VARCHAR2(50), "LOCATION" "MDSYS"."SDO_GEOMETRY" )LOGGING; |
-- 创建主键约束 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), MDSYS.SDO_DIM_ELEMENT('Latitude',-90,90,10) ), 8307 ); |
-- 建立空间索引 CREATE INDEX SPATIAL_IDX ON SPATIALTEST(location) INDEXTYPE IS MDSYS.SPATIAL_INDEX; |
-- 导入测试数据
--其他 INSERT INTO cola_markets VALUES( |
-- 属性信息查询 SQL> select location from spatialtest; LOCATION(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES) SQL> select s.location.SDO_POINT.x langtitude from spatialtest s; LANGTITUDE |
-- 空间分析查询(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,8307,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,8307,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,8307,MDSYS.SDO_POINT_TYPE(113.2359818,23.16937253,0),null,null),'SDO_NUM_RES=5',1) = 'TRUE' ; |
-- Return the topological difference of two geometries. SELECT SDO_GEOM.SDO_DIFFERENCE(c_a.shape, m.diminfo, c_c.shape, m.diminfo) FROM cola_markets c_a, cola_markets c_c, user_sdo_geom_metadata m WHERE m.table_name = 'COLA_MARKETS' AND m.column_name = 'SHAPE' AND c_a.name = 'cola_a' AND c_c.name = 'cola_c'; |
三、MDYSYS.SDO_GEOMETRY结构
CREATE TYPE SDO_GEOMETRY AS OBJECT( //它们都是NUMBER类型, //形成空间对象的边界 |
MDSYS.SDO_GEOMETRY <--> OCCI 对照模型:
四、Oracle Spatial 几个自定义函数(转帖)
--------------------------------------
--得到线对象的终止点X坐标
|
--得到线对象的终止点的Y坐标
|
--得到线对象的终止点坐标 X,Y 形式
|
--得到线对象的起始点X坐标
|
--得到线对象的起始点的Y坐标
|
--得到线对象的起始点XY坐标
|
--把X,Y坐标转换成MDSYS.SDO_GEOMETRY的点对象 create or replace function To_Geomerty_Point(x in number,y in number ) return MDSYS.SDO_GEOMETRY is Result MDSYS.SDO_GEOMETRY; begin Result := MDSYS.SDO_GEOMETRY(2001, return(Result);
|
--------------------------------------------------------------------------
-------------------查询及测试语句---------------------------------------
--求线路的长度 select c.routename, sdo_geom.sdo_length(c.geoloc,m.DIMINFO,'unit=KM') from tgs_route c,user_sdo_geom_metadata m select * from tg_routev2 select a.geoloc.SDO_ORDINATES from tgs_route a select GetStartNodeXY(a.geoloc.SDO_ORDINATES) from tgs_route a select GetEndNodeXY(a.geoloc.SDO_ORDINATES) from tgs_route a
|
--计算线路的起始点和终止点坐标
|
--更新tg_routev2 中的线起始点 终止点坐标 alter table routeNodeXY add primary key(routename) update (select a.*,b.* from tg_routev2 a,routeNodeXY b
|
select sdo_geom.sdo_distance( from dual
|
--node1距离物流中心的 “南北直角折线” 距离 select a.routename, (sdo_geom.sdo_distance(To_Geomerty_Point(a.node1x, a.node1y), To_Geomerty_Point(116.635056, a.node1y), 0.005, 'unit=KM') + sdo_geom.sdo_distance(To_Geomerty_Point(a.node1x, a.node1y), To_Geomerty_Point(a.node1x, 39.869170), 0.005, 'unit=KM')) dis1 from tg_routev2 a order by dis1
--node2距离物流中心的 “南北直角折线” 距离
|
--更新node1Distance 和 node2Distance 即线路起始点、终止点距离物流中心的 “南北直角折线” 距离 tg_routev2 node1Distance = (sdo_geom.sdo_distance(To_Geomerty_Point(node1x, node1y), To_Geomerty_Point(116.635056, node1y), 0.005, 'unit=KM') + sdo_geom.sdo_distance(To_Geomerty_Point(node1x, node1y), To_Geomerty_Point(node1x, 39.869170), 0.005, 'unit=KM')), + sdo_geom.sdo_distance(To_Geomerty_Point(node2x, node2y), To_Geomerty_Point(node2x, 39.869170), 0.005, 'unit=KM')) node1Distance is null; |
-The End-
发表评论
-
postgreslq 类型转换
2011-06-30 23:55 692select float8(yiliaozhichu)/fl ... -
【项目分析】WebService,jQuery,原生对象几种前端加载数据的性能比较(1)
2011-05-25 22:09 660背景 最近的项目遇到了一些性能瓶颈,本篇文章先不谈数据库方面 ... -
一句代码完成对文本文件读取和写入
2011-05-18 00:23 743最近在做一个网站,需要对文本文件进行操作,本人为了方便,写 ... -
oracle spation
2011-05-13 23:37 763首先,Oracle支持自定义的数据类型,你可以用数组,结构体或 ... -
JSP页面中导出Excel文件及其中文乱码的解决办法
2011-01-11 10:44 1184Web应用导出Excel报表的简单实现(HTML) 在We ... -
Javascript的event对象
2010-12-08 20:42 779Javascript的Event对象用来 ... -
CSS Overflow属性详解该文章转摘自-网页制作大宝库(www.dabaoku.com)
2010-12-06 22:22 983检索或设置当对象的内容超过其指定高度及宽度时如何管理内容。 ... -
document.getElementById 你真正了解了吗?
2010-11-30 20:04 900text1: <input name=" ... -
如何使用JSTL标签做页面资源国际化
2010-09-02 14:54 7461 Web应用开发,如何使用JSTL 标签做页面资源国际化需 ... -
利用Eclipse+Tomcat开发Web程序
2010-08-09 13:01 1296我的主要环境设置: Eclipse安装路径为E:/Java/e ... -
什么是Struts
2010-08-08 15:26 624框架(Framework)是可重用的,半完成的应用程序,可以用 ...
相关推荐
### Oracle Spatial与ArcGIS连接知识点解析 #### 一、引言 随着信息技术的发展,空间数据管理变得日益重要。许多组织正在转向使用Oracle Spatial作为其核心数据库系统,这主要是因为Oracle Spatial能够提供强大的...
Oracle Spatial 是 Oracle 数据库的一个重要组件,专门用于处理地理空间数据和执行空间分析。这个官方文档是英文版,对于非英语母语者来说可能阅读起来有些困难,但它是理解 Oracle Spatial 功能和操作的关键资源。...
Oracle Spatial 是 Oracle 数据库的一个组件,专门用于处理和分析地理空间数据。这个组件提供了丰富的功能,包括地理坐标系统的转换、空间查询、空间分析以及地图显示等。在Java开发环境中,Oracle Spatial 提供了...
[Packt Publishing] Oracle Spatial 应用扩展 (英文版) [Packt Publishing] Applying and Extending Oracle Spatial (E-Book) ☆ 图书概要:☆ Overview Understand how to develop Oracle Spatial data models ...
根据提供的文件信息,我们可以归纳出以下关于Oracle Spatial的相关知识点: ### 一、Oracle Spatial简介 - **Oracle Spatial** 是Oracle数据库系统中一个用于管理和处理地理空间数据的功能组件。 - 它能够帮助用户...
Oracle Spatial 是Oracle数据库的一个扩展模块,专门用于处理和分析地理空间数据。这个用户指南和参考文档是学习和掌握Oracle Spatial技术的重要资源,尽管它是英文版的。以下是对Oracle Spatial的一些核心知识点的...
### Oracle Spatial9i介绍 #### 一、Oracle Spatial9i概览 Oracle Spatial9i是Oracle数据库系统中的一项强大功能,专门用于处理地理信息系统(GIS)数据。它为GIS相关开发人员提供了一套完整的工具集,使他们能够...
"使用Oracle Spatial对ArcSDE中的SDO_GEOMETRY类型数据进行空间操作" Oracle Spatial 是 Oracle 数据库中的一个空间数据处理组件,用于存储、管理和操作空间数据。ArcSDE 是一个空间数据引擎,用于存储和管理大规模...
Oracle Spatial是Oracle数据库的一个扩展模块,专为处理地理空间数据而设计。它提供了对空间对象的存储、查询、分析和可视化的能力,使得开发者能够构建基于地理位置的应用程序。本用户指南详细介绍了如何有效地利用...
Oracle Spatial是Oracle数据库的一个扩展模块,专门用于处理地理空间数据,提供高级的空间查询、分析和可视化功能。在“Oracle Spatial学生指导”中,你将深入理解如何利用这个强大的工具进行地理信息系统(GIS)的...
《Oracle Spatial Developer's Guide》是Oracle公司为开发者提供的一份详尽指南,专注于其空间数据库解决方案——Oracle Spatial。Oracle Spatial是Oracle数据库的一个扩展模块,它提供了处理地理空间数据的能力,...
《Pro Oracle Spatial for Oracle Database 11g》是一本深入探讨Oracle Spatial特性的专业书籍,专为Oracle数据库11g用户设计。Oracle Spatial是Oracle数据库的一个扩展模块,它提供了强大的空间数据管理和分析功能...
Oracle Spatial 11g GeoRaster Oracle Spatial 11g GeoRaster Oracle Spatial 11g GeoRaster Oracle Spatial 11g GeoRaster
《Oracle Spatial空间信息管理:Oracle Database 11g》是世界级Oracle Spatial专家Ravi Kothuri、Albert Godfrind和Euro Beinat自力作,旨在向您提供空间信息管理方面的概念知识和实用技能,帮助您成为该领域的专家。...
"基于Oracle Spatial的矢量空间数据管理机制" Oracle Spatial是一种空间数据库管理系统,可以管理和存储矢量空间数据。该系统基于Oracle数据库管理系统,提供了一个对象关系模型来存储和管理空间几何实体。 ...
《Oracle Spatial空间信息管理:Oracle Database 11g》是世界级Oracle Spatial专家Ravi Kothuri、Albert Godfrind和Euro Beinat自力作,旨在向您提供空间信息管理方面的概念知识和实用技能,帮助您成为该领域的专家...
Oracle Spatial 是 Oracle 数据库的一个组件,它提供了对地理空间数据的支持和处理能力。这个组件使得在 Oracle 数据库中存储、查询、分析和可视化地理信息变得可能。Java API for Oracle Spatial(通常简称为 JSDO ...
Oracle Spatial是Oracle数据库的一个扩展模块,专门用于处理和分析地理空间数据。这个模块使得Oracle数据库能够支持复杂的地理信息系统的功能,比如地图制作、空间查询、地理编码和空间分析。在本教学讲义中,我们将...
【Oracle和Oracle Spatial简介】 Oracle是一家全球知名的信息管理软件提供商,自1977年成立以来,已成为全球最大的关系型数据库管理系统供应商。Oracle是第一个商业化的关系型数据库系统,并且是最早在其所有产品中...
Oracle Spatial是甲骨文公司推出的空间数据管理解决方案,其核心是一组专门针对Oracle数据库中空间元素的SQL模式、函数集以及空间索引机制。Oracle Spatial允许对空间数据进行存储、检索、更新和查询操作,是处理...