转载请注明出处:tedeum.iteye.com
感谢开源,使用OpenLayers+Geoserver的地理信息系统开发很简单,完全可以套用开发MIS系统的经验,我这里总结为三个步骤:
1、数据准备
2、数据发布
3、数据展现
我将按照这个思路来介绍,首先是数据发布:
一、数据发布
GIS数据源是多种多样的,有矢量数据、有栅格数据、有文本数据库、有关系型数据库,由于我平时主要使用Oracle 空间数据库和PostGIS,Oracle用得多一些,所以我以Oracle为例来说明,其他的触类旁通,至少我遇到的大部分是这样的。
使用Oracle管理空间数据完全可以当作是关系性数据库,这就是我是的可以套用MIS系统经验的原因,Oracle空间数据库增加了一个空间对象MDSYS.SDO_GEOMETRY来存储空间数据,就像varchar,int这些类型一样,但是这个类型是个对象。
需要注意的是,这个空间对象要正确发布需要创建空间索引,而要创建空间索引则要现在元数据表中进行定义,下面我就空间图形中基础的点线面来示例如何创建空间数据库表:
--创建表 create table t_point ( id number, name nvarchar2(256), position MDSYS.SDO_GEOMETRY ); create table t_line ( id number, name nvarchar2(256), position MDSYS.SDO_GEOMETRY ); create table t_area ( id number, name nvarchar2(256), position MDSYS.SDO_GEOMETRY ); --创建空间索引 insert into user_sdo_geom_metadata(table_name,COLUMN_NAME, DIMINFO) values( 'T_POINT', 'POSITION', MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X',-180,180,0.005), MDSYS.SDO_DIM_ELEMENT('Y',-90,90,0.005), MDSYS.SDO_DIM_ELEMENT('Z',-9000,9000,0.005) ) ); CREATE INDEX IDX_T_POINT_POS ON T_POINT(POSITION) INDEXTYPE IS MDSYS.SPATIAL_INDEX; insert into user_sdo_geom_metadata(table_name,COLUMN_NAME, DIMINFO) values( 'T_LINE', 'POSITION', MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X',-180,180,0.005), MDSYS.SDO_DIM_ELEMENT('Y',-90,90,0.005), MDSYS.SDO_DIM_ELEMENT('Z',-9000,9000,0.005) ) ); CREATE INDEX IDX_T_LINE_POS ON T_LINE(POSITION) INDEXTYPE IS MDSYS.SPATIAL_INDEX; insert into user_sdo_geom_metadata(table_name, COLUMN_NAME, DIMINFO) values( 'T_AREA', 'POSITION', MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X',-180,180,0.005), MDSYS.SDO_DIM_ELEMENT('Y',-90,90,0.005), MDSYS.SDO_DIM_ELEMENT('Z',-9000,9000,0.005) ) ); CREATE INDEX IDX_T_AREA_POS ON T_AREA(POSITION) INDEXTYPE IS MDSYS.SPATIAL_INDEX;
现在可以看到,空间表创建好了,我们可以像操作普通关系数据库一样进行操作,下面用一个插入例子来说明:
--插入点 insert into t_point(id, name, position) values (1, 'test point', MDSYS.SDO_GEOMETRY (3001, NULL, NULL, MDSYS.sdo_elem_info_array (1, 1, 1, 4, 1, 0), MDSYS.sdo_ordinate_array (24.886436, 102.784423, 0, 1, 0, 0 ) ) ); --插入线 insert into t_line(id, name, position) values (1, 'test line',MDSYS.SDO_GEOMETRY (3002, NULL, NULL, MDSYS.sdo_elem_info_array (1, 2, 1), MDSYS.sdo_ordinate_array (0, 0, 0, 0, 90, 0, 200, 90 , 0, 200, 0, 0) )); --插入面 insert into t_area(id, name, position) values (1, 'test area',MDSYS.SDO_GEOMETRY (3003, NULL, NULL, MDSYS.sdo_elem_info_array (1, 1003, 1), MDSYS.sdo_ordinate_array (0, 0, 0, 0, 90, 0, 200, 90 , 0, 200, 0, 0, 0, 0, 0) ));
上面的代码构造了一个空间对象,该对象的说明可以参考相关文档,这里就不详细说明了。准备好数据以后就可以进行数据发布了,数据发布是其中比较没有技术含量的体力活,可以参考这里的一系列文章:http://www.cnblogs.com/beniao/archive/2011/01/08/1930822.html
数据发布好后,可以进行数据展示了,数据展示可以套用MIS的控件概念,按照如下步骤开展:
1、创建地图控件
2、创建图层
3、在地图中加入图层
4、在地图中加入其他控件
详细如下代码所示:
//初始化地图 //var map = new OpenLayers.Map('map'); var map = new OpenLayers.Map({ div:"map", maxExtent:[97.027587,21.166484,106.739502,29.31642], center:new OpenLayers.LonLat(101.857909,24.726875) }); //新建图层 var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS", "http://10.180.80.206:9000/geoserver/wms", {layers: "sdgis:DQJ"} ); //添加地图控件 map.addControl(new OpenLayers.Control.LayerSwitcher()); map.addControl(new OpenLayers.Control.MousePosition()); map.addControl(new OpenLayers.Control.Scale()); //图层加入地图 map.addLayers([ol_wms]); map.zoomToExtent([97.027587, 21.166484, 106.739502, 27.467659], true);
相关推荐
Geoserver连Oracle Spatial 52 GeoServer架构浅谈 53 Geoserver发布地图无法显示问题 57 WebGIS相关的OpenGIS规范 58 geoserver中地图以外的区域以自定义图片填充 62 怎样修改 geoServer 的用户名密码 65 GeoServer...
主要将了ArcGIS与Oracle Spatial之间的连接问题,解决了ArcGIS对于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 Database 11g》是世界级Oracle Spatial专家Ravi Kothuri、Albert Godfrind和Euro Beinat自力作,旨在向您提供空间信息管理方面的概念知识和实用技能,帮助您成为该领域的专家。...
OracleSpatial oracle geoserver 将shape文件部署到oracle中区 运用OracleSpatial 空间数据库技术 管理数据
《Oracle Spatial空间信息管理:Oracle Database 11g》是世界级Oracle Spatial专家Ravi Kothuri、Albert Godfrind和Euro Beinat自力作,旨在向您提供空间信息管理方面的概念知识和实用技能,帮助您成为该领域的专家...
本书是世界级Oracle Spatial专家Ravi Kothuri、Albert Godfrind和Euro Beinat的力作,旨在向您提供空间信息管理方面的概念知识和实用技能,帮助您成为该领域的专家。书中涵盖了Oracle数据库中空间信息管理的所有内容...
Oracle Spatial 11g GeoRaster Oracle Spatial 11g GeoRaster Oracle Spatial 11g GeoRaster Oracle Spatial 11g GeoRaster
Oracle Spatial用户指南,超详细和全面。想从事空间数据库开发的可以看看.
oracle spatial 空间 笔记
Oracle Spatial9i 相关信息,GIS相关开发人员有必要了解!
oracle spatial 介绍,应用,案例,实用说明等相关介绍
介绍了如何使用Oracle Spatial操作通过ArcSDE存储到Oracle数据库中的空间数据
Pro Oracle Spatial for Oracle Database 11g shows how to take advantage of Oracle Database's built-in feature set for working with location-based data. A great deal of the information used in business ...
学习Oracle Spatial的入门书
Oracle Spatial是甲骨文公司针对空间数据管理的一组插件, 其针对存储在Oracle Spatial数据库中空间元素提供了一种SQL 模式和便于存储、检索、更新、查询的函数集。它由以下组件构 成:一种描述几何数据存储、语法、...
oracle spatial的开发文档,其中包括单独的GeoRaster开发文档。有助于对oracle spatial空间数据库的更深入的了解。
oracle spatial 用户指南和参考,对于想了解oralce spatial技术有帮助,不过是英文文档。
基于MapX和Oracle Spatial建立矿区土地复垦信息系统探讨.pdf