【精品】wms总结.doc_第1页
【精品】wms总结.doc_第2页
【精品】wms总结.doc_第3页
【精品】wms总结.doc_第4页
【精品】wms总结.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【精品】wms总结 1、GeoServer(地理信息系统服务器)是OpenGIS Web服务器规范的J2EE实现(geoserver只能用j2ee开发),利用GeoServer可以方便的发布地图数据。 GeoServer的主要特征包括兼容WMS和WFS特性;能够将网络地图输出为jpeg、gif、png、SVG、KML等格式;能够运行在任何基于J2EE/Servlet容器之上。 其安装方式有两种,一种是常见的.EXE安装,这种安装方式最简单,只要确保你电脑上安装了JDK并且8080端口是开的,按照安装步骤一步一步来就可以完成安装,安装完成以后,可以从开始菜单中选择GeoServer-Start GeoServer进行启动,启动服务后,打开浏览器,输入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 webpages),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支持标准中标准的GET请求和POST请求方式,不过对于WMS来说,基本都是基于GET方式的服务请求,而且OGC官方提供的兼容性测试中也都是基于GET方式的请求。 OGC网络服务明确支持的唯一的分布式计算平台(DCP)就是是万维网本身,更明确地说是实现了超文本传递协议()的网络主机。 因此,每个由服务实例支持的各操作的在线资源都是一个的统一资源定位器(URL)。 支持两个请求方法GET和POST,一个基本的WMS规范仅仅定义用来调用操作的 GET。 URL规范保留了一些特定的字符并赋予它们必要的意义,如下表1,表1 GET查询中的保留字符字符用途?查询语句开始的分隔符&查询语句参数之间的分隔符=参数名字和参数值之间的分隔符/格式参数值中MIME类型子类型之间的分隔符:SRS参数值中命名空间和标识之间的分隔符,清单型参数中单个值的分隔符(例如GETMAP请求中的BBOX,LAYERS和STYLES)用于 GET请求的在线资源URL事实上仅仅是一个URL前缀,为了建立一个有效的操作请求,在其后还添加了另外的参数。 URL前缀被定义为一个不透明的字符串,它包括协议、主机名、端口号(可选)、路径、和一个问号“?”,还可以包括一个或几个用于具体服务器的参数并以“&”结束。 表2总结了操作请求URL的各个构件表2普通OGC网络服务请求URL构件描述服务操作的URL前缀。 表示可选择0个或1个事件;表示0个或更多的事件。 前缀完全取决于服务提供者。 由OGC网络服务定义的一个或更多的标准请求参数的名称和数值对。 对于每个操作,相应的的OWS规范都规定了请求中使用的必选和可选参数的实际列表。 host:port/path?name=value&name=value& 4、网络地图服务(WMS)的三大操作 (1)GetCapabilities(必选)localhost:8080/geoserver/wms?service=WMS&request=GetCapabilities(GeoServer)(浏览器会返回提示打开或保存一个文件,我的机器返回的是一个叫“wms”的文件,没有扩展名。 没关系我们把它保存为“wms.xml”就可以了)GetCapabilities请求返回的是一个对于WMS服务的一个元数据的描述,其中包括有当前服务提供商的一些基本信息以及当前服务的一些能力,而对于使用WMS服务的客户端来说,能获取到的所有信息全部包含在此文档中,当客户端发送一个服务中没有提供的的图片格式时,此时服务端将没有能力处理此请求。 在使用WMS服务时需要确认当前服务提供的能力,以便在使用过程中发生一些不必要的麻烦。 GetCapabilities接口用于向客户端提供当前地图服务器可以提供的空间信息类型和范围、具体的图层信息和显示样式、支持的查询方式、没有查询结果时(异常)的缺省返回信息格式等服务描述信息。 GetCapabilities请求URL的参数请求参数必选(M)/可选(O)说明VERSION=version(Version(版本)=(1.1.1或者1.3.0))O请求版本,URL中可选的请求参数,当没有使用时就使用当前服务提供商提供的最高的wms版本服务SERVICE=WMS M服务类型REQUEST=GetCapabilities M请求名,请求中必须设置当前请求的操作,可以设置request的值为Getcapabilities、GetMap、GetFeatureInfo FORMAT=MIME_type O服务元数据的输出格式UPDATESEQUENCE=string O用于控制缓冲存储的数字序列或字符串 (2)GetMap(必选)localhost:8080/geoserver/wms?bbox=-130,24,-66,50&styles=population&Format=image/png&request=GetMap&layers=topp:states&width=550&height=250&srs=EPSG:4326GetMap接口的目的在于请求服务器生成一幅具有确定地理位置坐标范围的地图图像。 但按照WMS规范,这个操作需要明确地指定出操作本身遵循的WMS规范的版本号以及需要显示的具体图层、对应的坐标范围、返回图像的大小和格式等。 GetMap请求的参数请求参数必选的(M)/可选的(O)说明请求参数必选的(M)/可选的(O)说明VERSION=version M请求版本.REQUEST=GetMap M请求名称.LAYERS=layer_list M以逗号隔开的一个或多个图层列表,若存在SLD参数则是可选的。 STYLES=style_list M以逗号隔开的请求图层的一个再现风格列表,若存在SLD参数则是可选的。 CRS=namespace:identifier M坐标参考系。 BBOX=minx,miny,maxx,maxy M以SRS单位表示的边界框边角(左下角,右上角)。 WIDTH=output_width M以像素表示的地图图像宽度。 .HEIGHT=output_height M以像素表示的地图图像高度FORMAT=output_format M地图输出格式。 .TRANSPARENT=TRUE|FALSE O地图背景的透明性(default=FALSE).BGCOLOR=color_value O以十六进制RGB颜色值表示的背景颜色(default=0xFFFFFF).EXCEPTIONS=exception_format OWMS通告异常的格式(default=SE_XML).TIME=time O请求层的时间值。 ELEVATION=elevation O请求层的高程。 Other sampledimension(s)O其它适当维度的值。 .Vendor-specific parametersO可选的实验性参数。 .下列参数只用于支持格式化层描述符规范的网络地图服务3.SLD=styled_layer_descriptor_URL O格式化层描述符的URL(如同SLD规范中确定的).WFS=web_feature_service_URL O网络要素服务URL,该服务提供将要用SLD进行符号化的要素。 .注在LAYERS参数值和STYLES参数值之间存在一个一一对应关系对GetMap的响应对有效的GetMap请求的响应必须是一张地图,它包含了所请求的具有地理参考坐标的信息层,使用的是期望的样式,并且采用了指定的空间参照系、范围框、大小和透明性。 一个无效的GetMap请求必须产生一个按请求的Exceptions格式输出的错误信息(或在极端情况下回答一个网络协议错误)。 (3)GetFeatureInfo(可选)GetFeatureInfo是一个可选操作。 该操作向WMS的客户端程序提供了进一步查询特定空间实体信息的能力。 这种操作往往是由客户程序在WMS服务器先前返回的地图上指定了一个空间实体,进而提交查询而形成。 支持GetFeatureInfo操作的仅仅是那些定义或继承了属性queryable=“1”的层。 对于其它层,客户端不能发送GetFeatureInfo请求。 如果一个WMS不支持该请求而遇到了它,则应该应答一个适当格式的服务异常。 GetFeatureInfo请求参数请求参数必选(M)/可选(O)描述VERSION=version M请求版本。 REQUEST=GetFeatureInfo M请求名称。 map requestpart M地图请求参数的部分拷贝,这些参数产生了需要查询其信息的地图。 QUERY_LAYERS=layer_list M用逗号分隔的需要查询的一个或多个层的列单。 INFO_FORMAT=output_format M要素信息的返回格式(MIME类型)。 FEATURE_COUNT=number O需要返回其信息的要素个数(default=1)。 X=pixel_column M用像素表达的要素的X坐标(以左上角坐标为0)。 Y=pixel_row M用像素表达的要素的Y坐标(以左上角坐标为0)。 EXCEPTIONS=exception_format OWMS(default=application/vnd.ogc.se_xml)。 报告异常信息采用的格式 5、三大操作的样例 (1)GetMap请求类似于在Web上请求一幅图像,但它的请求参数更加复杂。 下面是一个样例请求webmapping.mgis.psu/geoserver/wms?version=1.1.1&request=getmap&layers=topp:states&styles=population&SRS=EPSG:4326&bbox=-125,24,-67,50&width=400&height=200&format=image/png返回的图像如下图所示其中使用的网络协议webmapping.mgis.psu/主机域名geoserver/wms页面或web程序位置version=1.1.1WMS版本号request=getmap操作动词,可以为GetCapabilities,GetMap和GetFeatureInfo等layers=topp:states请求地图所包含的图层名,可以为多层styles=population指定图层绘制的样式名SRS=EPSG:4326指定地图的坐标投影系统代码bbox=-125,24,-67,50请求地图的范围(The BoundingBox)width=400地图的像素宽度height=200地图的像素高度,宽度和高度的不同设置可能会引起返回图像的变形format=image/png返回地图图像的格式,可以为Image/gif,image/jpg,image/svg+xml等等如果参数设置错误,将返回一个XML文件来描述错误信息。 如下所示WIDTH andHEIGHT incorrectlyspecified (2)GetCapabilities请求的样例如下所示webmapping.mgis.psu/geoserver/wms?version=1.1.1&request=getcapabilities返回的是一个XML文件(文件很大,内容略),包括Service、Capability等部分,详细信息可以查看返回XML文件。 把这个文档去头去尾以后留下两个节点Service和Capability。 Service包含了有关服务器的一般特性数据,对于只是想直接使用WMS服务器的人来说,这个节点还不太用得上,唯一值得注意的就是KeywordList节点,它里面是关键字,也就是服务器的保留字。 Capability才是我们学习的重点。 如果你想正确的使用WMS服务器,这个节点里面的内容就必须搞清楚了。 你可以从这个节点获得如下信息1)服务器支持哪些方法,WMS服务器必须支持GetCapabilities和GetMap,此外还有许多扩展的方法。 2)服务器支持哪些返回格式,WMS返回的地图都是渲染好的图片,因此这里的格式基本上都是图片格式,如image/png。 3)服务器发布了哪些图层,这个是WMS的重点,不然你连最简单的GetMap调用都构造不出来。 (3)GetFeatureInfo用于查询屏幕某点的对象信息,它的样例请求如下所示webmapping.mgis.psu/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_layers=topp:states此请求返回一个HTML文档来描述对象,如下所示Results forFeatureTypestates:-the_geom=GEOMETRY(MultiPolygon)with153pointsSTATE_NAME=Arizona STATE_FIPS=04SUB_REGION=Mtn STATE_ABBR=AZ LAND_KM=294333.462WATER_KM=942.772PERSONS=3665228.0FAMILIES=940106.0HOUSHOLD=1368843.0MALE=1810691.0FEMALE=1854537.0WORKERS=1358263.0DRVALONE=1178320.0CARPOOL=239083.0PUBTRANS=32856.0EMPLOYED=1603896.0UNEMPLOY=123902.0SERVICE=455896.0MANUAL=185109.0P_MALE=0.494P_FEMALE=0.506SAMP_POP=468178.0要注意的是不同规范版本对上述请求的参数规定不同,如WMS1.3对于GetFeatureInfo的X、Y参数要求使用经纬度。 所以我们必须根据服务器的WMS版本来设置我们的参数。 6、实现一个C#版本的WMS浏览器 (1)WmsBrowser需求1)、用户输入WMS服务器的URI,点击一个按钮调用GetCapabilities方法。 然后用返回的数据初始化控制界面。 用户在控制界面上可以查看服务器的各种Capability数据,并且可以选择要显示的图层,调整图层顺序,为图层设置参数,然后返回一个地图图片显示在预览区。 2)、用户可以把返回的图片保存成文件。 已经有许多支持WMS的客户端了,有许多代码可供学习和使用。 但是,为了不干扰视线,为了避免介绍多余的内容,为了体现“自主创新精神”,最重要的是为了体验编程的乐趣(这也是我当初进入这个行业的原因),我决定只使用NotNet标准库提供的类完全从头开始编写代码。 (2)WmsBrowser设计根据需求,这是一个WinForm的执行程序。 需求其实很不明确,完全没有说明最重要的部分,控制界面是什么样子的,用户如何使用它。 所以有必要补充一下了。 控制界面有两个功能1)查看GetCapabilities返回的数据;2)设置GetMap需要的调用参数。 我们可以据此来设计这个界面。 GetCapabilities返回的数据我们前面已经介绍过了,想象一下我们这款软件的潜在用户可能想要看到哪些数据,他们会如何使用这些数据。 首先肯定是服务器发布的图层,这是访问WMS的唯一原因。 至于服务器支持哪些调用应该不是他们关心的,而是我们开发者关心的。 所以我们需要在界面上显示出Layer的内容,由于Layer是嵌套的,自然而然我们需要一个树控件。 除了Layer的Name,Title,Abstract这些属性外,用户应该还需要知道Layer支持的SRS,Style,Format和BoundingBox。 这样他们才能构造出合理的调用参数。 我们显然不应该让用户查看完数据后手动构造调用参数,我们需要让用户很方便的用鼠标完成工作。 我们已经知道需要一个树控件来显示Layer信息。 然后我们需要提供构造调用参数的界面。 首先我们设想用户可能会如何完成这个工作。 上面的介绍中我们一直是手动敲入字符串来完成调用URI的构建的,繁琐而且容易出错,但是这种方法很灵活,所以应该

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论