arcgis for android加载wms服务,获取服务中图斑的信息

一、加载wms服务

        首先简单介绍WMS服务,WMS就是将地图发布成地图服务,然后客户端向地图服务器请求的时候,能根据用户的请求信息,返回对应的地图信息(比如对应的地图图片),然后客户端就能根据服务器的返回的结果,在客户端对需要的地图进行显示。

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

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

        在ArcGIS for Android中,主要会涉及到GetCapabititiesGetMap两种操作。其中,向地图服务器请求GetCapabitities,会获得一个XML文件,里面包含该WMS服务中包含的图层的名字,图层的坐标系等数据。向服务器请求GetMap,则会根据请求的参数获得一张图片,请求的参数中包含图片的高度,宽度,坐标系等信息。

        加载实例(基于 Android 100.6 的 ArcGIS Runtime SDK):

        ArcGIS for Android加载WMS服务时,要使用WMSLayer这个类。请求方式只能是GetCapabitities,通过GetCapabitities会获取到XML文件,ArcGIS for Android内部会自己解析,然后通过当前地图的位置,自动构造请求参数,然后通过GetMap向服务器请求,服务器根据请求参数返回图片,ArcGIS for Android会将图片展示在MapView上。

//wms服务图层名称
List<String> wmsLayersName = new ArrayList<String>();
        wmsLayersName.add("aaa");
WmsLayer wmsLayer = new WmsLayer("http://192.168.0.136:8087/geoserver/common/wms?SERVICE=WMS&REQUEST=GetCapabilities", wmsLayersName);
        wmsLayer.loadAsync();
        if (basemap != null) {
            basemap.getBaseLayers().add(wmsLayer);
        }

        wms服务就加载好了。

二、读取服务中图斑的信息

        读取图斑信息主要用GetFeatureInfo方法,该方法具体需要的参数在 这里http://ditu.mwr.gov.cn/iserver/help/html/zh/API/WMS/WMS130/GetFeatureInfo/GetFeatureInfo_request.htm 

Polygon visibleArea = getView().getMapView().getVisibleArea();
        Envelope envelope = visibleArea.getExtent();
        double xMax = envelope.getXMax();
        double xMin = envelope.getXMin();
        double yMax = envelope.getYMax();
        double yMin = envelope.getYMin();

        String x = String.valueOf(e.getX()).split("\\.")[0];
        String y = String.valueOf(e.getY()).split("\\.")[0];

//获取屏幕宽高
        Resources resources = getView().getSelfActivity().getResources();
        DisplayMetrics dm = resources.getDisplayMetrics();
        int screenWidth = dm.widthPixels;
        int screenHeight = dm.heightPixels;

String GetFeatureInfo_url = "http://192.168.0.136:8087/geoserver/common/wms?" +
                    "SERVICE=WMS" +
                    "&VERSION=1.1.1" +
                    "&REQUEST=GetFeatureInfo" +
                    "&LAYERS=common:O_0810_YSCFGDWTTB_2022" +
                    "&BBOX=" + xMin + "," + yMin + "," + xMax + "," + yMax +
                    "&FORMAT=image/png" +
                    "&TRANSPARENT=true" +
                    "&QUERY_LAYERS=common:O_0810_YSCFGDWTTB_2022" +
                    "&exceptions=application/vnd.ogc.se_xml" +
                    "&INFO_FORMAT=application/json" +
                    "&FEATURE_COUNT=1" +
                    "&X=" + x +
                    "&Y=" + y +
                    "&SRS=EPSG:4490" +
                    "&WIDTH=" + screenWidth +
                    "&HEIGHT=" + screenHeight;

猜你喜欢

转载自blog.csdn.net/minusn/article/details/128834904