ArcGIS Mobile使用與開發(fā)(三)_第1頁
ArcGIS Mobile使用與開發(fā)(三)_第2頁
ArcGIS Mobile使用與開發(fā)(三)_第3頁
ArcGIS Mobile使用與開發(fā)(三)_第4頁
ArcGIS Mobile使用與開發(fā)(三)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、要素編輯 P14 添加要素 刪除要素 修改要素屬性一、添加要素 步驟 (1)map1變量的 MapActions 來設(shè)置地圖的鼠標(biāo)事件。添加 addVertexSketchTool 用map1變量的 MapGraphicLayers 來設(shè)置地圖的元素圖層,添加sketchGraphicLayer(2)添加添加“開始增加開始增加”菜單,并在其單擊事件中編寫代菜單,并在其單擊事件中編寫代碼碼 (3)添加)添加“結(jié)束增加結(jié)束增加”菜單,并在其單擊事件中編寫菜單,并在其單擊事件中編寫代碼代碼一、添加要素 private void AddFeature_Click(object sender, Even

2、tArgs e) map1.CurrentMapAction = addVertexSketchTool1; /判斷Valve Inspections這個圖層是否是可編輯的。 FeatureLayer editlayer = null; if (mobileCache1.FeatureLayersValve Inspections.AllowModify) editlayer = mobileCache1.Layersvalve Inspections as FeatureLayer; if(editlayer =null ) throw new NullReferenceException

3、(Could not find the specified feature laye); .(2)添加添加“增加要素增加要素”菜單,并在其單擊事件中編寫代碼菜單,并在其單擊事件中編寫代碼一、添加要素 GeometryType pGeoType = editlayer .GeometryType ; /根據(jù)圖層的幾何類型創(chuàng)建新的要素 switch(pGeoType) case GeometryType.Polygon : sketchGraphicLayer1 .Geometry = new Polygon (); break ; case GeometryType .Polyline : sk

4、etchGraphicLayer1 .Geometry = new Polyline (); break ; case GeometryType.Point : sketchGraphicLayer1 .Geometry = new ESRI .ArcGIS .Mobile .Geometries . Point(); break ; case GeometryType .Multipoint : sketchGraphicLayer1 .Geometry = new Multipoint (); break; (2)添加添加“增加要素增加要素”菜單,并在其單擊事件中編寫代碼菜單,并在其單擊事

5、件中編寫代碼一、添加要素 以上代碼實(shí)現(xiàn)后,在圖上可繪制 點(diǎn)、線、面 幾何對象,并未保存為要素,需執(zhí)行下一步的代碼,要素才能增加到圖層中(2)添加添加“增加要素增加要素”菜單,并在其單擊事件中編寫代碼菜單,并在其單擊事件中編寫代碼一、添加要素 private void StopEditmenu_Click(object sender, EventArgs e) / 獲取 Valve Inspections 圖層 FeatureLayer featureLayer = mobileCache1.LayersValve Inspections as FeatureLayer; / 得到 Sketch

6、GraphicLayer /SketchGraphicLayer sketchGraphicLayer = (map1.MapGraphicLayersmyeditsSketchGraphicLayer) as SketchGraphicLayer; SketchGraphicLayer sketchGraphicLayer = sketchGraphicLayer1; / 得到圖層數(shù)據(jù)表 FeatureDataTable featureDataTable = featureLayer.GetDataTable(); 。(3)添加添加“結(jié)束增加結(jié)束增加”菜單,并在其單擊事件中編寫代碼菜單,并在

7、其單擊事件中編寫代碼一、添加要素。 / 創(chuàng)建新要素 FeatureDataRow featureDataRow = featureDataTable.NewRow(); / 設(shè)置新要素的幾何類型,這個類型就是您在地圖上畫的sketch的幾何類型 featureDataRowfeatureLayer.GeometryColumnIndex = sketchGraphicLayer1.Geometry; / j把新建要素添加到圖層中 featureDataTable.Rows.Add(featureDataRow); / 保存 featureDataTable.SaveInFeatureLayer

8、(); / 清空sketchGraphicLayer的幾何 sketchGraphicLayer1.Geometry = null; (3)添加添加“結(jié)束增加結(jié)束增加”菜單,并在其單擊事件中編寫代碼菜單,并在其單擊事件中編寫代碼一、添加要素通過“增加要素增加要素”,“結(jié)束增加結(jié)束增加”,可實(shí)現(xiàn)點(diǎn)、線,面,多點(diǎn)可實(shí)現(xiàn)點(diǎn)、線,面,多點(diǎn)要素的增加。要素的增加。若一個線要素若一個線要素 或者或者 面要素面要素 有多個部分組成,如何添加由多個有多個部分組成,如何添加由多個部分組成的要素?部分組成的要素?一、添加要素添加由多個部分組成的要素,具體操作添加由多個部分組成的要素,具體操作(1) 增加增加“ 添

9、加多個部分添加多個部分”子菜單,在其子菜單,在其Click事件中編寫如下代碼。事件中編寫如下代碼。 / 取得Sketch層 SketchGraphicLayer sketchGraphicLayer = sketchGraphicLayer1; / 獲得sketch 的幾何形狀 Geometry geometry = sketchGraphicLayer.Geometry; if (geometry = null | geometry.GeometryType = GeometryType.Point) return; /獲取sketch幾何形狀的前部分 int partIndex = geo

10、metry.CurrentPartIndex; CoordinateCollection newPartCoordinateCollection = new CoordinateCollection(); /將坐標(biāo)集合添加到幾何形狀中 geometry.Parts.Add(newPartCoordinateCollection); partIndex+; /設(shè)置新的坐標(biāo)集合索引 geometry.CurrentPartIndex = partIndex; 一、添加要素添加由多個部分組成的要素,系統(tǒng)運(yùn)行時,操作步驟為添加由多個部分組成的要素,系統(tǒng)運(yùn)行時,操作步驟為 (1)點(diǎn)擊點(diǎn)擊“增加要素增加要

11、素”,在圖上開始繪制,在圖上開始繪制 線,面要素,線,面要素,雙擊結(jié)束繪制雙擊結(jié)束繪制(2)點(diǎn)擊點(diǎn)擊“ 添加多個部分添加多個部分”,在圖上繼續(xù)繪制在圖上繼續(xù)繪制 線,面線,面要素,雙擊結(jié)束繪制,該操作步驟可重復(fù),要素,雙擊結(jié)束繪制,該操作步驟可重復(fù),(3)點(diǎn)擊點(diǎn)擊“結(jié)束增加結(jié)束增加”,保存新的要素,結(jié)束繪制,保存新的要素,結(jié)束繪制 代碼有待完善的地方 添加完幾何要素后,可直接彈出屬性對話框,添加屬性,并將要素保存起來一、添加要素二、刪除要素 添加添加“刪除刪除”菜單,并在其單擊事件中編寫代碼菜單,并在其單擊事件中編寫代碼 private void Delmenu_Click(object se

12、nder, EventArgs e) /確保圖層內(nèi)有被選中的幾何要素 if(selectionMapAction1 .SelectedFeatures = null |selectionMapAction1 .SelectedFeatures .Count =0) MessageBox.Show(You must select an Inspection to delete); return; /返回圖層選擇集合 FeatureDataTable sLDT = selectionMapAction1 .SelectedFeatures 0; .二、刪除要素 添加添加“刪除刪除”菜單,并在其單擊

13、事件中編寫代碼菜單,并在其單擊事件中編寫代碼 . foreach (FeatureDataRow sDR in sLDT.Rows ) sDR.Delete (); /保存 sLDT.SaveInFeatureLayer (); /清空選擇集 selectionMapAction1 .SelectedFeatures .Clear (); sketchGraphicLayer1 .Geometry = null; 二、刪除要素注意 “刪除要素”一般與“選擇要素”聯(lián)合使用,即:先進(jìn)行選擇要素操作,然后再進(jìn)行刪除操作。三、修改要素屬性添加添加“要素屬性修改要素屬性修改”菜單,并在其單擊事件中編寫代

14、碼菜單,并在其單擊事件中編寫代碼 private void EditMenu_Click(object sender, EventArgs e) /選擇圖層 FeatureLayer pfeaLayer = mobileCache1.LayerswSystemValveas FeatureLayer ; if (pfeaLayer = null) return; /檢查屬性是否可編輯 if (!pfeaLayer.AllowModify) return; /新建查詢 / QueryFilter pQueryF = new QueryFilter(new int 3275,5473, 14004

15、, 13997, 7404, 8556, 10494, 16117 ); QueryFilter pQueryF = new QueryFilter(facilityid = 3275); int apn =111111; /獲取要編輯列的位置,這里選擇屬性APN int apnFieldIndex = pfeaLayer.Columns.IndexOf(facilityid); Type tp = pfeaLayer.ColumnsapnFieldIndex.GetType (); /使用DataReader來更新 using (FeatureDataReader fdR = pfeaLay

16、er.GetDataReader(pQueryF,null) while (fdR.Read() / 得到幾何要素的id int fid = fdR.GetFid(); /修改要素屬性 fdR.SetValue(apnFieldIndex, apn.ToString() ); apn += 1; /打印信息 System.Diagnostics.Debug.WriteLine(FID: + fid + , facilityid: +fdR.GetValue(apnFieldIndex); /更新圖層數(shù)據(jù)表 fdR.Update(); /注意,退出之前,保存設(shè)備訪真狀態(tài),必須點(diǎn)擊保存,修改的數(shù)據(jù)

17、才會保存 三、修改要素屬性. int apn =111111; /獲取要編輯列的位置,這里選擇屬性 facilityid int apnFieldIndex = pfeaLayer.Columns.IndexOf(facilityid); Type tp = pfeaLayer.ColumnsapnFieldIndex.GetType (); /使用DataReader來更新 using (FeatureDataReader fdR = pfeaLayer.GetDataReader(pQueryF,null) while (fdR.Read() / 得到幾何要素的id int fid = fdR.GetFid(); 。三、修改要素屬性/修改要素屬性 fdR.SetValue(apnFieldIndex, apn.ToString() ); apn += 1; /打印信息 System.Diagnostics.Debug.WriteLine(FID: + fid + , facilityid: +fdR.GetValue(apnFieldIndex)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論