C#+AE 對於做屬性查詢的一定總結


本人剛做了有關屬性查詢的一些功能的實現,在這總結一下。

有錯誤之處和不專業之處還希望GIS和AE開發的高手們給以指點。

 

//******其中第二部分發生了點錯誤,現在已更改***********//

 

①:據FeatureLayer得到Feature的方法:

代碼如下:

                ILayer pLayer;
                pLayer = frm1.axMapControl1.Map.get_Layer(LayerBoxEdit.SelectedIndex) as ILayer;//frm1和LayerBoxEdit.SelectedIndex都是變量
                IFeatureLayer pFeatureLayer;
                pFeatureLayer = pLayer as IFeatureLayer;
                if (pFeatureLayer == null)
                {
                    return;
                }

               
              
                IFeatureCursor pFeatureCursor;
                pFeatureCursor = pFeatureLayer.Search(null, false);
                IFeature pFeature;
                pFeature = pFeatureCursor.NextFeature();

②:據FeatureClass得到Feature的方法:

            

 IFeatureLayer pFeatureLayer;
                pFeatureLayer = frm1.axMapControl1.Map.get_Layer(0) as IFeatureLayer;
                IFeatureClass pFeatureClass;
                pFeatureClass = pFeatureLayer.FeatureClass;
                IQueryFilter pQueryFilter;
                pQueryFilter = new QueryFilterClass();
              //  pQueryFilter.WhereClause = "";

                IFeature pFeature;

         for(int j=0;j< pFeatureClass.FeatureCount(pQueryFilter); j++)

            {

                 pFeature = pFeatureClass.GetFeature(j);
            }

              ③:在TreeList中點擊子節點得到Feature的方法:

                      

  if (e.Node.HasChildren)
                {
                    return;
                }

if (!(e.Node.HasChildren)) //***********//這個存在bug,若節點超過兩級則出錯
                {

             

 for (int i = 0; i < this.axMapControl1.LayerCount; i++)
                    {

                        //如果父節點名稱和圖層名相同,獲取索引
                        if (e.Node.ParentNode.GetValue(0).ToString() == this.axMapControl1.get_Layer(i).Name)
                        {
                            layerIndex = i;
                            IFeature pFeature;                             
 
                           pFeature = (this.axMapControl1.get_Layer(layerIndex) as IFeatureLayer).FeatureClass.GetFeature(int.Parse(this.treeList1.FocusedNode.GetValue(0).ToString())); ;

                         }

                     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM