电子地图

概述
电子地图为一AJAX的应用系统,前台页面基于OpenLayers2.2版本来开发,地图服务基于GeoServer1.5,后台查询基于Spring和Hibernate。前后台基于JSON方式进行通信。
注意:为了使代码有最大的安全和维护保障,前后台所有的文件存储和通信编码均为UTF-8(SLD文件有例外,另有说明),数据库编码安装时也指定为UTF-8。

关键词
开源软件 WebGIS OpenGIS PostgreSQL PostGIS GeoTools GeoServer uDig OpenLayers


相关概念解释

   开源软件、Web技术相关

   GPL:GNU全局公共许可证(General Public License)简称为GPL,是GNU的开源软件许可证的一种,大多数的 GNU 程序和超过半数的自由软件使用它。同时,它也是开源软件领域对许可人权力限制最严的许可证。GPL首先是承认软件的版权——软件有原始的版权所有者,然后纳入自由软件的版权许可约束。在承认版权的前提下,通过软件的版权许可来实现自由权利的要求。GPL许可证最重要的特点在于它要求根据GPL许可证发布的软件(如:最有影响力的Linux)修改、翻译的演绎作品,甚至只要其任何一部分代码是以GPL发布的,那么全部程序也必须受GPL许可证的约束,即继续遵守GPL许可证的规定,有些人将其称之为GPL的“病毒效应”。GeoTools、GeoServer都使用GPL授权协议。

AJAX:Asynchronous Javascript and XML(异步Javascript和XML),AJAX是Web2.0时代的主要技术之一,它通过JS与服务器通信,中间传输数据使用XML(当然采用XML不是必须的,如本系统为JSON),实现网页内容无刷新更新。网上地图的请求与显示通常采用此技术,最典型的如:Google Map。本文中的OpenLayers也使用了此技术。

JSON:JavaScript Object Notation(JavaScript对象符号),JSON是一种用简单文本描述JavaScript对象的开放格式标准,它易于构建和解析。换句话说,可以将发往浏览器的数据编码格式从XML改为JSON对象,而JSON对象能够很容易地转成JavaScript对象。

MVC设计模式:模型-视图-控制(Model、View、Controller)的缩写。模型(Model)是应用程序的主体;视图(View)负责生成用户界面部分;控制器可以根据用户的输入,控制用户界面数据显示及更新Model对象状态。MVC设计模式要求在应用程序开发中将模型逻辑,界面显示,数据层相分离。MVC设计模式由事件驱动。OpenLayers就实现了这种设计模式。

OpenGIS相关

   OGC:OpenGIS联盟。
WMS:Web Map Server 网上地图服务,最简单的功能就是:通过HTTP请求,获得相应的地图,地图为图片格式,如:JPG/GIF/PNG。

WFS:Web Feature Server 网上要素服务,最简单的功能就是:通过HTTP请求,获得相关的地理要素信息。

WCS:Web Coverage Server,简单地说就是对栅格数据的服务,它允许用户得到连续的栅格图像,这些图像可能包含多个波段,因此你可以将一幅完整的多波段遥感影像放到你的WCS服务器上用WCS进行Internet共享,而用户利用浏览器或者其它胖客户端工具通过HTTP请求就可以得到这个影像数据。当然可以对请求参数进行限定,取得其中的一部分(空间的一部分或波段的一部分)数据。

SLD:风格化图层描述器(Styled Layer Descriptor)的简称,用于定义地图显示样式,GeoServer支持SLD,通过自定义SLD,可以在地图中显示文本和图片符号,还可以设置过滤器,自定义图例。
GML:地理标记语言,是WFS规范指定的地理要素的XML编码声明和数据格式。

WKB/WKT:OpenGIS规范定义了两种表达空间数据的标准方法:Well-Known Text (WKT) 和Well-Known Binary (WKB)

相关软件介绍:

   GeoTools:一个基于JAVA的开源的GIS工具包,提供了实现OGC规范的一系列函数。是一个松散的工具包,用户可以调用其中的相应的包进行开发。Geoserver、uDig就是基于Geotools的。

        GeoServer:GeoServer基于JAVA的开源软件,通过调用GeoTools,提供遵循OGC标准的WFS-T和WMS服务。其WMS结果的显示演示采用了OpenLayers。

OpenLayers:一个基于AJAX技术的网上地图显示客户端,支持WMS地图显示、WMS时间序列地图动态显示、GML/Feature数据显示等。

PostgreSQL/PostGIS:最先进的开源数据库,PostGIS是其在空间数据上的扩展。

WebGIS相关的OpenGIS规范

WFS/WMS:

3.1.1、版本与流通


版本号为三段数字表示,现在(2006-5-17)WFS的最新版本是1.1.0,旧版本有0.9.1、1.0.0;WMS的版本有:1.0、1.1、1.1.1、1.3.0。Geoserver支持WFS1.0、WMS1.1.1,其返回的GML版本是2.1.2。
版本号必须出现在两个地方,一是客户端请求参数中、再是服务器GetCapabilities 操作返回的Capabilities XML文档中。
需要注意的是,客户端请求的版本号应该与服务器支持的版本号匹配,否则按最近匹配原则:
1、    如果客户端请求的版本号高于服务器支持的,服务器按其支持的最高的版本号执行,相反,则按最低版本号执行。
2、    如果服务器响应的版本号高于客户端支持的,客户端会重新发送一个较低版本号的请求,相反,发送一个较高的版本。下面以WFS为例
版本匹配示意图

请求规则:有两种请求方式:Get、Post。

WFS的Post请求是提交一个符合WFS规范的XML文本,服务器来对这个XML文本进行解析后执行,下面是 两个Get请求:
请求一:

http://127.0.0.1/geoserver/wfs?request=GetCapabilities&service=WFS&version=1.0.0
解释说明:
操作:GetCapabilities
服务:WFS
版本:1.0.0
请求二:
http://127.0.0.1/geoserver/wms?VERSION=1.1.1&REQUEST=GetMap&SERVICE=WMS&SRS=EPSG:4326&BBOX=146.9632808102,-42.2041379916633,147.0813008202,-42.1368665859633&WIDTH=500&HEIGHT=285&LAYERS=topp:tasmania_roads&FORMAT=image/png&STYLES=&TRANSPARENT=TRUE&TIME=
解释说明:
version=1.1.1 版本号为1.1.1
request=GetMap 执行GetMap操作
服务:WMS
坐标参考系统为EPSG:4326
地图范围:
地图大小:500*285
图层:topp:Tasmania_roads
地图格式:png
地图样式:默认样式
透明显示:是

响应规则:如果请求正常,服务器将返回一个对象,并伴随这个对象的MIME(多用途因特网邮件扩展,常用的文件格式都伴随着一个MIME类型,如邮件附件,GIF图片image/gif)类型和描述(如对象大小、编码类型等等)。否则,应该返回一个服务器异常。

WFS请求编码:规范定义了两种WFS请求编码方法,一是使用XML,二是使用KVP(键值对)
WFS操作与请求编码:

操作

请求编码

GetCapabilities

XML & KVP

DescribeFeatureType

XML & KVP

GetFeature / GetFeatureWithLock

XML & KVP

LockFeature

XML & KVP

Transaction

XML & limited KVP



WFS名称空间:有三个标准化的名称空间:
(http://www.opengis.net/wfs) - for the WFS interface vocabulary
(http://www.opengis.net/gml) - for the GML vocabulary
(http://www.opengis.net/ogc) - for the OGC Filter vocabulary

坐标参考系统
使用EPSG 标准,其值通常是4326。

WFS操作
DescribeFeatureType(要素类型特征描述)操作:此操作产生一个WFS服务器所提供的地理要素的大纲描述,这个描述定义了WFS地理要素实例怎样被输入、编译和输出。对于一个DescribeFeatureType请求,应返回一个由XML Schema定义的GML3应用程序大纲。
GetFeature(获取对象) 操作:因为地理要素的规范表示是使用GML,所以GetFeature操作涉及到GML规范中的地理要素模型。在GML中,一个地理要素表现为XML文档中的一个元素,一个GML文档可包含多个地理要素。当GetFeature请求的输出格式设为text/gml; subtype=gml/3.1.1时,一个GML实例将被返回给客户端。
GetGMLObject(获取GML对象) 操作:允许通过ID号从服务器上获取地理要素和元素,该操作将返回一个XML片段。注意GetGMLObject操作不是可选的,不是服务器必需支持的。
LockFeature (锁定要素)操作:网络连接本身是不稳定的,要实现事务操作的正确执行,解决并发冲突问题,需要锁定地理要素,这类似数据库中的相关操作(实际上也确实是一种空间数据库操作)。
Transaction(事务操作):事务操作描述了从网上获得的地理要素实例的数据事务操作。当事务操作完成时,WFS服务器将返回一个XML文档指示事务的完成状况。
GetCapabilities(获取服务能力)操作:任何OGC的web服务器,包括WFS、WMS,必须提供GetCapabilities操作,用于描绘服务器性能容量。GetCapabilities请求将返回服务器元数据。

WMS操作:
GetCapabilities(强制)操作:反映服务器性能信息,与WFS的GetCapabilities操作相似。
GetMap(强制)操作:返回地图,这是最常用的操作,可参考前面请求规则的请求二例子。
GetFeatureinfo(可选):该操作是可选操作,能提供给客户端更多地理要素的信息,如在客户端选择地图上某一点,GetFeatureinfo操作可以返回该点的相关信息。

空间数据格式WKB/WKT
OpenGIS规范定义了两种表达空间数据的标准方法:Well-Known Text (WKT) 和Well-Known Binary (WKB) 形式。WKT和WKB都包括对象的类型和坐标系。OpenGIS规范还需要空间对象的internal存储格式包括空间参考系统标示符(SRID),在空间对象装入数据库时需要提供SRID。
OGC的更多信息,请访问:http://www.opengeospatial.org

你可能感兴趣的:(电子地图)