1、GeoServer(地理信息系统服务器)是 OpenGIS Web 服务器规范的
J2EE 实现(geoserver 只能用 j2ee 开发),利用 GeoServer 可以方便的发布
地图数据。GeoServer 的主要特征包括:兼容 WMS 和 WFS 特性;能够
将网络地图输出为 jpeg、gif、png、SVG、KML 等格式;能够运行在任何
基于 J2EE/Servlet 容器之上。其安装方式有两种,一种是常见的.EXE 安装,
这种安装方式最简单,只要确保你电脑上安装了 JDK 并且 8080 端口是开的,
按照安装步骤一步一步来就可以完成安装,安装完成以后,可以从开始菜
单中选择 GeoServer -> Start GeoServer 进行启动,启动服务后,打开浏览器,
输入 http://localhost:8080/geoserver/就可以查看到 GeoServer 的欢迎界面了。
另一种安装是以.WAR 的形式安装,开发者电脑上得先安装有 Tomcat,然
后将此 WAR 导入即可。
Geoserver 是一个功能齐全,遵循 OGC 开放标准的开源 WFS-T 和 WMS 服
务器。利用 Geoserver 可以把数据作为 maps/images 来发布(利用 WMS 来实现)
也可以直接发布实际的数据(利用 WFS 来实现),同时也提供了修改,删除和新
增的功能(利用 WFS-T)。 GeoServer, 顾名思义,是一个 Server. 它是开源的 ,允
许用户查看和编辑地理数据。GeoServer 能够发布的数据类型:
(1)地图或影象——应用 WMS
(2)实时数据——应用 WFS
(3)用户更新、删除和编辑的数据——应用 WFS-T。
GeoServer 是您需要显示地图在网页的那些工具的当中一个,用户可以缩放
并且移动。可以与一些客户端联合使用,比如:MapBuilder (for web pages), UDig,
GVSig,等等。 对标准的使用允许信息从 GeoServer 到其它地理信息可以很容易
地被结合。
2、Web 地图服务(WMS):利用具有地理空间位置信息的数据制作地图,其中将
地图定义为地理数据可视的表现,地图本身并不是数据。地图通常以图像格式表
达,例如 PNG,GIF 或是 JPEG,有时候也表达为基于矢量图形,如可缩放矢量图
形(SVG)或是网络电脑图形元文件等格式(WebCGM)。根据 OGC 规范,地图服务
是专门提供共享地图数据的服务,负责根据客户程序的请求,提供地图图像、指
定坐标点的要素信息、以及地图服务的功能说明信息。
WMS 规范定义了三个接口(操作):GetCapabilities(获取服务能力), GetMap
(获取地图)和 GetFeatureInfo(获取对象信息)。其中 GetMap 为核心操作。
GetCapabitities 返回服务级元数据,它是对服务信息内容和要求参数的一种描述;
GetMap 返回一个地图影像,其地理空间参考和大小参数是明确定义了的;
GetFeatureInfo(可选)返回显示在地图上的某些特殊要素的信息。这个规范还定
义了一个用于调用上述操作的万维网统一资源定位器(URL)语法和服务级元数
据的 XML(可扩展标记语言)表达法。
3、WMS 请求方式: WMS 支持标准 HTTP 中标准的 GET 请求和 POST 请
求方式,不过对于 WMS 来说,基本都是基于 GET 方式的服务请求,而且 O
GC 官方提供的兼容性测试中也都是基于 GET 方式的请求。
OGC 网络服务明确支持的唯一的分布式计算平台(DCP)就是是万维网本身,
更明确地说是实现了超文本传递协议(HTTP)的网络主机。因此,每个由服务
实例支持的各操作的在线资源都是一个 HTTP 的统一资源定位器(URL)。HTTP
支持两个请求方法:GET 和 POST,一个基本的 WMS 规范仅仅定义用来调用操
作的 HTTP GET。URL 规范保留了一些特定的字符并赋予它们必要的意义,如
下表 1,
表1 HTTP GET查询中的保留字符
字符
用
途
?
&
=
/
:
,
查询语句开始的分隔符
查询语句参数之间的分隔符
参数名字和参数值之间的分隔符
格式参数值中 MIME 类型子类型之间的分隔符
SRS 参数值中命名空间和标识之间的分隔符
清单型参数中单个值的分隔符(例如 GETMAP 请求中的 BBOX,
LAYERS 和 STYLES)
用于 HTTP GET 请求的在线资源 URL 事实上仅仅是一个 URL 前缀,为了建
立一个有效的操作请求,在其后还添加了另外的参数。URL 前缀被定义为一个
不透明的字符串,它包括协议、主机名、端口号(可选)、路径、和一个问号“?”,
还可以包括一个或几个用于具体服务器的参数并以“&”结束。
表2总结了操作请求URL的各个构件:
URL 构件
表2 普通OGC网络服务请求
描
述
http://host[:port]/path?{name[=value]&}
name=value&
服务操作的URL前缀。[ ]表示可选
择0个或1个事件;{}表示0个或更多的事
件。前缀完全取决于服务提供者。
由OGC网络服务定义的一个或更
多的标准请求参数的名称和数值对。对
于每个操作,相应的的OWS规范都规定
了请求中使用的必选和可选参数的实际
列表。
4、网络地图服务(WMS)的三大操作
(1)GetCapabilities(必选)
http://localhost:8080/geoserver/wms?service=WMS&request=GetCapabilities( GeoServer )
(浏览器会返回提示打开或保存一个文件,我的机器返回的是一个叫“wms”的文
件,没有扩展名。没关系我们把它保存为“wms.xml”就可以了)
GetCapabilities 请求返回的是一个对于 WMS 服务的一个元数据的描述,其中
包括有当前服务提供商的一些基本信息以及当前服务的一些能力,而对于使用
WMS 服务的客户端来说,能获取到的所有信息全部包含在此文档中,当客户端
发送一个服务中没有提供的的图片格式时,此时服务端将没有能力处理此请求。
在使用 WMS 服务时需要确认当前服务提供的能力,以便在使用过程中发生一些
不必要的麻烦。
GetCapabilities 接口用于向客户端提供当前地图服务器可以提供的空间信息
类型和范围、具体的图层信息和显示样式、支持的查询方式、没有查询结果时(异
常)的缺省返回信息格式等服务描述信息。
GetCapabilities 请求 URL 的参数
请求参数
VERSION=version(Version ( 版
本 )=(1.1.1 或者 1.3.0) )
必选(M)/
可选(O)
O
说明
请求版本,URL 中可选的请求参数,当没
有使用时就使用当前服务提供商提供的最
高的 wms 版本服务
SERVICE=WMS
REQUEST=GetCapabilities
FORMAT=MIME_type
UPDATESEQUENCE=strin
g
M
M
O
O
服务类型
请求名,请求中必须设置当前请求的操作,
可以设置 request 的值为 Getcapabilities 、
GetMap 、 GetFeatureInfo
服务元数据的输出格式
用于控制缓冲存储的数字序列或字符串
(2)GetMap(必选)
http://localhost:8080/geoserver/wms?bbox=-130,24,-66,50&styles=population&Format=image/pn
g&request=GetMap&layers=topp:states&width=550&height=250&srs=EPSG:4326
GetMap 接口的目的在于请求服务器生成一幅具有确定地理位置坐标范围的
地图图像。但按照 WMS 规范,这个操作需要明确地指定出操作本身遵循的 WMS
规范的版本号以及需要显示的具体图层、对应的坐标范围、返回图像的大小和格
式等。
请求参数
GetMap 请求的参数
必选的
(M)/
可选的
(O)
说 明
VERSION=version
M
请求版本.
请求参数
REQUEST=GetMap
LAYERS=layer_list
STYLES=style_list
CRS=namespace:identifier
BBOX=minx,miny,maxx,maxy
WIDTH=output_width
HEIGHT=output_height
FORMAT=output_format
TRANSPARENT=TRUE|FALSE
BGCOLOR=color_value
EXCEPTIONS=exception_format
必选的
(M)/
可选的
(O)
M
M
M
M
M
M
M
M
O
O
O
说 明
请求名称.
以逗号隔开的一个或多个图层列表,
若存在 SLD 参数则是可选的。
以逗号隔开的请求图层的一个再现风
格列表,若存在 SLD 参数则是可选的。
坐标参考系。
以 SRS 单位表示的边界框边角 (左下
角,右上角)。
以像素表示的地图图像宽度。.
以像素表示的地图图像高度
地图输出格式。.
地图背景的透明性 (default=FALSE).
以十六进制 RGB 颜色值表示的背景颜
色(default=0xFFFFFF).
WMS 通告异常的格式
(default=SE_XML).
请求层的时间值。
O
O
O
O
TIME=time
ELEVATION=elevation
Other sample dimension(s)
Vendor-specific parameters
下列参数只用于支持格式化层描述符规范的网络地图服务 [3].
SLD=styled_layer_descriptor_UR
L
WFS=web_feature_service_URL
请求层的高程。
其它适当维度的值。.
可选的实验性参数。.
O
O
格式化层描述符的 URL(如同 SLD 规
范中确定的).
网络要素服务 URL,该服务提供将要
用 SLD 进行符号化的要素。.
注:在 LAYERS 参数值和 STYLES 参数值之间存在一个一一对应关系
对 GetMap 的响应:
对有效的GetMap请求的响应必须是一张地图,它包含了所请求的具有地理参
考坐标的信息层,使用的是期望的样式,并且采用了指定的空间参照系、范围框、
大小和透明性。一个无效的GetMap请求必须产生一个按请求的Exceptions格式输
出的错误信息(或在极端情况下回答一个网络协议错误)。
(3)GetFeatureInfo(可选)
GetFeatureInfo 是一个可选操作。该操作向 WMS 的客户端程序提供了进一步
查询特定空间实体信息的能力。这种操作往往是由客户程序在 WMS 服务器先前返
回的地图上指定了一个空间实体,进而提交查询而形成。支持 GetFeatureInfo
操作的仅仅是那些定义或继承了属性 queryable=“1”的层。对于其它层,客户端
不能发送 GetFeatureInfo 请求。如果一个 WMS 不支持该请求而遇到了它,则应
该应答一个适当格式的服务异常。
GetFeatureInfo请求参数
请求参数
VERSION=version
REQUEST=GetFeatureInfo
map request part
必选(M)/
可选(O)
M
M
M
QUERY_LAYERS=layer_list
M
INFO_FORMAT=output_format M
FEATURE_COUNT=number
O
M
X=pixel_column
Y=pixel_row
M
EXCEPTIONS=exception_format O
5、三大操作的样例
描述
请求版本。
请求名称。
地图请求参数的部分拷贝,这些参数产生了
需要查询其信息的地图。
用逗号分隔的需要查询的一个或多个层的列
单。
要素信息的返回格式(MIME 类型)。
需要返回其信息的要素个数(default=1)。
用像素表达的要素的 X 坐标 (以左上角坐标
为 0)。
用像素表达的要素的 Y 坐标 (以左上角坐标
为 0)。
WMS 报 告 异 常 信 息 采 用 的 格 式
(default=application/vnd.ogc.se_xml)。
(1)GetMap 请求类似于在 Web 上请求一幅图像,但它的请求参数更加复杂。
下面是一个样例请求:
http://webmapping.mgis.psu.edu/geoserver/wms?version=1.1.1&request=getmap&lay
ers=topp:states&styles=population&SRS=EPSG:4326&bbox=-125,24,-67,50&width
=400&height=200&format=image/png
返回的图像如下图所示:
>
其中:
http:// —— 使用的网络协议
webmapping.mgis.psu.edu/ —— 主机域名
geoserver/wms —— 页面或 web 程序位置
version=1.1.1 —— WMS 版本号
request=getmap —— 操作动词,可以为 GetCapabilities, GetMap 和 GetFeatureInfo
等
layers=topp:states —— 请求地图所包含的图层名,可以为多层
styles=population —— 指定图层绘制的样式名
SRS=EPSG:4326 —— 指定地图的坐标投影系统代码
bbox=-125,24,-67,50 —— 请求地图的范围(The Bounding Box)
width=400 —— 地图的像素宽度
height=200 —— 地图的像素高度,宽度和高度的不同设置可能会引起返回图像
的变形
format=image/png —— 返回地图图像的格式,可以为 Image/gif, image/jpg,
image/svg+xml 等等
如果参数设置错误,将返回一个 XML 文件来描述错误信息。如下所示:
WIDTH and HEIGHT incorrectly specified
(2)GetCapabilities 请求的样例如下所示:
http://webmapping.mgis.psu.edu/geoserver/wms?version=1.1.1&request=getcapabiliti
es
返回的是一个 XML 文件(文件很大,内容略),包括 Service、Capability 等部
分,详细信息可以查看返回 XML 文件。
把这个文档去头去尾以后留下两个节点 Service 和 Capability。 Service 包
含了有关服务器的一般特性数据,对于只是想直接使用 WMS 服务器的人来说,
这个节点还不太用得上,唯一值得注意的就是 KeywordList 节点,它里面是关键
字,也就是服务器的保留字。 Capability 才是我们学习的重点。如果你想正确
的使用 WMS 服务器,这个节点里面的内容就必须搞清楚了。你可以从这个节点
获得如下信息:
1)服务器支持哪些方法,WMS 服务器必须支持 GetCapabilities 和 GetMa
p,此外还有许多扩展的方法。
2)服务器支持哪些返回格式,WMS 返回的地图都是渲染好的图片,因此这
里的格式基本上都是图片格式,如 image/png。
3)服务器发布了哪些图层,这个是 WMS 的重点,不然你连最简单的 Get
Map 调用都构造不出来。
(3)GetFeatureInfo 用于查询屏幕某点的对象信息,它的样例请求如下所示:
http://webmapping.mgis.psu.edu/geoserver/wms?version=1.1.1&request=
getfeatureinfo&layers=topp:states&styles=population&SRS=EPSG:4326&bbox=-125,
24,-67,50&width=400&height=200&format=text/html&X=100&y=100&query_layer
s=topp:states
此请求返回一个 HTML 文档来描述对象,如下所示:
Results for FeatureType 'states':