WMS服务介绍,WMS标准学习总计

WMSWeb Map
Service
)【互连网地图服务】:后台地图服务器使用GIS数据,通过Internet提供带有地理新闻图片的服务标准。

全套都出自一年多从前,记得是512过后的不久,主管从国外找来一家专门提供地图业务的店铺。他们本来使用ArcGIS作为服务平台,不过后来设想到每年昂贵的服务支出,决定把事情拿到中华来,结果就找到大家。其实大家连GIS应用的开发经历都并未,不清楚老董怎么说的(不愧是业主,借使自个儿不得不老老实实说没做过愿意学)把这些活获得了手。我得简单介绍下大家要做的作业。大家需求维护一套C#的代码(甲方在沿海先找了家店铺开发的,但是依旧由于维护开支难题又把代码交给大家)。那套代码实话说,基本考虑是毋庸置疑的,可惜没有坚定不移到底,结果四处都以复制修改的剧情。OO的着力规则它大约都损坏了完了,能够说是反面教材的旗帜。不过它的有关GIS的开支是不错的,而且甚至依旧依照OGC的粗略对象访问协议进行的规划。作者的大概拥有GIS启蒙正是对这套代码的精通。也便是在此地首先次看到了OGC。经过一年焦头烂额的护卫之后,小编慢慢深切到GIS的一些底层领域,同时项目组来了新娘,笔者的年华也就方便了。于是小编起来专心学习OGC的种种规范,首先是通读,明白OGC的连串布局。然后分明了WMS,WFS,WCS,SLD,Filter,青霉素L为机要学习目的。之所以写着个连串小说,重借使为着交换,同时也为温馨的上学留下记录。此地给出OGC的连年

WMS定义了一多级请求类型(WMS帮衬标准HTTP中正式的GET请求和POST请求格局,可是对于WMS来说,基本都是依照GET方式的劳务请求)

  1. 为了更好的上学,大家要求安装GeoServer,当然网上也有过多WMS服务可供访问。提出把重返的XML文本放到浏览器如故扶助缩小的XML编辑器中有益浏览。

    先从3个例证初叶,运行吉优Server,打开浏览器,在地点栏敲入如下连接:http://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:4326,你会看出浏览器突显的美利哥行政区划图(由此德国人的学问势力一叶落而知天下秋,不管愿意不甘于,你平日都相会到她们的国旗,地图,总统还有总统老婆)。关于地点连接的切实意思,大家会在底下介绍。

    再敲入第②个三番五次:http://localhost:8080/geoserver/wms?service=WMS&request=GetCapabilities,浏览器会重临提醒打开或保存四个文本,小编的机械再次来到的是1个叫“wms”的文本,没有扩充名。无妨我们把它保存为“wms.xml”就足以了。然后用浏览器打开,会看到是个非常的大的文书,具体内容也会在底下解释。

    那里供给对WMS的调用连接做二个马虎介绍,首先大家不能不告诉服务器大家想行使WMS服务,因为服务器同时只怕还提供了很多其余OGC服务,于是大家设置参数service=WMS。然后大家须求报告服务器大家想要调用GetCapabilities方法,于是大家设置参数request=GetCapabilities。各种方法只怕还有方法的参数,这一个就在介绍方法时再说了。到那里大家曾经全部的运用了二个WMS服务器的最关键成效,相当的粗略吗。WMS之所以强大,正是出于它的简约。“简单即美”是全部布置的宗旨。

  2. GetCapabilities,如若你想利用二个WMS服务器,那您应该首先调用这一个艺术。

    ca88手机版登录网页,调用:http://localhost:8080/geoserver/ows?service=WMS&request=GetCapabilities,那些法子再次来到服务器的力量。一般会是四个非常的大的XML文档,关于这么些文档标准有很详细的描述,那里只做1个提纲式的介绍。

    把那一个文书档案去头去尾以往留下多少个节点Service和Capability。
    Service包罗了有关服务器的相似个性数据,对于只是想直接利用WMS服务器的人来说,那几个节点还不太用得上,唯一值得注意的便是KeywordList节点,它当中是重中之重字,也便是服务器的保留字。
    Capability才是我们学习的重庆大学。如若你想正确的应用WMS服务器,这么些节点里面包车型地铁始末就非得搞通晓了。你可以从那些节点得到如下音信。

    1)服务器援救什么措施,WMS服务器必须援救GetCapabilities和GetMap,其它还有众多扩展的法子,例如:DescribeLayer以及协理SLD服务器的新鲜情势,由于GeoServer不是SLD服务器,那里也就无法打听了。

    2)服务器支持什么重临格式,WMS重返的地形图都是渲染好的图片,因而那里的格式基本上都以图片格式(依然有例外然而不在这里介绍了),如:image/png。

    3)服务器发表了怎么样图层,这么些是WMS的重中之重,否则你连最简便的GetMap调用都组织不出去。

    上边大家就来学习怎么着取得那一个多少。首先实行Capability节点,可以看到Request和Layer多少个节点,别的还会有Exception和UserDefinedSymbolization,然而当下对大家用处相当小。Request节点包蕴服务器协理的法门,笔者那里重返是那样多少个节点:GetCapabilities,GetMap,GetFeatureInfo,DescribeLayer和GetLegendGraphic(注意老版本的WMS返在此处再次回到的节点名称会不均等,大概会去掉“Get”,咱们那边介绍的是1.1.1版本的)。我们只介绍GetCapabilities和GetMap。

    先来说说GetCapabilities节点。你只怕会说“GetCapabilities”,不正是我们正在谈论的艺术吗,是的就是这些办法,你不能不调用了那么些点子才能清楚关于它的特点,很有顶牛吧
    :)。在那几个节点里面你能够看出Format和DCPType节点,前者提议函数再次来到内容的格式,其实便是大家正在谈论的XML,后者一时半刻不探究。

    GetMap节点的内容同样也是Format和DCPType节点,那里的Format列出了服务器帮助回到的地图格式。

    WMS再次回到的图层是嵌套的款式,根节点就是我们即将说到的Layer节点。它个中除了自家的风味外还会含有别的Layer。先来说说Layer自己的表征。先得说美赞臣(Meadjohnson)下,由于Layer存在父子关系,所以她们的性状也就存在继续关系,子节点接济父节点的特征,而父节点比肯定帮助子节点的特点。与现实世界一样,“老子的正是儿子的,外孙子的不一定是老子的”。

    Layer最首要的特点正是Name,在呼吁方法GetMap的Layers参数中引用的便是以此值,关于GetMap方法的底细前面介绍。然后次主要的风味节点分别是S奥迪Q5S,LatLonBoundingBox,BoundingBox和Style,这一个都是出新在GetMap方法中的参数。

    急需注明的是,根结点的Layer没有Name,因为这些Layer只是3个装进,它个中的“瓤”才是大家感兴趣的。而服务器补助的SENVISIONS(地理坐标系统)也会在那里来个总汇。那将是一个非常短的清单。LatLonBoundingBox是经纬度表示的图层范围,依次是minx,miny,maxx,maxy。例如:<LatLonBoundingBoxminx=”-180.0″ miny=”-90.0″ maxx=”180.0″ maxy=”90.0″ />。
    BoundingBox是图层暗中同意坐标系表示的限制与LatLonBoundingBox格式一样只是多了3个S奇骏S属性,例如:<BoundingBoxS中华VS=”EPSG:26713″ minx=”588926.6865343997″ miny=”4913890.332215005″
    maxx=”609271.2114429093″ maxy=”4927102.448786693″
    />。Style节点很重点,他表示图层帮忙的渲染样式,正是画风。一个图层能够支持五个Style。Style的子节点最根本的就是Name,我们会在GetMap方法的参数Styles中用到。到此截至,Layer节点就介绍完了。

  3. GetMap,如若你想行使八个WMS服务器,那您早晚会没完没了调用那几个格局。调用:http://localhost:8080/geoserver/wms?request=GetMap&bbox=-130,24,-66,50&srs=EPSG:4326&layers=topp:states&styles=population&Format=image/png&width=550&height=250

    大家有必不可少详细说雅培(Karicare)下调用参数。后边已经介绍过service和request了,那里集聚在GetMap本身的参数上。假使您要调用GetMap方法,无疑要安装request=GetMap。随后大家须求报告服务器大家盼望见到哪位范围内的地图,于是大家设置bbox=-130,24,-66,50,那几个bbox使用了EPSG:4326坐标系,于是我们设置srs=EPSG:4326。

    我们说过,服务器发表了好多图层,大家需求指明咱们想看的图层,于是大家设置layers=topp:states,注意layers能够安装多少个图层,用“,”隔开,图层的渲染顺序就是参数设置的次第。大家得以应用私下认可的体裁来渲染图层,于是设置styles=,也得以钦命渲染样式,于是设置styles=population。对应layers的设置顺序,styles也足以安装多少个样式,用“,”隔断。大家期待回到的图样是png格式的,于是设置Format=image/png。末了,我们要求报告服务器,重回的图纸的大大小小,width=550&height=250,以像素为单位。

    到此甘休我们介绍完了WMS的调用,其实还有众多内容,想要深刻学习的心上人能够去OGC的网站下载完整的文本,PDF格式的。找一些早就完毕的开源WMS客户端通过代码学习。当然,最可行的学习途径正是和谐达成贰个WMS客户端。上边我们就来兑现3个C#版本的WMS浏览器。

  4. WmsBrowser需求

    一 、用户输入WMS服务器的U奥德赛I,点击一个按钮调用GetCapabilities方法。然后用重返的数码开始化控制界面。
    用户在支配界面上得以查看服务器的各类Capability数据,并且能够选取要展现的图层,调整图层顺序
    ,为图层设置参数,然后重返1个地图图片展现在预览区。

    贰 、用户能够把重返的图形保存成文件。

    曾经有那一个支撑WMS的客户端了,有多如牛毛代码可供就学和利用。但是,为了不打扰视线,为了防止介绍多余的内容,为了浮现“自主立异精神”,最根本的是为了感受编制程序的童趣(那也是本身当场跻身那一个行当的因由),作者说了算只利用NotNet标准库提供的类完全从头初始编写代码。

  5. WmsBrowser设计

    依照要求,那是三个WinForm的实行顺序。须求实际上很不精晓,完全没有认证最珍视的一些,控制界面,是怎么样样子的,用户怎样利用它。所以有必不可少补偿一下了。

    支配界面有七个功能:

    1)查看GetCapabilities再次来到的数目;

    2)设置GetMap供给的调用参数。

    我们能够据此来设计这些界面。GetCapabilities重回的多少大家眼下已经介绍过了,想象一下大家那款软件的潜在用户可能想要看到什么数据,他们会怎么着采用那么些数量。首先肯定是服务器宣布的图层,那是造访WMS的唯一原因。至于服务器援助什么调用应该不是他们关心的,而是大家开发者关怀的。所以大家须求在界面上出示出Layer的始末,由于Layer是嵌套的,任其自然大家供给二个树控件。

    而外Layer的Name,Title,Abstract。这几个属性外,用户应该还亟需领会Layer帮忙的SENCORES,Style,Format和BoundingBox。那样他们才能协会出合理的调用参数。大家强烈不应有让用户查看完数据后手动构造调用参数,我们须求让用户很有利的用鼠标完毕工作。大家曾经知道供给八个树控件来显示Layer消息。然后大家要求提供组织调用参数的界面。首先大家考虑用户只怕会怎么样完结那个工作。

    地点的牵线中我们从来是手动敲入字符串来成功调用U昂CoraI的营造的,繁琐而且便于出错,然则那种格局很灵敏,所以应该保留。于是大家供给贰个TexBox来输入U索罗德I。然后我们须要2个按钮来发出GetMap请求。大家必须考虑到,有一定部分人并不擅长键盘操作(在那之中包涵自笔者),所以大家应该给他俩提供鼠标操作格局。于是第①个界面出现了,用户在那边运用鼠标选用想要显示的Layer,调整Layer展现的一一,选择每种Layer的Style,选用Format,选择S翼虎S,输入BoundingBox,输入重返图片的尺寸。然后同样点击上边提到的按钮,发出GetMap请求。更进一步,大家得以用地点的界面来获取3个核心的调用参数,然后到TextBox里面去微调,那样用户会博得更好的八面玲珑。

    好了,到此地大家基本上搞精晓控制界面包车型大巴楷模了。今后亟需斟酌有些规划风格方面包车型客车题材。大家得以把装有代码写进一个叫MainForm的类里面,它是一个WinForm类。那样没有错,完全能够干活,实际上自个儿见过的多数代码都以这样干得。那样做的结果是,我相当慢就会舍弃这些项目,转而去浏览cnblog或ifeng下边包车型地铁帖子。大家必要二个更好的宏图。大家在此处并不是要商讨架构,方式和开发方法,所以大家只需要高达多个共同的认识就能够了:大家须要把界面成分,操作响应以及数据模型分开编码,为她们独立建立类种类。

    据此大家的筹划也就基本上了,开端编码咯。

  6. WmsBrowser编码ing。。。

  7. 次第实现。

    代码下载

    运营程序后会看见主界面如下:ca88手机版登录网页 1下图是重回的地图

    ca88手机版登录网页 2 

    这一个程序还很纯真,有为数不少标题从未考虑,例如:输入验证,数据印证,卓殊处理等。以往我们会日益健全它,方今看作3个参照和读书WMS的起源已经足足了。

  8. 后续

    在运用这几个程序时,作为用户,作者以为还有很多不便宜的地点。

    率先,作者即使敲错了地方,小编很简单敲错,程序会弹出贰个丑陋的不得了对话框,展现一大堆堆栈音讯,完全看不出是何许错误。

    说不上,设置参数BBox很不便利,借使能从已有的地图上用鼠标选用就好了。

    还有,重回时只是展现1个图片想看细节又要重新设置,Apply,GetMap的操作,太烦琐了。

    上述正是自家看成用户对那款软件的见解,看来大家供给创新。大家会在之后的商讨中慢慢全面这么些程序。

#有2项请求是持有WMS Server所必需的:

1. GetCapabilities    例1 
  例2 
  例3

   
重返(以3个xml文档方式重临服务级元数据):WMS的参数(图片格式、WMS版本兼容性);图层(包围盒大小、坐标体系、数据地方以及是还是不是透明) 
 

    发展历史: 0.1.0, 0.0.3, 0.9, 1.0, 1.1, 1.1.1, 1.3.0
    方今市面上比较主流的机要是 wms1.1.1 和 wms1.3.0 四个本子

    GetCapabilities参数:

    (1) VERSION**=version**  // WMS版本号
(没有点名时,使用当前服务提供商提供的参天的wms版本服务)

    (2) SERVICE=WMS  // 当前为WMS服务
(此项在1.3.0 版本中必须供给,从前的本子可选)

    (3) REQUEST=GetCapabilities // 请求名称

  1. GetMap   参数表达

   
再次回到:图片(参数包含:图片的可观/宽度、坐标类别、渲染格局、图片格式)

    GetMap必需的参数:

    (1) VERSION=version   //
WMS版本号

    (2) REQUEST=GetMap  //
请求名称

    (3) LAYERS=layer_list  //
请求图层,多少个图层间用逗号分隔(假设SLD存在,该参数可选)

    (4) STYLES=style_list //
钦赐每一种图层的渲染风格,八个图层间用逗号分隔(借使SLD存在,该参数可选)

                                         “STYLES=”
 表示使用缺省风骨;命名的style在map文件的CLASS GROUP中定义

    (5) SRS=namespace:identifier  //
空间坐标种类

    (6) BBOX=minx,miny,maxx,maxy //
包围盒(SRS坐标)

    (7) WIDTH=output_width //
图片宽度

    (8) HEIGHT=output_height //
图片高度

    (9) FORMAT=output_format //
图片格式

    可选:

    (1) SLD=sld_url  //
图层样式描述文件的U逍客L

    (2) BGCOLOR=color_value  //
背景颜色 缺省是0xffffff(粉红白)

    (3) TRANSPARENT=TRUE | FALSE  //
是不是为透明,缺省是不透明

http://my.host.com/cgi-bin/mapserv?map=mywms.map&SERVICE=WMS&VERSION=1.1.1
     &REQUEST=GetMap&LAYERS=prov_bound&STYLES=&SRS=EPSG:4326
     &BBOX=-173.537,35.8775,-11.9603,83.8009&WIDTH=400&HEIGHT=300
     &FORMAT=image/png

一个有效的GetMap链接:http://demo.mapserver.org/cgi-bin/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&BBOX=-180,-90,180,90&SRS=EPSG:4326&WIDTH=953&HEIGHT=480&LAYERS=bluemarble,cities&STYLES=&FORMAT=image/png&TRANSPARENT=true

http://mrdata.usgs.gov/services/sc?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=256&HEIGHT=256&FORMAT=image/png&BBOX=-83.4,32,-78.4,35.3&LAYERS=South\_Carolina\_Lithology&SRS=EPSG:4326&STYLES=

http://mesonet.agron.iastate.edu/cgi-bin/mapserv/mapserv?map=/mesonet/www/apps/iemwebsite/data/wms/goes/conus\_ir.map&SERVICE=WMS&REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=256&HEIGHT=256&FORMAT=image/png&TRANSPARENT=TRUE&BBOX=-126,24,-66,50&LAYERS=conus\_ir\_4km\_900913,conus\_ir\_4km&SRS=EPSG:4326&STYLES=

JS调用WMS的例子:http://openlayers.org/dev/examples/lite.html    http://openlayers.org/dev/examples/wms.html

越来越多例子:http://openlayers.org/dev/examples/

#可选的央浼:

1. GetFeatureInfo  // 假设图层为“可查询“的,则可伸手地图图像的坐标数据

2. DescribeLayer   // 图层描述信息

3. GetLegendGraphic  // 获取Legend(图层管理器)的图样

 

#服务器&客户端

WMS服务器一般为webserver下的2个cgi可执行程序,负责响应客户端发动过来的呼吁,并赶回其所需的地形图数据。
WMS服务器常常提供的地图格式为位图,如PNG,GIF或JPEG。其余,也能够是矢量图形,如点,线,曲线,文字,SVG或WebC克拉霉素格式。

客户端一般就是浏览器先后了。客户端与服务器之间通过HTTP协议进行广播发表,通讯进程中的标准正是WMS中定义的剧情。 

 

#更多

 WMS包容性测试:http://cite.opengeospatial.org/teamengine/

相关文章

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图