『公告』 预祝您龙年大吉,万事如意, 过节期间, 大家如需数据服务,请拨打400 或直接添加客服微信,再祝大家龙年,心想事成。
关注我们 新浪 腾讯

自己动手实现ArcMap的Identify功能+附源码

自己动手实现ArcMap的Identify功能+附源码
自己动手实现ArcMap的Identify功能+附源码,开发环境:AE9.2+VS2008 功能已经封装好,直接可用,并附源代码,交流学习。



       核心代码其实很简单

        /// <summary>

        /// 在指定图层使用指定范围查询结果

        /// </summary>

        /// <param name="identifyLayer">查询图层</param>

        /// <param name="identifyGeom">查询范围</param>

        /// <returns>查询结果</returns>

        private IArray Identify(ILayer identifyLayer, IGeometry identifyGeom)

        {

            //保存结果的变量

            IArray identifyObjs = null;

            //设置查询形状

            if (identifyGeom == null)

            {

                //返回空值

                return identifyObjs;

            }

            //若是点的话做点的缓冲区

            IGeometry hitGeometry = identifyGeom;

            //判断图层类型,设置点击要素

            if (hitGeometry.GeometryType == esriGeometryType.esriGeometryPoint)

            {

                ITopologicalOperator topoOp = identifyGeom as ITopologicalOperator;

                hitGeometry = topoOp.Buffer(1);

            }

            ///判断图层的类型并作相应处理

            ///图层是要素图层

            if (identifyLayer is IFeatureLayer)

            {

                //获取要素图层

                IFeatureLayer featureLayer = identifyLayer as IFeatureLayer;

                //开始获取信息操作

                IIdentify2 identify2 = featureLayer as IIdentify2;

                //获取查询结果

                identifyObjs = identify2.Identify(hitGeometry, null);

            }

            ///图层是栅格数据层

            else if (identifyLayer is IRasterLayer)

            {

            }

                  else

            {

            }

            //返回获取要素的集合

            return identifyObjs;

        }

      京ICP备2025132830号-1 京公网安备 号