Oracle Spatial提供了空间查询功能,在确定了空间查询的条件以后,可以是矩形,多边形或者是行政区划的区域。可以方便的用Oracle Spatial提供的Sql来完成空间查询。
比较困难的是行政区划查询的实现。第一个最初的想法未脱离ArcSDE的束缚,当时的想法是在SDE的表空间中查询得到SDE表示的行政区划空间信息,由于这些空间信息包含的点比较多,当时觉得可能无法在Sql中包含这么多的空间点,因此想用点采样的办法来完成查询。但是,这种方法可行性不强,另外查询的精度太差。
后来经过调研发现,可以利用Oracle的一个不起眼的小工具shp2sdo,将图层的信息注入到Oracle的表空间中去,生成行政区划信息的Oracle Spatial表结构。由于ArcGIS Server中的地图服务用到了也是这些Shp文件,因此,ArcGIS Server与Oracle Spatial两边的行政区划信息得到了统一,这样很方便的就完成了行政区划查询。
Oracle Spatial小工具的使用办法如下:(以下内容转自其他blog)
----------------------------------------------------
最近因为工作的关系,开始接触GIS,采用开源的Geoserver、Geotools、Mapbuilder来开发,数据库使用oracle spataral,刚开始是一直在看别人已经做好的一个半成品系统,自己模仿着来改,GIS采用的数据格式比较特殊,不能使用一般的导表方式来导,而且地图文件的格式也比较特殊,一般是shp、或者是tab,这里主要是用的shp文件,因此需要将shp文件进行处理,转换成oracle数据格式,其实也没什么难的,只是如果不熟悉的话,可能也需要浪费一点时间来看一下。
首先我们要把shp文件转换分割成oracle可以导入的数据库文件,这个转换可以使用oracle提供的一个现成的工具shp2sdo(很小),可以到官方网站去找(不过可能不是很好找,需要的可以留下邮箱),下载后把此文件复制到PATH变量包含的目录下,如我的oracle客户端安装后自动注册的环境变量是 path C:\Oracle\product\10.1.0\Client_1\bin;,我们可以把此文件拷贝到该目录下,然后在dos下运行该工具,定位到我们的shp文件的位置,例如我们的shp文件名称是state.shp(shapefile包括至少三个文件state.shp state.dbf state.idx)在D:\data\目录下,我们在dos命令窗口下就应该这样操作
shp2sdo state statearea -i gid -s 8307 -g -d
其中state即为本地的shp文件名(不加shp后缀),statearea为生成的文件名(同时也是将来导进数据库的表名),-d代表含义是将分解后的ctl文件(控制文件)和data文件(数据存储文件)分别生成,如果没有该选项,则不会有单独的data文件生成,数据存储和控制都在ctl一个文件中, 经常用到的还有选项 -i id_colum指定id序列列,默认是id,即作为生成数据的唯一性标志,此列是不可能重复的,一般作为索引列,-s **指定生成srid,默认是null,目前一般是8307吧,-g geometry column指定sdo_geometry,默认是GEOM,此选项一般使用默认即可,命令执行后,会生成三个文件,statearea.sql、statearea.ctl、stateare.data。
分解完成后就是导入,这里仍然使用命令行的方式
D:\data\>sqlplus pgg/pgg@orcl
SQL>@statearea.sql
SQL>quit
导入ctl文件
D:\data\>sqlldr pgg/pgg@orcl statearea
建立空间索引
D:\data\>sqlplus pgg/pgg@orcl
SQL>CREATE Index STATEAREA_idx ON STATEAREA (GEOM) INDEXTYPE is MDSYS.SPATIAL_INDEX;
至此空间数据导入完毕。
另外还需要建立一个视图,具体作用说不大清楚,但在启动程序发布地图的时候会用到,如果没有此视图文件会出现图层无法map的错误,建立过程如下:
SQL> CREATE OR REPLACE VIEW CS_SRS AS
2 SELECT "CS_NAME","SRID","AUTH_SRID","AUTH_NAME","WKTEXT","CS_BOUNDS"
3 FROM MDSYS.CS_SRS
4 /
另外如果自己手工新建图层的话,过程如下:
DROP TABLE BZXX;
CREATE TABLE BZXX(
GID VARCHAR2(32) NOT NULL,
NAME VARCHAR2(20),
BZNR VARCHAR2(400),
BEIZ VARCHAR2(600),
COOR MDSYS.SDO_GEOMETRY
);
ALTER TABLE BZXX
ADD CONSTRAINT PK_BZXX PRIMARY KEY (GID);
DELETE FROM USER_SDO_GEOM_METADATA
WHERE TABLE_NAME = 'BZXX' AND COLUMN_NAME = 'COOR' ;
INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)
VALUES ('BZXX', 'COOR',
MDSYS.SDO_DIM_ARRAY
(MDSYS.SDO_DIM_ELEMENT('X', -180.000000000, 180.000000000, 0.500000000),
MDSYS.SDO_DIM_ELEMENT('Y', -90.000000000, 90.000000000, 0.500000000)
),
8307);
COMMIT;
CREATE INDEX BZXX_GEOM_INDEX ON BZXX(COOR)
INDEXTYPE IS MDSYS.SPATIAL_INDEX
PARAMETERS('SDO_INDX_DIMS=2, LAYER_GTYPE=POINT');
----------------------------------------------------
分享到:
相关推荐
Oracle Spatial 还提供了一系列的空间分析功能,如距离计算、缓冲区分析、空间查询、网络分析等,这些功能对于WebGIS应用来说至关重要。同时,其强大的性能和稳定性确保了大规模地理信息数据的高效处理。 总结来说...
总的来说,本文详细阐述了SVG与Oracle Spatial的结合在WebGIS地图编辑中的应用,为开发高效、灵活的WebGIS系统提供了理论基础和技术支持。这种技术的应用有助于推动GIS技术的发展,特别是在互联网环境下,使得更多...
Oracle Spatial 是Oracle数据库的一个扩展,专为存储、管理和查询空间数据而设计。它是一个面向对象的空间数据库,支持空间数据的分级体系,包括应用领域、主题、层、几何实体、基本图形元素和物理坐标。在Oracle ...
Oracle Spatial空间数据库则提供了存储和查询空间数据的能力,支持复杂的地理空间操作。论文讨论了Oracle Spatial的空间数据模型,强调了其在处理拓扑关系和空间分析方面的优势。 最后,论文通过一个实际的WebGIS...
总结起来,基于Oracle Spatial的J2EE WebGIS实现技术结合了Oracle数据库的强大空间数据管理能力与J2EE的高效开发架构,能够构建出适应现代GIS需求的可扩展、安全、跨平台的WebGIS应用。这种技术方案对于需要处理大量...
作者实现了一个基于Oracle Spatial和GML的WebGIS系统,这表明这些技术可以成功地应用于实际项目中,提供了一个基础架构,可以进行地理信息的发布、浏览和查询。该系统对于进一步研究如何优化Oracle Spatial和GML在...
【WebGIS模型系统】文中构建的WebGIS模型系统结合了Oracle Spatial的强大存储和查询功能、GML的数据交换优势以及SVG的图形显示效果。该系统实现了大量空间数据的存储,提供了高效的查询机制,通过优化数据传输和显示...
4. 空间索引:空间索引是指对空间数据的索引,Oracle Spatial提供了高效的空间索引机制,提高了空间数据的查询效率。 5. Mapxtreme 2005:Mapxtreme 2005是MapInfo Corporation继MapXtreme 3.0和Mapxtreme 2004之后...
这种索引结构能够快速定位和查询空间对象,优化了空间查询性能。在将GIS数据导入数据库后,通过四元树索引为数据建立索引,可以显著提升空间查询的速度。 【查询实现】 为了与Oracle Spatial数据库交互并执行查询,...
总的来说,这篇研究揭示了如何利用先进的分布式计算技术(如CORBA)和高效的空间数据库技术(如Oracle Spatial)来提升WebGIS的性能和实用性。这种方法不仅适用于学术研究,也为实际的GIS项目开发提供了有价值的指导...
《基于Oracle Spatial的Web实现方案》探讨的是如何利用Oracle数据库中的Spatial特性,结合WebGIS技术,构建高效、易用的地理信息系统。WebGIS是GIS(地理信息系统)与互联网技术的结合,它允许用户通过Web浏览器访问...
5. **海量空间数据的存储管理**:对于大规模的地理空间数据,Oracle Spatial提供了高效的存储和检索策略,如使用R树索引进行空间查询优化,确保大数据量下的性能。 6. **SVG动态渲染**:在Web环境中,SVG可以通过...
Oracle Spatial不仅能够存储和管理空间数据,还提供了一系列的空间查询和分析功能,使得用户可以进行复杂的GIS应用开发。 在Oracle Spatial中,空间数据的存储主要依赖于以下几个关键要素: 1. **元数据表**:元...
常见的空间数据库管理系统有PostGIS(基于PostgreSQL)、Spatialite(嵌入式SQLite)、Oracle Spatial、SQL Server Spatial等。它们支持标准的OGC(Open Geospatial Consortium)规范,如WFS(Web Feature Service)...
在Oracle8i Spatial中,有两种主要的空间索引方法:定长索引(Fixed)和混合索引(Hybrid)。混合索引更适用于处理面向对象模型中的空间数据,因为它可以提供更好的查询性能。建立空间索引的目的是为了加速空间查询...
Oracle从9i版本开始对空间数据提供了全面的支持,使得存储和查询空间对象成为可能。 GML(Geography Markup Language)作为数据传输格式被应用在这个系统中,它是OpenGIS联盟制定的一种基于XML的地理信息编码标准。...
CORBA技术规范的成熟发展,为解决异构平台分布式计算问题、开发功能强大、通用性高、可互操作的WebGIS应用...就CORBA技术、空间数据库引擎技术与WebGIS结合可行性进行探讨,并设计开发了基于此的通用WebGIS应用平台。
综上所述,基于Oracle的网管系统空间数据存储技术通过Oracle Spatial空间数据库的使用,有效地解决了传统RDBMS在处理空间数据方面的不足,实现了网络管理中空间信息与属性信息的一体化存储和高效查询。这一技术的...
4. **空间服务器访问**:支持连接到存储在空间服务器(如Microsoft SQL Server、Informix或Oracle Spatial数据库上的MapInfo SpatialWare)中的实时数据。 #### 三、MapXtreme2005体系结构 MapXtreme2005基于...
【Oracle 10g MapViewer】是Oracle公司提供的一个用于空间数据可视化的工具,它不仅支持Oracle Spatial的数据可视化,还能处理Oracle 10g的拓扑数据模型和网络数据模型的可视化。MapViewer使得在C/S(客户端/服务器...