ArcGIS for Android加载WMS(1)——WMS基本介绍

今天开始写ArcGIS for Android加载WMS系列的一些记录,主要包括WMS的基本介绍,ArcGIS for Android加载WMS,用MapGuide和GeoServer发布WMS并在ArcGIS for Android中加载以及其中存在的一些问题等。因为前两天在做用ArcGIS for Android加载WMS服务的时候,发现不论是国内还是国外,相关的资料都非常非常少。经过了大概半个多月的时间,才完全把ArcGIS for Android加载WMS服务以及用Mapguide发布WMS服务基本搞清楚,在此记录一下,希望能帮助到需要的同学。

首先简单介绍WMS服务,简单来说,我的理解,WMS就是将地图服务发布成地图服务,然后客户端向地图服务器请求的时候,能根据用户的请求信息,返回对应的地图信息(比如对应的地图图片),然后客户端就能根据服务器的返回的结果,在客户端对需要的地图进行显示。使用WMS服务有很多的优点:首先是地图信息数据和客户端分离,这样当地图数据变化时(比如新增了一些点,增加一条线),不需要更新客户端,只需要在服务器端更新数据即可。其次能减少手机的存储压力,搞过地图切片的同学应该知道,一般一个切片包动辄几个G,现在手机的存储空间已经很大了,这个问题缓解了很多,要是像以前16GB内存那个时代,估计放两三个地图切片包用户就受不了了。而且在安装App后,将切片包下载到手机端这个过程,用户也受不了。

WMS服务,根据OGC的标准,可以提供以下操作:

GetCapabitities:返回服务级元数据,它是对服务信息内容和要求参数的一种描述。
GetMap:返回一个地图影像,其地理空间参考和大小参数是明确定义了的。
GetFeatureInfo:返回显示在地图上的某些特殊要素的信息。
GetLegendGraphic:返回地图的图例信息。

其中,在ArcGIS for Android中,主要会涉及到GetCapabititiesGetMap两种操作。其中,向地图服务器请求GetCapabitities,会获得一个XML文件,里面包含该WMS服务中包含的图层的名字,图层的坐标系等数据。向服务器请求GetMap,则会根据请求的参数获得一张图片,请求的参数中包含图片的高度,宽度,坐标系等信息。需要注意的是,ArcGIS for Android加载WMS服务时,要使用WMSLayer这个类,官方例子在这里,官方的关于该类的介绍在这里。请求方式只能是GetCapabitities,通过GetCapabitities获取到XML文件后,ArcGIS for Android内部会自己解析,然后通过当前地图的位置,自动构造请求参数,然后通过GetMap向服务器请求,服务器根据请求参数返回图片,ArcGIS for Android会将图片展示在MapView上。

通过官方的例子和类介绍,我们发现ArcGIS  for Android已经将WMS服务的请求封装的很好了,我们只需要传一个WMS的URL给WMSLayer,就可以了,但是真的这么简单吗?中间会有什么问题呢?怎么获取这个WMS URL呢?先写到这里,下一节就来介绍介绍怎么在GeoServer和MapGuide中获取WMS的URL。

转载自:https://blog.csdn.net/qq_31709249/article/details/83751818

You may also like...