1、首先在本地发布一个SanFrancisco的地图服务

 

2、然后添加Web引用

     

web 引用添加完成之后如图:

    

 

3、编写一段查询的代码:

public int TestFunction()
    {
        SanFrancisco_MapServer.SanFrancisco_MapServer mapservice = new SanFrancisco_MapServer.SanFrancisco_MapServer();

        mapservice.Url = "http://localhost/arcgis/services/SanFrancisco/MapServer";

        string mapname = mapservice.GetDefaultMapName();

        MapServerInfo mapinfo = mapservice.GetServerInfo(mapname);

        MapDescription mapdesc = mapinfo.DefaultMapDescription;

        MapLayerInfo[] maplayerinfos = mapinfo.MapLayerInfos;

        int layerid = 0;

        string geometryfieldname = string.Empty;

        foreach (MapLayerInfo layerinfo in maplayerinfos)
        {
            if (layerinfo.Name == "artgalleries")
            {

                layerid = layerinfo.LayerID;

                Field[] fields = layerinfo.Fields.FieldArray;

                foreach (Field field in fields)
                {

                    if (field.Type == esriFieldType.esriFieldTypeGeometry)
                    {
                        geometryfieldname = field.Name;
                        break;
                    }
                }
            }
        }

        //获得地图的全图范围
        SanFrancisco_MapServer.MapExtent me = new MapExtent();

        SpatialFilter spatialfilter = new SpatialFilter();
        spatialfilter.FilterGeometry = me.Extent;
        spatialfilter.GeometryFieldName = geometryfieldname;
        spatialfilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
        spatialfilter.WhereClause = "ZIP = 94108";
        int featurecount = mapservice.QueryFeatureCount(mapname, layerid, spatialfilter);
        return featurecount;
    }

 

4、得到结果如图:

    

一共查询到了7个要素。

 

总结:利用SOAP API 则只需要.Net的支持即可。

posted on 2010-07-01 16:36  一石居客  阅读(569)  评论(0)    收藏  举报