AE考試復(fù)習資料_第1頁
AE考試復(fù)習資料_第2頁
AE考試復(fù)習資料_第3頁
AE考試復(fù)習資料_第4頁
AE考試復(fù)習資料_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上1、 利用C#和AE進行軟件開發(fā),要求能夠加載矢量格式和柵格格式的數(shù)據(jù),需要用戶通過添加點、線、面自定義命令和工具,同時根據(jù)給定條件進行要素查詢和專題地圖制作,請詳細分析需要添加哪些組件庫?要點:System庫:SystemUI庫:Carto庫:Geometry庫:Display庫:FrameWork庫;GeoDatabase庫:DataSourcesFile庫;DataSourcesRaster庫:2、 請詳細分析在AE開發(fā)中存在哪三種類?各種類有何特性?并分析這幾種類存在哪幾種關(guān)系?要點:ArcGIS Engine存在三種類:抽象類:不能直接產(chǎn)生一個對象,但是可以

2、生成一個子類;組件類:可以直接創(chuàng)建一個類的對象,用new關(guān)鍵字;例如:IMap pMap=new pMap();普通類:不能用new關(guān)鍵字直接創(chuàng)建類的對象,但是可以利用組件類或普通類創(chuàng)建一個普通類。類與類之間的關(guān)系:對象A對象B(依賴關(guān)系:一個對象有方法產(chǎn)生另外一個對象)對象A對象B1.*1.*(關(guān)聯(lián)關(guān)系:以從一個類的對象,訪問到另一個類的對象)對象A對象B1.*(組合關(guān)系:一個類對象是另外一個類對象的組成部分)抽象類子類A子類B( 繼承關(guān)系)3、 利用Mapcontrol、Toolbarcontrol、Toccontrol控件編寫加載shape格式和mxd格式的文件程序,不能用系統(tǒng)內(nèi)的加載數(shù)

3、據(jù)命令,需要自己定義文件對話框,設(shè)置伙伴控件將窗體最大化顯示,設(shè)置菜單以及加載和顯示shape和mxd文件?要點:(1)打開shp格式文件OpenFileDialog dlg=new OpenFileDialog(); dlg.Filter="Shape file(*.shp)|*.shp" dlg.Title="打開Shape數(shù)據(jù)文檔" dlg.Multiselect=true; /定義存放所選文件名的數(shù)組 string strFileName; if(dlg.ShowDialog()=DialogResult.OK) strFileName=new

4、stringdlg.FileNames.Length; strFileName=dlg.FileNames; if(strFileName.Length > 0) string WorkSpacePath =System.IO.Path.GetDirectoryName(strFileName0); string strShapeFileName=new stringstrFileName.Length ; /獲得打開IFeatureClass的字符串數(shù)組 for(int i=0;i<strFileName.Length;i+) strShapeFileNamei=System.I

5、O.Path.GetFileName(strFileNamei); IWorkspaceFactory pWorkspaceFactory=new ShapefileWorkspaceFactoryClass(); IWorkspace pWorkspace=pWorkspaceFactory.OpenFromFile(WorkSpacePath,0); IFeatureWorkspace pFeatureWorkspace=pWorkspace as IFeatureWorkspace; for(int i=0;i<strShapeFileName.Length;i+) IFeatur

6、eClass pFeatureClass=pFeatureWorkspace.OpenFeatureClass(strShapeFileNamei); IDataset pDataset=pFeatureClass as IDataset; IFeatureLayer pFeatureLayer=new FeatureLayerClass(); pFeatureLayer.FeatureClass=pFeatureClass; pFeatureLayer.Name=pDataset.Name; ILayer pLayer=pFeatureLayer as ILayer; axMapContro

7、l1.Map.AddLayer(pLayer); (2)加載MAX文檔OpenFileDialog OpenFileDig = new OpenFileDialog(); OpenFileDig.Title = "選擇需要加載的地圖文檔文件" OpenFileDig.Filter = "地圖文檔文件(*.mxd)|*.mxd" OpenFileDig.ShowDialog(); string strFileName = OpenFileDig.FileName; if (strFileName = string.Empty) return; if (ax

8、MapControl1.CheckMxFile(strFileName) /是Mxd文檔文件 IArray pArray; pArray = axMapControl1.ReadMxMaps(strFileName, Type.Missing); IMap pMap; for (int i = 0; i < pArray.Count; i+) /QI接口跳轉(zhuǎn) pMap = pArray.get_Element(i) as IMap; if (pMap.Name = "Layers") /加載文檔對象中特定的Map對象 axMapControl1.MousePointe

9、r = esriControlsMousePointer.esriPointerHourglass; axMapControl1.LoadMxFile(strFileName, 0, Type.Missing); axMapControl1.MousePointer = esriControlsMousePointer.esriPointerDefault; else MessageBox.Show("請選擇地圖文檔文件!","信息提示"); return;4、 在AE開發(fā)中,請分析空間幾何對象(Geomery)中的高級幾何對象和種類?要點:在Geome

10、try模型中,幾何形體對象被分為兩個層次,其一是構(gòu)成要素的幾何圖形,另一個是組成這些形狀的構(gòu)件。前者稱為高級幾何對象,具體包括:Point對象:是一個0維的幾何圖形,可以用于描述只需要精確定位的對象;Multipoint對象:無序點的群集,它用于表示具有相同屬性設(shè)置的同一組點;Envelope對象:是一個矩形區(qū)域,用于表示要素的空間范圍,它是作為任何一個幾何形體的最小邊框區(qū)域而存在的;Polyline對象:是相連或不相連的路徑對象(path)的有序集合;Polygon對象:是環(huán)(Ring)的集合,Polygon通常用于描述具有面狀特性的要素。附:注意掌握Geometry對象模型圖5、 請分析在

11、AE開發(fā)中空間參考的含義,何為地理坐標系?何為投影坐標系?如何設(shè)置空間參考?要點:空間參考:為了空間數(shù)據(jù)能夠被合適的存儲和指向地球上某一個位置,必須設(shè)置空間參考??臻g參考包含了坐標系統(tǒng)和精度。坐標系統(tǒng)(地理坐標系或投影坐標系)定義空間數(shù)據(jù)在地球上的具體位置。地理坐標系:是確定地物在地球上位置的坐標系,以經(jīng)緯度為地圖的存儲單位;投影坐標系:是將三維地理坐標系統(tǒng)上的經(jīng)緯網(wǎng)投影到二維平面地圖上使用的坐標系統(tǒng);設(shè)置空間參考:AE中提供了一系列對象供開發(fā)者管理坐標系統(tǒng),對于大部分開發(fā)者而言,需要了解到三種主要的ArcObjects組件:ProjectedCoordinateSystem使用IProjec

12、tedCoordianateSystem接口新建一個投影坐標系統(tǒng);GeographicCoordinateSystem確定一個地理坐標系統(tǒng),可以使用IGeographicCoordinateSystem接口,設(shè)置一個地理坐標系統(tǒng);SpatialReferenceEnvironment:Spatialreference對象的ISpatialReference接口提供了操作方法和屬性來設(shè)置一個數(shù)據(jù)集空間參考屬性。6、 利用Mapcontrol、Toolbarcontrol、Toccontrol控件的MouseDown事件中添加繪制多義線(PolyLine)和多變形(PolyGon)的程序,要求設(shè)計

13、畫多義線和多變形的菜單,然后在MouseDown事件中判斷選擇,以確定畫多義線還是畫多變形,并寫出畫多義線和多邊形的代碼。要點:兩個菜單命令:/定義主窗體層全局變量 string GeoMapOperateT = string.Empty; /定義兩個菜單,并初始化GeoMapOperateT,菜單名字GeoMapDLine,GeoMapDPolygonprivate void GeoMapDLine_Click(object sender, EventArgs e) GeoMapOperateT = "DrawLine" private void GeoMapDPolyg

14、on_Click(object sender, EventArgs e) GeoMapOperateT = "DrawPolygon" /主窗體鼠標按下事件相應(yīng)處理:private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e) /主視圖的鼠標按下事件 GeoMapAdd.GeoMapOperate(axMapControl1, e, GeoMapOperateT); 封裝類:class GeoMapAddpublic static IMap pMap;

15、 public static IActiveView pActiveView; /與地理數(shù)據(jù)的交互操作 public static void GeoMapOperate(AxMapControl axMapControl1, IMapControlEvents2_OnMouseDownEvent e, string OperateT) switch (OperateT) case "DrawLine": pMap = axMapControl1.Map; pActiveView = pMap as IActiveView; IPolyline pPolyline; pPol

16、yline = axMapControl1.TrackLine() as IPolyline; /產(chǎn)生一個SimpleLineSymbol符號 ISimpleLineSymbol pSimpleLineSym; pSimpleLineSym = new SimpleLineSymbolClass(); pSimpleLineSym.Style = esriSimpleLineStyle.esriSLSSolid;/需要用戶動態(tài)選擇 /定義線的顏色 IRgbColor pColor; pColor = new RgbColorClass(); pColor.Red = 220; pColor.G

17、reen = 112; pColor.Blue = 60; pSimpleLineSym.Color = pColor;/需要用戶動態(tài)選擇 pSimpleLineSym.Width = 1; /產(chǎn)生一個PolylineElement對象 ILineElement pLineEle; pLineEle = new LineElementClass(); IElement pEle; pEle = pLineEle as IElement; pEle.Geometry = pPolyline; /將元素添加到Map對象之中 IGraphicsContainer pGraphicsContainer

18、; pGraphicsContainer = pMap as IGraphicsContainer; pGraphicsContainer.AddElement(pEle, 0); pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null); break; case "DrawPolygon": pMap = axMapControl1.Map; pActiveView = pMap as IActiveView; IPolygon pPolygion; pPolygion = axM

19、apControl1.TrackPolygon() as IPolygon; /產(chǎn)生一個SimpleFillSymbol符號 ISimpleFillSymbol pSimpleFillSym; pSimpleFillSym = new SimpleFillSymbolClass(); pSimpleFillSym.Style = esriSimpleFillStyle.esriSFSDiagonalCross;/需要用戶動態(tài)選擇 /設(shè)置顏色 IRgbColor pColor; pColor = new RgbColorClass(); pColor.Red = 220; pColor.Gree

20、n = 112; pColor.Blue = 60; pSimpleFillSym.Color = pColor;/需要用戶動態(tài)選擇 /產(chǎn)生一個PolygonElement對象 IFillShapeElement pPolygonEle; pPolygonEle = new PolygonElementClass(); pPolygonEle.Symbol = pSimpleFillSym; IElement pEle; pEle = pPolygonEle as IElement; pEle.Geometry = pPolygion; /將元素添加到Map對象之中 IGraphicsCont

21、ainer pGraphicsContainer; pGraphicsContainer = pMap as IGraphicsContainer; pGraphicsContainer.AddElement(pEle, 0); pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null); break; default: break;7、 鷹眼的實現(xiàn) 要點:(實現(xiàn)基本思路)1、兩個Mapcontrol控件,一個作為主視圖,一個作為鷹眼視圖;2、主視圖和鷹眼視圖中數(shù)據(jù)顯示保持一致;3、主視圖當前顯示的地圖范

22、圍,需要一個紅色的矩形框在鷹眼視圖中標繪出來;當主視圖中顯示的地圖范圍發(fā)生變化時,紅色矩形框的位置也發(fā)生變化;4、當在鷹眼視圖中移動或改變標繪主視圖顯示范圍的紅色矩形框的位置和大小時,主視圖中的地圖范圍也發(fā)生變化。當主視圖中的地圖發(fā)生變換化時,鷹眼視圖中的地圖也要發(fā)生變化。為此,在axMapControl1的OnMapReplaced事件中添加下列代碼,使主視圖和鷹眼視圖中的數(shù)據(jù)保持一致。 IMap pMap; pMap=axMapControl1.Map; for(int i=0;i<pMap.LayerCount;i+) axMapControl2.Map.AddLayer(pMap

23、.get_Layer(i); /使鷹眼視圖中顯示加載地圖的全圖 axMapControl2.Extent=axMapControl2.FullExtent; /使鷹眼視圖中顯示加載地圖的全圖在鷹眼視圖中移動紅色矩形框時,主視圖中的地圖范圍要發(fā)生相應(yīng)的變換,包括范圍變化和位置移動。需要鷹眼視圖的OnMouseDown事件中添加下列代碼: if (e.button = 1)/探測鼠標左鍵 IPoint pPt = new PointClass(); pPt.X = e.mapX; pPt.Y = e.mapY; IEnvelope pEnvelope = axMapControl1.Extent

24、as IEnvelope; pEnvelope.CenterAt(pPt); axMapControl1.Extent = pEnvelope;axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); else if (e.button = 2)/鼠標右鍵按下 IEnvelope pEnvelope = axMapControl2.TrackRectangle(); axMapControl1.Extent = pEnvelope;axMapControl1.ActiveV

25、iew.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); 上述代碼的功能是,利用鼠標左鍵移動鷹眼視圖中的紅色矩形框,主視圖中顯示的范圍要進行刷新。用鼠標右鍵在鷹眼視圖中改變紅色矩形框的大小,主視圖中顯示的地圖數(shù)據(jù)也要進行刷新。在axMapControl2的OnMouseMove事件中添加如下代碼: if (e.button != 1) return;IPoint pPt = new PointClass(); pPt.X = e.mapX; pPt.Y = e.mapY; axMapControl1.CenterA

26、t(pPt); axMapControl2.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);主視圖的范圍發(fā)生變化時,會觸發(fā)控件的OnExtentUpdated事件,繪制鷹眼圖中的紅色方框應(yīng)放在主視圖的OnExtentUpdated事件中: /控制鷹眼的代碼 IGraphicsContainer pGraphicsContainer = axMapControl2.Map as IGraphicsContainer;/以mapControl2為圖形容器 IActiveView pAv = pGra

27、phicsContainer as IActiveView; / 在繪制前,清除axMapControl2 中的任何圖形元素 pGraphicsContainer.DeleteAllElements(); IRectangleElement pRecElement = new RectangleElementClass(); IElement pEle = pRecElement as IElement; IEnvelope pEnv; pEnv = e.newEnvelope as IEnvelope; pEle.Geometry = pEnv; /設(shè)置顏色 IRgbColor pColor

28、 = new RgbColorClass(); pColor.Red = 200; pColor.Green = 0; pColor.Blue = 0; pColor.Transparency = 255; /產(chǎn)生一個線符號對象 ILineSymbol pLineSymbol = new SimpleLineSymbolClass(); pLineSymbol.Width = 2; pLineSymbol.Color = pColor; /設(shè)置填充符號的屬性 IFillSymbol pFillSymbol = new SimpleFillSymbolClass(); /設(shè)置透明顏色 pColo

29、r.Transparency = 0; pFillSymbol.Color = pColor; pFillSymbol.Outline = pLineSymbol; IFillShapeElement pFillShapeElement = pRecElement as IFillShapeElement; pFillShapeElement.Symbol = pFillSymbol; pGraphicsContainer.AddElement(pEle, 0); axMapControl2.ActiveView.PartialRefresh(esriViewDrawPhase.esriVie

30、wGraphics, null, null);8、 PageLayoutControl控件與MapControl控件的聯(lián)動要點:在ArcGIS Engine開發(fā)中,因MapControl控件和PageLayoutControl控件并不能共享一個文檔文件,要實現(xiàn)聯(lián)動,一般需通過數(shù)據(jù)拷貝的方法傳遞兩個控件中的數(shù)據(jù)內(nèi)容?;舅悸啡缦拢海?)編寫數(shù)據(jù)拷貝方法,將axMapControl1控件中的地理數(shù)據(jù)復(fù)制到axPageLayoutControl1控件中。在該方法中需要利用IObjectCopy接口,以便將axMapControl1中的Map對象拷貝到axPageLayoutControl1控件的Ac

31、tiveView對象的FocusMap中,具體代碼如下: public static void CopyAndOverwriteMap(AxMapControl axMapControl1, AxPageLayoutControl axPageLayoutControl1) /獲取對象拷貝接口 IObjectCopy objectCopy = new ObjectCopyClass(); object toCopyMap = axMapControl1.Map; object copiedMap = objectCopy.Copy(toCopyMap);/復(fù)制地圖到copiedMap中 obj

32、ect toOverwiteMap = axPageLayoutControl1.ActiveView.FocusMap;/獲取視圖控件的焦點地圖 objectCopy.Overwrite(copiedMap, ref toOverwiteMap);/復(fù)制地圖 (2)當axMapControl1控件中加載的地理數(shù)據(jù)的發(fā)生重繪時,與其聯(lián)動的axPageLayoutControl1控件中的地理數(shù)據(jù)也要發(fā)生相應(yīng)變化,因此在axMapControl1控件的OnAfterScreenDraw事件中應(yīng)該添加axMapControl1控件中當前所顯示地理數(shù)據(jù)范圍的代碼,并將當前顯示范圍傳到axPageLay

33、outControl1控件的ActiveView對象的FocusMap中,同時要調(diào)用數(shù)據(jù)拷貝方法。IActiveView pActiveView = (IActiveView)axPageLayoutControl1.ActiveView.FocusMap;IDisplayTransformationdisplayTransformation=pActiveView.ScreenDisplay.DisplayTransformation; displayTransformation.VisibleBounds = axMapControl1.Extent;/設(shè)置焦點地圖的可視范圍 axPage

34、LayoutControl1.ActiveView.Refresh();GeoMapLoad.CopyAndOverwriteMap(axMapControl1, axPageLayoutControl1);(3)當axMapControl1控件中加載的地理數(shù)據(jù)發(fā)生變化時,axPageLayoutCOntrol1控件中的地理數(shù)據(jù)也要發(fā)生相應(yīng)變化。因此在axMapControl1控件的OnMapReplaced事件中應(yīng)調(diào)用數(shù)據(jù)拷貝的方法。GeoMapLoad.CopyAndOverwriteMap(axMapControl1, axPageLayoutControl1);(4)當MapContr

35、ol控件中的地理數(shù)據(jù)顯示狀況發(fā)生變化時,與其聯(lián)動的PageLayoutControl中的地理數(shù)據(jù)也要發(fā)生變化。因此在OnViewRefreshed事件中應(yīng)該添加調(diào)用數(shù)據(jù)拷貝的代碼和使圖層控件刷新的代碼。axTOCControl1.Update();GeoMapLoad.CopyAndOverwriteMap(axMapControl1, axPageLayoutControl1);9、 調(diào)整TOCControl控件中圖層的顯示順序要點:利用鼠標拖放調(diào)整圖層的顯示順序的基本思路如下:1)利用鼠標將需要調(diào)整顯示順序的圖層拖放到目標位置,需要利用TOCControl控件的OnMouseDown和OnMouseUp兩個事件,以及HitTest()和Update()方法。2)利用OnMouseDown事件獲取需要調(diào)整顯示順序的圖層,利用OnMouseUp事件,獲得目標圖層及其索引號,利用IMap提供的MoveLayer方法,將需要調(diào)整顯示順序的圖層移到目標圖層的下方。使用TOCControl控件提供的Update()方法更新TOCControl控件中顯示的內(nèi)容。定義3個窗體層全局變量: /聲明調(diào)整TOCControl控件中圖層顯示順序的全局變量 ITOCControl mTOCControl; ILayer pMoveLayer; int toIndex;

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論