IFeatureClass 空间查询与属性查询示例

        /// <summary>
        /// pFeatureLayer空间查询
        /// </summary>
        /// <param name="pFeatureLayer"></param>
        /// <param name="pGeometry"></param>
        /// <returns></returns>
        public string LayerSelection(IFeatureLayer pFeatureLayer, IGeometry pGeometry)
        {
            string strRecords = pFeatureLayer.Name + ":";
            string displayField = string.Empty;
            IFeatureClass pFeatureClass = null;
            ISpatialFilter pSpatialFilter = null;
            IFeatureCursor pFeatureCursor = null;
            IFeature pFeature = null;
            try
            {
                pFeatureClass = pFeatureLayer.FeatureClass;
                pSpatialFilter = new SpatialFilterClass();
                pSpatialFilter.Geometry = pGeometry;
                pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
                pSpatialFilter.GeometryField = pFeatureClass.ShapeFieldName;
                pFeatureCursor = pFeatureClass.Search(pSpatialFilter, false);
                pFeature = pFeatureCursor.NextFeature();
                while (pFeature != null)
                {
                    strRecords += pFeature.get_Value(pFeature.Fields.FindField("OBJECTID")).ToString() + ",";
                    pFeature = pFeatureCursor.NextFeature();
                }
                if (pFeature != null)
                    Marshal.ReleaseComObject(pFeature);
                if (pFeatureCursor != null)
                    Marshal.ReleaseComObject(pFeatureCursor);
                if (pSpatialFilter != null)
                    Marshal.ReleaseComObject(pSpatialFilter);
                if (pFeatureClass != null)
                    Marshal.ReleaseComObject(pFeatureClass);
                strRecords = strRecords.Substring(0, strRecords.Length - 1);
                return strRecords;
            }
            catch (System.Exception ex)
            {
                if (pFeature != null)
                    Marshal.ReleaseComObject(pFeature);
                if (pFeatureCursor != null)
                    Marshal.ReleaseComObject(pFeatureCursor);
                if (pSpatialFilter != null)
                    Marshal.ReleaseComObject(pSpatialFilter);
                if (pFeatureClass != null)
                    Marshal.ReleaseComObject(pFeatureClass);
                strRecords = "err:" + ex.Message;
                return strRecords;
            }
        }


     /// <summary>
     ///  FeatureClass属性查询
     /// </summary>
     /// <param name="pFeatureClass"></param>
     /// <param name="strQuery"></param>
     /// <param name="strFieldName"></param>
     /// <returns></returns>
        public List GetMatchedValues(IFeatureClass pFeatureClass, string strQuery, string strFieldName)
        {
            List lstValue = null;
            string[] temp = null;
            IQueryFilter pQueryFilter = null;
            IFeatureCursor pFeatureCursor = null;
            IFeature pFeature = null;
            try
            {
                pQueryFilter = new QueryFilterClass();
                pQueryFilter.WhereClause = strQuery;
                pFeatureCursor = pFeatureClass.Search(pQueryFilter, false);
                pFeature = pFeatureCursor.NextFeature();
                lstValue = new List();
                while (pFeature != null)
                {
                    temp = new string[2];
                    temp[0] = pFeature.get_Value(pFeature.Fields.FindField("OBJECTID")).ToString();
                    temp[1] = pFeature.get_Value(pFeature.Fields.FindField(strFieldName)).ToString();
                    lstValue.Add(temp);
                    pFeature = pFeatureCursor.NextFeature();
                }
                if (pFeature != null)
                    Marshal.ReleaseComObject(pFeature);
                if (pFeatureCursor != null)
                    Marshal.ReleaseComObject(pFeatureCursor);
                if (pQueryFilter != null)
                    Marshal.ReleaseComObject(pQueryFilter);
                return lstValue;
            }
            catch (System.Exception ex)
            {
                if (pFeature != null)
                    Marshal.ReleaseComObject(pFeature);
                if (pFeatureCursor != null)
                    Marshal.ReleaseComObject(pFeatureCursor);
                if (pQueryFilter != null)
                    Marshal.ReleaseComObject(pQueryFilter);
                return null;
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值