基于开源GIS的电子地图开发.docx

上传人:b****5 文档编号:6598247 上传时间:2023-01-08 格式:DOCX 页数:84 大小:5.33MB
下载 相关 举报
基于开源GIS的电子地图开发.docx_第1页
第1页 / 共84页
基于开源GIS的电子地图开发.docx_第2页
第2页 / 共84页
基于开源GIS的电子地图开发.docx_第3页
第3页 / 共84页
基于开源GIS的电子地图开发.docx_第4页
第4页 / 共84页
基于开源GIS的电子地图开发.docx_第5页
第5页 / 共84页
点击查看更多>>
下载资源
资源描述

基于开源GIS的电子地图开发.docx

《基于开源GIS的电子地图开发.docx》由会员分享,可在线阅读,更多相关《基于开源GIS的电子地图开发.docx(84页珍藏版)》请在冰豆网上搜索。

基于开源GIS的电子地图开发.docx

基于开源GIS的电子地图开发

目录

1开源GIS概述2

1.1什么是开源GIS2

1.2为什么需要开源GIS2

1.3开源GIS项目简介3

1.3.1PostGIS简介3

1.3.2GeoServer简介5

1.3.3OpenLayers简介7

1.4体系结构布署7

1.4.1基于J2EE的WebGIS体系结构7

1.4.2WMS规范和WFS规范8

2基于PostgreSQL和PostGIS的地图呈现9

2.1PostgreSQL和PostGIS的安装11

2.2PostGIS中的几何类型12

2.3PostGIS中空间信息处理的实现13

2.4PostGIS中的常用函数15

2.5向PostGIS导入shapefile数据21

2.6基于PostGIS的地图呈现实例21

3OpenLayers实践23

3.1项目介绍24

3.2源代码总体结构分析25

3.3BaseTypes :

定义底层类与定制JS内置类28

3.4BaseTypes:

OpenLayers中定制JavaScript内置类30

3.5空间数据的组织与实现33

3.6OpenLayers数据解析—以GML为例35

3.7数据渲染分析37

3.8地图表现38

3.9OpenLayers中的控件42

3.10OpenLayers事件机制分析45

3.11体系结构47

3.12GeoServer自带OpenLayers实例47

3.13OpenLayers官网经典例子57

3.13.1图层叠加58

3.13.2编辑功能60

3.13.3书签及样式63

3.13.4改变显示内容64

3.13.5动画效果66

3.13.6获得属性66

3.13.7局部放大67

3.13.8编辑功能70

3.13.9全屏70

数据来源于XX,网易等论坛

 

基于开源GIS的电子地图开发

1开源GIS概述

1.1什么是开源GIS

顾名思义,开源GIS就是开放源代码的GIS软件。

开源:

软件开发者以某种协议发布某些软件的源代码,并允许他人在遵守该协议的基础之上可以自由下载、修改、使用和散布其源代码。

开源协议:

GNUGPL、BSD、LGPL、MIT、MS-PL;开源网站:

opensourceGIS、sourceforge、googlecode、apache、codeplex。

随着商业GIS的发展而发展壮大,功能性强、技术强劲,背后是来自技术狂热者、科研院所和非盈利机构的大力支持。

开放、集成、标准和互操作,跨各类操作平台:

linux、windows、mac、mobile;跨各类语言:

C、C++、Java、C#、Python、Ruby、Perl、JavaScript、ActionScript;各种层次的产品:

桌面、服务器、数据库、客户端、中间件、工具集。

1.2为什么需要开源GIS

商业软件需要高昂的使用和维护费用,频繁的升级换代和兼容性。

其数据格式无法完全的共享和转换,而且商业软件的跨平台支持不够完善。

与之对比,开源软件是完全免费使用的,开源软件的发展足以满足常用的需求,提供做种解决方案。

开源GIS项目以及应用领域:

桌面:

GRASS、QGIS、UDig

服务器:

GeoServer、MapServer(free)

数据库:

PostGIS、MySQLSpatial、MS-SQLSpatial

客户端:

QGIS、OpenLayers、WorldKit

工具集:

JTS(NTS)、GEOS、Shapely、GDAL/OGR

中间件:

GeoTools、MapTools

其他:

WorldWind、TileCache、Proj4

开源GIS主要应用于:

资源管理(ResourceManagement),资源配置(ResourceConfiguration),土地信息系统和地籍管理(LandInformationSystemandCadastralApplicaiton),生态、环境管理与模拟(EnvironmentalManagementandModeling)以及分布式地理信息应用(DistributedGeographicInformationApplication)等众多领域。

1.3开源GIS项目简介

开源GIS项目主要有三个方面,即:

·数据库:

PostGIS

·服务器:

GeoServer

·客户端(B/S):

OpenLayers

1.3.1PostGIS简介

PostGIS是加拿大Refractions公司支持的开源项目,它为开源数据库PostgreSQL提供了空间支持。

PostGIS安装后,PostgreSQL中出现一个模版数据库,新建空间数据库时只需以PostGIS为模版即可。

PostGIS在SQL级别上实现了基本的空间运算功能。

另外绝大多数开源GIS软件(即使是不严格遵守OpenGIS标准的)都支持PostGIS数据表的直接载入,读写等功能。

毋庸置疑,PostGIS是OpenGIS数据源最佳实现。

图1PostGIS数据

PostGIS安装和使用:

首先下载(http:

//www.postgresql.org/)并安装PostgreSQL8.x版本,目前最新的为8.4。

安装完毕后设置默认的用户名和密码,添加此用户。

然后打开ApplicationStackBuilder选择需要安装的插件,里面选中PostGIS1.5forPostgreSQL8.x,选择合适的版本。

下载后自动安装。

安装后可以看到一个模板数据库和一个默认的空间数据库,之后可以根据模板数据库添加一个空间数据库来使用,里面实现的大量的空间分析和空间应用的函数。

同时包含一个shapefiledbfinputloader工具。

再登录到PostgreSQL中可以进行空间数据的增删改查。

PostGIS中的几何数据类型

1)OGC的WKB和WKT格式

PostGIS支持所有OGC规范的“SimpleFeatures”类型。

OGC定义了两种描述几何对象的格式,WKB(Well-KnownBinary)和WKT(Well-KnownText)。

WKT是以文本形式描述,WKB是以二进制形式描述。

使用WKB和WKT能够很好的与其他系统数据交换,目前大部分支持空间数据存储的数据库构造空间数据都采用这两种方式。

支持的几何对象在SimpleFeaturesGeometries1.0中包括:

Point,LineString,Polygon,Multi-Polygon,MultiLineString,MultiPoint,GeometryCollection。

2)EWKT、EWKB和Canonical格式

OGC中定义的WKT与WKB只支持二维的几何数据类型,并且不支持空间参考。

PostGIS对OGC的数据格式进行扩展得到EWKT和EWKB格式,主要扩展有3DZ、3DM、4D坐标和内嵌空间参考支持。

每个有效的WKT和WKB格式都是有效的EWKT和EWKB。

然而这种数据格式并不稳定,如果与OGC推出的新数据格式冲突,那么它将来有可能会改变。

而目前OGC的SimpleFeatures1.2已经推出支持3D,4D的WKT,WKB格式,EWKT与EWKB的发展方向还需拭目以待。

Canonical格式是一种简单查询结果(没有任何函数调用),并且此格式支持简单的插入、更新和复制,是一种16进制编码的几何对象。

3)SQL-MM格式

QL多媒体及应用包(SQL-MM)格式定义了一些插值曲线,这些插值曲线和EWKT类似,也支持3DZ、3DM、4D坐标,但是不支持嵌入空间参考。

PostGIS中的地理数据类型

在PostGIS最近发布的版本1.5.0中加入了地理数据类型(GeographyType)。

这种数据类型直接支持大地坐标(geodeticcoordinates),即经纬度。

PostGIS几何数据类型的基础是一个平面,平面上两点之间的最短距离是一条直线。

因此,在计算几何图形的面积、距离、长度、交集等操作时可以使用笛卡尔数学计算公式和直线向量。

PostGIS地理数据类型的基础是一个球体。

球体上两点之间的最短距离是大圆圆弧(greatcirclearc)。

如果要结果更加精确,则需要考虑真实世界的球体形状,这样将使计算变得复杂。

因此,基于地理数据类型的功能函数少于基于几何数据类型的功能函数。

而且这种数据类型现在还只支持WGS84(SRID

(Spatialreferencesystem):

4326)的经纬度坐标。

PostGIS地理数据类型现在仅支持最简单的要素:

OGC规范的“SimpleFeatures”类型。

在数据格式方面,支持OGC的WKB和WKT格式,也可以使用EWKB或EWKT插入数据。

PostGIS对空间数据的读取

现存的GIS软件产生的数据格式很多,PostGIS提供了多种方式支持数据的读取。

1)PSQL语言

Psql语言是PostgreSQL内嵌的一个命令行工具,其语法基本上跟标准的SQL语法一致,结合标准的SQL语法和一些PostGIS的扩展对PostGIS数据库进行读写操作。

2)使用转换工具

①PostGIS自带的转换工具:

shp2pgsql、pgsql2shp可在shapefile数据与PostGIS数据库之间转换;

②使用ogr工具:

这个工具PostGIS自身并没有提供,但它同样是一个开源软件,Ogr是GDAL的一个组成部分,GDAL是一个各种GIS数据格式的转换软件库,ogr是转换矢量GIS数据的软件库,目前ogr所支持的数据格式有以下几种:

ESRIShapefile,MapInfoTabfile,TIGER,s57,DGN,CSV,GML,KML,Interlis,SQLite,ODBC,PostGIS/PostgreSQL,MySQL[11];③使用桌面软件QuantumGIS中的SPIT插件来将shapefile读到PostGIS数据库中。

1.3.2GeoServer简介

GeoServer是OpenGISWeb服务器规范的J2EE实现,利用GeoServer可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过GeoServer可以比较容易的在用户之间迅速共享空间地理信息。

GeoServer主要特性包括:

兼容WMS和WFS特性;支持PostGIS、Shapefile、ArcSDE、Oracle、VPF、MySQL、MapInfo;支持上百种投影;能够将网络地图输出为jpeg、gif、png、SVG、KML等格式;能够运行在任何基于J2EE/Servlet容器之上;嵌入OpenLayers支持AJAX的地图客端;除此之外还包括许多其他的特性。

图2GeoServer功能

图3GeoServer界面图

客户端Openlayers的使用及开发方法

GeoServer中集成了Openlayers,也可以使用单独下载的OpenLayers软件包。

在默认情况下,Openlayers只有基本的缩放(Zoom)、拖动(Pan)功能。

如果需要更丰富的服务,可以调用openlayers.layer的子类完成图层的初始化;在创建好图层后,还可以调用Openlayers提供的openlayers.control类为地图添加一些与用户有互动功能的工具栏或者是“按钮”。

GeoServer支持多种客户端,WMS可以返回GeoRSS和KML用来和其他地图服务互通。

GeoServer服务启动后,在浏览器中输入http:

//localhost:

8080/geoserver/即可以看到操作界面。

要完成数据的发布,需要进行四个方面的配置。

Server:

设置服务器信息和联系信息,服务信息包括:

最大地理要素数限制、是否显示详细异常信息、数字精度、语言编码、日志相关;联系信息包括:

单位名称、地址、联系方式等。

WFS:

设置WFS相关信息,包括:

是否启用WFS服务、服务层次(基本服务、事务处理层次、完全服务)以及WFS服务器描述信息和TestSuites的使用。

WMS:

设置内容包括,是否启用WMS服务、描述信息、SVG图形表现形式。

Data:

数据配置,有四部分内容:

名称空间、数据、要素类、样式。

GeoServer默认可读取的数据有PostGIS、shapefile等几种格式,对ArcSDE,GML等格式的支持,可通过插件实现。

在本文中,使用PostGIS加载数据。

1.3.3OpenLayers简介

OpenLayers是一个用于开发WebGIS客户端的JavaScript包。

OpenLayers符合行业标准,比如OpenGIS的WMS和WFS规范。

OpenLayers采用面向对象方式开发,并使用来自Prototype.js和Rico中的一些组件。

OpenLayers支持的地图来源包括GoogleMaps、Yahoo!

Map、微软VirtualEarth等。

用户还可以用简单的图片地图作为背景图,与其他的图层在OpenLayers中进行叠加。

OpenLayers支持OpenGIS协会制定的WMS和WFS等网络服务规范,可以通过远程服务的方式,将以OGC服务形式发布的地图数据加载到基于浏览器的OpenLayers客户端中进行显示。

OpenLayers可以在浏览器中实现地图浏览的基本效果,比如放大、缩小、平移等常用操作之外,还可以进行选取面、选取线、要素选择、图层叠加等不同的操作。

可以对已有的OpenLayers操作和数据支持类型进行扩充,为其赋予更多的功能。

可以为OpenLayers添加网络处理服务WPS的操作接口,从而利用已有的空间分析处理服务来对加载的地理空间数据进行计算。

OpenLayers安装和使用:

首先下载(http:

//openlayers.org/)压缩包,通过Web服务器发布。

Builder文件夹用来打包压缩所有的js文件,doc文件夹存放API文档,examples文件夹存放所有的例子(重要的学习途径),lib是源文件库,test文件夹是一个测试例子,tools存放用来打包的工具(python)。

在浏览器输入发布地址+/examples/xx.html进入需要了解的例子查看即可。

1.4体系结构布署

1.4.1基于J2EE的WebGIS体系结构

将WebGIS与J2EE相结合,利用J2EE的平台无关性与分布式结构,以EJB(EnterpriseJavaBean)封装WebGIS的应用功能,实现WebGIS应用层的可移植性。

对应于J2EE从业务逻辑上的划分,将WebGIS分为3层:

客户层、中间层、数据层。

1)客户层:

可以是应用程序、浏览器,本文采用浏览器与OpenLayers相结合,为用户提供栅格或者矢量地理信息。

2)中间层:

包括Web层、Web应用服务层。

Web层采用Tomcat作为Web容器,在此容器中提供了JSP(JavaServerPages)以及Servlet组件,负责客户端与应用服务器的通讯和客户端的请求。

Web应用服务层是系统的核心,它运行在WebGIS应用服务器上,由运行在EJB容器中的实体EJB组件与会话EJB组件组成。

本系统的GIS服务器采用GeoServer1.6.0,由它来处理各种来自于浏览器或者其他应用程序的WMS与WFS请求,完成WebGIS空间数据访问和复杂的空间任务,并可以通过多种数据源接口直接访问空间数据,将处理的结果以栅格、矢量或者GML的形式传输到客户端。

3)数据层:

空间数据源可以有多种,可以是单独的文件或者是数据库。

本文采用了PostGIS空间数据库存放数据源,数据源可由应用服务器内的EJB通过JDBC访问。

图4是系统结构图。

图4系统结构图

1.4.2WMS规范和WFS规范

OGC的宗旨是让用户能从任何一个网络、应用程序或计算机平台中,方便地获取地理信息和服务;通过共同的接口规范,让数据、服务提供者、应用系统开发者和信息整合者,能在短时间内花最少的费用,让使用者容易获取、使用数据及服务[5]。

在OGC完成的正式规范中,用于网络客户端与服务器端之间通信的共同接口规范Web地图服务接口规范(WMS)和Web要素服务实现规范(WFS)等在不同程度上解决了地理空间数据和服务的互操作问题。

WMS规范

WMS是OGC提出的OpenWebServices规范之一。

它利用具有空间地理位置信息的数据制作地图。

在WMS规范中,将地图定义为地理数据可视化表现,通过请求WMS返回的是地图图像,而不是地理数据。

此规范定义了三个基础性操作协议:

GetCapabilities、GetMap、GetFeatureInfo。

这些协议共同构成了利用WMS创建和叠加显示不同来源的远程异构地图服务的基础[6]。

1)GetCapabilities用来请求获得WMS的服务级元数据,服务器端返回包括版本信息、服务类型、请求内容等元数据使用XML形式来表示。

2)GepMap根据请求内容的不同,返回不同格式的数据。

可以返回常用图片格式的栅格地图片段,也可以通过安装第三方插件返回矢量地图供用户浏览。

地图的渲染是通过一个样式文件SLD(StyledLayerDescriptor)生成的,此文件用XML编写。

3)GetFeatureInfo操作是可选操作,可提供给用户地理要素信息,如用户在客户端点击地图上的某一元素,GetFeatureInfo操作即可返回该元素的相关属性信息。

WFS规范

WFS也是由OGC提出的OpenWebServices规范。

WFS更透明更开放的提供了网络地图应用。

它不像WMS一样只提供图片给用户,而是以GML格式把源地理信息数据表现出来,GML是一种基于XML的数据格式,它可以完整的再现数据,使得服务器端和客户端能够在要素层面进行“通讯”。

这些GML数据可以下载并可以与其他数据结合做分析,也可以与其他的网络服务相结合,给网络提供更丰富的应用[8]。

WFS可以分为两种服务类型:

BasicWFS与TransactionWFS服务。

BasicWFS提供了三种操作:

2基于PostgreSQL和PostGIS的地图呈现

1986年,加州大学伯克利分校的MichaelStonebraker教授领导了Postgres的项目,它是PostgreSQL的前身。

随后出现了PostGIS,PostGIS是对象-关系型数据库系统PostgreSQL的一个扩展,它的出现让人们开始重视基于数据库管理系统的空间扩展方式,而且使PostGIS有望成为今后管理空间数据的主流技术。

由于空间数据具有空间位置、非结构化、空间关系、分类编码、海量数据等特征,一般的商用数据库管理系统难以满足要求。

为了提高数据库管理系统(DBMS)对空间数据的管理能力,国内外先后出现过:

文件与关系数据库混合管理系统、全关系型空间数据库管理系统、关系型数据库+空间数据引擎、扩展对象关系型数据库管理系统,以及面向对象空间数据库管理系统等多种解决方案。

目前,国内外较为流行的主要集中在“关系型数据库+空间数据引擎”、“扩展对象关系型数据库”两方面。

缘起PostgrSQL

1986年,加州大学伯克利分校的MichaelStonebraker教授领导了Postgres的项目,它是PostgreSQL的前身。

这个项目的成果非常显著,在现代数据库的许多方面都作出了大量的贡献,如在面向对象的数据库、部分索引技术、规则、过程和数据库扩展方面都取得了显著的成果。

同时,Stonebraker将PostgreSQL纳入到BSD版权体系中,使得PostgreSQL在各种科研机构和一些公共服务组织得到了广泛的应用。

在PostgreSQL中已经定义了一些基本的集合实体类型,这些类型包括:

点(POINT)、线(LINE)、线段(LSEG)、方形(BOX)、多边形(POLYGON)和圆(CIRCLE)等;另外,PostgreSQL定义了一系列的函数和操作符来实现几何类型的操作和运算;同时,PostgreSQL引入空间数据索引R-tree。

尽管在PostgreSQL提供了上述几项支持空间数据的特性,但其提供的空间特性很难达到GIS的要求,主要表现在:

缺乏复杂的空间类型;没有提供空间分析;没有提供投影变换功能。

为了使得PostgreSQL更好的提供空间信息服务,PostGIS应运而生。

PostGIS简介

PostGIS是对象关系型数据库系统PostgreSQL的一个扩展,PostGIS提供如下空间信息服务功能:

空间对象、空间索引、空间操作函数和空间操作符。

同时,PostGIS遵循OpenGIS的规范。

PostGIS的版权被纳入到GNU的GPL中,也就是说任何人可以自由得到PostGIS的源码并对其做研究和改进。

正是由于这一点,PostGIS得到了迅速的发展,越来越多的爱好者和研究机构参与到PostGIS的应用开发和完善当中。

PostGIS特性

PostGIS支持所有的空间数据类型,这些类型包括:

点(POINT)、线(LINESTRING)、多边形(POLYGON)、多点(MULTIPOINT)、多线(MULTILINESTRING)、多多边形(MULTIPOLYGON)和集合对象集(GEOMETRYCOLLECTION)等。

PostGIS支持所有的对象表达方法,比如WKT和WKB。

PostGIS支持所有的数据存取和构造方法,如GeomFromText()、AsBinary(),以及GeometryN()等。

PostGIS提供简单的空间分析函数(如Area和Length)同时也提供其他一些具有复杂分析功能的函数,比如Distance。

PostGIS提供了对于元数据的支持,如GEOMETRY_COLUMNS和SPATIAL_REF_SYS,同时,PostGIS也提供了相应的支持函数,如AddGeometryColumn和DropGeometryColumn。

PostGIS提供了一系列的二元谓词(如Contains、Within、Overlaps和Touches)用于检测空间对象之间的空间关系,同时返回布尔值来表征对象之间符合这个关系。

PostGIS提供了空间操作符(如Union和Difference)用于空间数据操作。

比如,Union操作符融合多边形之间的边界。

两个交迭的多边形通过Union运算就会形成一个新的多边形,这个新的多边形的边界为两个多边形中最大边界。

PostGIS还提供以下功能:

·数据库坐标变换

数据库中的几何类型可以通过Transform函数从一种投影系变换到另一种投影系中。

在OpenGIS中的几何类型都将SRID作为自身结构的一部分,但不知什么原因,在OpenGIS的SFSQL规范中,并没有引入Transform。

·球体长度运算

存储在普通地理坐标系中的集合类型如果不进行坐标变换是无法进行程度运算的,OpenGIS所提供的坐标变换

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1