GIS開發隨筆(5)——StudioAT.MapNet.DLL中部分控制項的用法

來源:互聯網
上載者:User
在《GIS開發隨筆(4)——使用MapNet控制項和DataGrid實現圖層資料互相查詢》中我們講述了如何使用MapNet控制項來完成點、線、面的屬性擷取代碼,下面我們就來研究一下在地圖中,使用StudioAT.MapNet.DLL中提供的和MapNet控制項綁定的幾個主要的畫方面、圓面、不規則圖形面的工具是如何統計其中的元素的。通過MapNet控制項的官方網站上的協助頁面http://www.studioat.it/StudioAT/Help/MapNet/MapNetWebHelp.htm我們可以知道這些工具的主要實現方法。
1、畫方面工具,工具名稱“SelectByCircle”:
2、畫圓面工具,工具名稱“SelectByRect”:
3、畫不規則圖形面工具,工具名稱“SelectByPolygon”:
其中將這幾個控制項的同一個屬性“MapNetControl”的值都設定為所要操控的MapNet控制項名上,即將這幾個控制項和所要控制的MapNet控制項綁定。
在MapNet控制項的“SelectByShape”事件中添加類似下面的代碼: 1private void MapNet1_SelectByShape(StudioAT.IGeometry shape)
 2        {
 3            IMapNet mapNet = this.MapNet1;
 4            ICollectionLayers myICL = mapNet.CollectionLayers;
 5            IGetFeatures myIGF = null;
 6            //根據圖層讀取資料到DataSet 
 7            ILayer myIL = myICL.FindById(this.DDL_LayerChoose.SelectedItem.Value);
 8            ISpatialFilter myISF = new SpatialFilter(shape, ArcXML.enuSpatialFilterRelation.area_intersection);
 9            ISpatialQuery2 myISQ2 = new SpatialQuery();
10            myISQ2.SpatialFilter = myISF;
11            DataSet myDs = myIL.Recordset(myISQ2,true, false,myIGF);
12            //更改列名
13            try
14            {
15                                int GIS_IDindex = -1;
16                int IDindex = -1;
17                for (int k = 0; k < myDs.Tables[0].Columns.Count; k++)
18                {
19                    switch (myDs.Tables[0].Columns[k].ColumnName)
20                    {
21                        case "#ID#":
22                            myDs.Tables[0].Columns[k].ColumnName = "序號";
23                            IDindex = k;
24                            break;
25                        case "EnvelopeXMin":
26                            myDs.Tables[0].Columns[k].ColumnName = "最小經度";
27                            break;
28                        case "EnvelopeXMax":
29                            myDs.Tables[0].Columns[k].ColumnName = "最大經度";
30                            break;
31                        case "EnvelopeYMin":
32                            myDs.Tables[0].Columns[k].ColumnName = "最小緯度";
33                            break;
34                        case "EnvelopeYMax":
35                            myDs.Tables[0].Columns[k].ColumnName = "最大緯度";
36                            break;
37                        case "NAME":
38                            myDs.Tables[0].Columns[k].ColumnName = "名稱";
39                            break;
40                        case "GIS_ID":
41                            GIS_IDindex = k;
42                            break;
43                        case "REMARK":
44                            myDs.Tables[0].Columns[k].ColumnName = "備忘";
45                            break;
46                        default:
47                            break;
48                    }
49                }
50    //下面的Grid並非是.Net2003中自己的Grid而是第三方控制項所提供的名稱:UWG_Result            
                        UWG_Result.DataSource = myDs;    
51                UWG_Result.DataBind();
52                UWG_Result.Columns[GIS_IDindex].Hidden = true;
53                UWG_Result.Columns[IDindex].Hidden = true;
54            }
55            catch (Exception ex)
56            {
57                PageClass myPC = new PageClass();
58                myPC.Alert(ex.Message,this);
59            }
60        }

這樣無論是畫圓面、畫方面還是畫不規則圖形面都會觸發上述事件,從而能統計出在DropDownList控制項中(上訴中有“DDL_LayerChoose”名稱的為此控制項)所選擇的圖層元素在所畫的“shape”面中的個數以及每個元素的詳細資料。
      不知道對大家是否有協助,因為時間倉促這次的隨筆就寫到這裡了,對上述代碼還有什麼獨特見解的可以發表評論。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.