Arcengine 对地图服务进行空间查询

            //获取地图服务上下文
            IServerContext pServerContext = pSOM.CreateServerContext("分幅地图/25", "MapServer");
            IMapServer pMapServer = pServerContext.ServerObject as IMapServer;

            IMapServerInfo pMapServerInfo = pMapServer.GetServerInfo(pMapServer.DefaultMapName);
            IMapDescription pMD = pMapServerInfo.DefaultMapDescription;
            IPolyline pxxLine = pServerContext.CreateObject("esriGeometry.Polyline") as IPolyline;
            pxxLine=  GetSpatialGeometry(pServerContext);

            //创建进行查询的空间对象(对象的创建必须从pServerContext创建而来,否则会出错!)
            pxxPoint = pServerContext.CreateObject("esriGeometry.Point") as IPoint;
            pxxPoint.X = 108.602;
            pxxPoint.Y = 39.291;
            pxxPoint.SpatialReference = pMD.SpatialReference;
            pxxGeom = (IGeometry)pxxPoint;

            //查询对象
            ISpatialFilter pSpatialFilter = pServerContext.CreateObject("esriGeodatabase.SpatialFilter") as ISpatialFilter;

            pSpatialFilter.Geometry = pxxGeom;
            //pSpatialFilter.WhereClause = "OBJECTID>1000";
            pSpatialFilter.GeometryField = featureFileldName;
            pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;

            //空间查询

            IRecordSet rs = pMapServer.QueryFeatureData(pMD.Name, 0, (IQueryFilter)pSpatialFilter);

            ITable table = rs.Table;

            IFeatureClass fc = table as IFeatureClass;

            IGeoDataset geods = fc as IGeoDataset;
posted @ 2012-06-21 18:52  千禧牛  阅读(488)  评论(0)    收藏  举报