第04章 地圖組成及圖層控制(一)x_第1頁
第04章 地圖組成及圖層控制(一)x_第2頁
第04章 地圖組成及圖層控制(一)x_第3頁
第04章 地圖組成及圖層控制(一)x_第4頁
第04章 地圖組成及圖層控制(一)x_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

GIS二次開發(fā)

主講老師:吳德華

聯(lián)系電話/p>

電子郵箱:hncuwdh@

2第4章地圖組成及圖層控制目的要求:

了解和掌握ArcGISEngine地圖對象、圖層對象、屏幕顯示對象等對象的使用。教學重點:

地圖對象。教學難點:

地圖對象接口的使用。1.地圖對象3.屏幕顯示對象4.頁面布局對象5.地圖排版2.圖層對象第4章地圖組成及圖層控制6.Element對象地圖對象的主要接口:IMap接口IGraphicsContainer接口IActiveView接口IActiveViewEvents接口IMapBookmark接口ITableCollection接口4.1地圖對象概念:數(shù)據(jù)的管理容器;數(shù)據(jù)顯示的主要載體。共35個接口,如IMap、IGraphicsContainer、IActiveView、IActiveViewEvents、IMapBookmark、ITableCollection等;能顯示兩類圖形,一類是地理數(shù)據(jù),一類是元素如矢量點、線、面數(shù)據(jù),柵格數(shù)據(jù),TIN數(shù)據(jù)等。如指北針、圖例等。4.1地圖對象例:選擇要素IMappMap=axMapControl1.Map;IActiveViewpActiveView=pMapasIActiveView;IEnvelopepEnvelope=axMapControl1.TrackRectangle();ISelectionEnvironmentpSelEnv=newSelectionEnvironmentClass();pSelEnv.DefaultColor=GetRGB(110,120,210);pMap.SelectByShape(pEnvelope,pSelEnv,false);pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection,null,null);4.1.1IMap接口Map對象通過IGraphicsContainer接口來管理圖形元素和框架元素。方法: AddElement—添加元素 UpdateElement—更新元素

DeleteElement—刪除元素4.1.2IGraphicsContainer接口IMappMap=axMapControl1.Map;IPolylinepPolyline=newPolylineClass();IPointpPoint=newPointClass();pPoint.PutCoords(1,5);pPolyline.FromPoint=pPoint;pPoint.PutCoords(80,5);pPolyline.ToPoint=pPoint;4.1.2IGraphicsContainer接口ILineElementpLineElement=newLineElementClass();IElementpElement=pLineElementasIElement;pElement.Geometry=pPolylineasIGeometry;IGraphicsContainerpGraCon=pMapasIGraphicsContainer;pGraCon.AddElement(pElement,0);axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null,null);4.1.2IGraphicsContainer接口IGraphicsContainer接口的DeleteElement方法IGraphicsContainerpGraCon=axMapControl1.MapasIGraphicsContainer;pGraCon.Reset();IElementpElement;pElement=pGraCon.Next();while(pElement!=null){pGraCon.DeleteElement(pElement);pElement=pGraCon.Next();}axMapControl1.ActiveView.Refresh();4.1.2IGraphicsContainer接口IActiveView接口是Map對象最主要、最常用的接口之一,該接口定義了Map對象的數(shù)據(jù)顯示功能。通過該接口,可以在Map上:繪制圖形改變視圖范圍獲取ScreenDisplay對象的指針顯示或隱藏標尺和滾動條刷新地圖4.1.3IActiveView接口IActiveView接口的重要屬性和方法:Extent—返回Map對象當前視圖的范圍,返回值為一個Envelope對象;FullExtent—返回Map對象當前視圖的全圖范圍;ScreenDisplay—用于指向一個ScreenDisplay對象;PartialRefresh—Map對象視圖的刷新方法,通過指定esriViewDrawPhase參數(shù),可以實現(xiàn)不同方式的局部刷新。4.1.3IActiveView接口ILayer接口是所有圖層類都實現(xiàn)的接口,該接口定義了所有圖層的公共方法和屬性。Name-返回圖層名稱;MaximumScale(MinimumScale)-顯示或設置圖層可以出現(xiàn)的最大(最?。┍壤?;ShowTips-鼠標放在圖層中某個要素上的時候,是否會出現(xiàn)Tip;TipText-圖層提示文字;SpatialReference-設置圖層的空間參考。4.2.1ILayer接口4.2圖層對象要素圖層用于表示離散的矢量對象的信息。要素圖層的主要接口主要有:IFeatureLayer接口IGeoFeatureLayer接口IGeoDataset接口IFeatureSelection接口IFeatureLayerDefinition接口ILayerFields接口IIdentify接口4.2.2要素圖層IFeatureLayer接口的主要屬性和方法:DataSourceType-返回圖層的數(shù)據(jù)源屬性;Search-返回一個ICursor的對象。IFeatureLayer例:IFeatureLayer接口的Search方法(P65)DataSourceType的類型:IFeatureLayerIGeoFeatureLayerIGeoFeatureLayer接口繼承了ILayer接口和IFeatureLayer兩個接口,CadFeatureLayer、FeatureLayer、GdbRasterCatalogLayer等3個圖層類實現(xiàn)了該接口。主要屬性和方法有:SearchDisplayFeature-只顯示符合查詢要求的要素,其他要素會消失掉;Renderer-設置圖層的著色對象;DisplayAnnotation-設置要素圖層是否出現(xiàn)標注,如果為True,用戶可以依據(jù)圖層的某個字段進行標注。IFeatureSelectionIFeatureSelection接口負責管理一個圖層中要素的選擇集的屬性和方法。Add-將本圖層的一個要素添加到圖層的選擇集中;SelectFeatures-使用一個過濾器把符合要求的要素放入圖層的選擇集中;Clear-把圖層的所有選擇集清空。注:選擇集有兩種,要素選擇集和元素選擇集,PageLayout只有元素選擇集,Map則有元素選擇集和要素選擇集。 ILayerFields接口提供了Field、FieldCount、FieldInfo和FindField等屬性和方法,用于獲取要素類的字段信息。ILayerFieldsIIdentify接口定義了一個方法Identify,用于獲取圖層的單個要素,返回一個IArray數(shù)組對象。IIdentify Map對象能夠載入多種格式的地理和非地理數(shù)據(jù),其中便包括AutoCAD的DWG文件。 DWG文件是兩種不同形式的混合體:一是要素圖層,保存矢量數(shù)據(jù),使用FeatureLayer對象管理;二是柵格圖像,使用CadLayer對象管理。

當DWG文件載入Map對象時,ArcEngine將CAD元素分為4種類型:點、線、多邊形和標注,并在要素的屬性表中建立標識字段,而不按照DWG文件本身的圖層號進行分層。CAD文件中的文字可以使用CadAnnotationLayer對象來操作。4.2.3CAD文件

下面的代碼展示了在ArcEngine中如何加載DWG文件:usingESRI.ArcGIS.Geodatabase;usingESRI.ArcGIS.DataSourcesFile;privatevoidAddCadLayers(stringstrCadPath,stringstrCadName,AxMapControlpMapControl)

{IWorkspaceFactorypCadFactory=newCadWorkspaceFactoryClass();IWorkspacepWorkspace=pCadFactory.OpenFromFile(strCadPath,0);ICadDrawingWorkspacepCadDrawingWorkspace=pWorkspaceasICadDrawingWorkspace;ICadDrawingDatasetpCadDataset=pCadDrawingWorkspace.OpenCadDrawingDataset(strCadName);ICadLayerpCadLayer=newCadLayerClass();pCadLayer.CadDrawingDataset=pCadDataset;pMapControl.AddLayer(pCadLayer,0);

}4.2.3CAD文件ITinLayer接口定義了TIN圖層如何在Map對象中顯示的方法和屬性。Dataset-顯示TIN圖層的數(shù)據(jù)源;DisplayField-TIN圖層的主要顯示字段;AddRenderer-用于加入一個著色對象;ClearRenderer-清除TIN圖層中所有的著色對象;GetRenderer-通過索引值獲取著色對象;RendererCount-返回著色對象的數(shù)目。4.2.4TIN圖層4.2.4TIN圖層4.2.5GraphicsLayer

GraphicsLayer是一個抽象類,當在MapControl控件上繪制圖形時,這些繪制的圖形所在的層就是GraphicsLayer對象。GraphicsLayer類泛化出了CompositeGraphicsLayer、FDOGraphicsLayer(FeatureDataObject)、GlobeGraphicsLayer、GraphicsLayer3D、GraphicsSubLayer等類。

每個Map對象都管理著一個CompositeGraphicsLayer對象,該對象是一個圖形圖層集合,該集合中有一個缺省的基本圖形圖層,可以通過屬性BasicGraphicsLayer直接獲取。該圖層是默認的,不能在CompositeGraphicsLayer對象中刪除,CompositeGraphicsLayer對象提供了集合中添加、刪除、查找圖層的方法。4.2.5GraphicsLayerFDOGraphicsLayer是一個與要素相關的標注圖層,可以有兩種方法添加標注:一是Label方法,即選取要素,逐個添加標注文本;二是Annotation方法,可以對要素圖層進行自動標注,并且標注的文本信息可以保存在數(shù)據(jù)庫中。4.3屏幕顯示對象MapControl中的每個視圖都有一個ScreenDisplay對象,用于控制視圖中的圖形繪制。ScreenDisplay對象除了管理窗體屏幕的顯示屬性外,也管理緩存和視圖屏幕的變化等。

可以通過IActiveView接口的ScreenDisplay屬性獲取ScreenDisplay對象。ScreenDisplay對象都擁有DisplayTransformation對象,用于設備單位和地圖單位的轉(zhuǎn)換。InterfacesDescriptionIConnectionPointContainer(Display)Supportsconnectionpointsforconnectableobjects.IDisplayProvidesaccesstomembersthatcontroltheDisplay.IDrawProvidesaccesstomembersthatcontroldrawing.IDynamicScreenDisplayProvidesaccesstodynamicscreendisplay.IScreenCacheManagerProvidesaccesstoaScreenDisplay'scaches.IScreenDisplayProvidesaccesstomembersthatcontrolScreenDisplay.IScreenDisplay2ProvidesaccesstoadditionalmembersthatcontroltheScreenDisplay.IScreenDisplayZoomProvidesaccesstozoomingthescreendisplay.IScreenInvalidateProvidesaccesstoaScreenDisplay'srefreshmethods.ITransformEventsProvidesaccesstomembersthatcontrolTransformEventsPageLayout對象和Map對象一樣,都是圖形元素的容器,但是PageLayout對象除了保存圖形元素外,還可以保存框架元素(FrameElement)。PageLayout對象主要實現(xiàn)了IPageLayout接口,該接口定義了修改頁面版式的方法和屬性,包括圖形的位置屬性,標尺、對齊網(wǎng)格、確定頁面顯示在屏幕上的方法。

通過IPageLayout接口可以管理RulerSettings、SnapGrid、SnapGuides和Page等對象。IPageLayout接口的主要屬性和方法:Page-獲取放在PageLayout對象中的Page對象;RulerSettings-獲取PageLayout對象控制的標尺對象;SnapGrid-與VerticalSnapGrid一起控制PageLayout對象中顯示的網(wǎng)格對象;VerticalSnapGrid-與SnapGrid一起控制PageLayout對象中顯示的網(wǎng)格對象;ZoomToWhole-設置PageLayout對象以最大比例尺顯示;ZoomPercent-設置按照輸入的比例顯示;ZoomToPercent-設置按照輸入的比例顯示;ZoomToWith-讓視圖的顯示范圍與控件的寬度一致。4.4頁面布局對象PageLayout對象還實現(xiàn)了IGraphicsContainer接口和IGraphicsContainerSelect接口。IGraphicsContainer接口用來管理元素;IGraphicsContainerSelect接口用來管理被選擇的元素。4.4頁面布局對象AllDescriptionDominantElementDominantelement.ElementSelectedIndicatesiftheelementisselected.ElementSelectionCountThenumberofselectedelements.SelectAllElementsSelectsallelements.SelectedElementReturnsthenthselectedelement.UseSelectioncounttogetthenumberofselectedelements.SelectedElementsTheselectedelements.SelectElementSelectsthespecifiedelement.SelectElementsSelectsthespecifiedelements.SelectionBoundsTheboundsoftheselection.SelectionTrackerReturnsthetrackerforthenthselectedelement.UseSelectioncounttogetthenumberofselectedelements.UnselectAllElementsUnselectsallelements.UnselectElementUnselectsthespecifiedelement.UnselectElementsUnselectsthespecifiedelements.4.4頁面布局對象4.5地圖排版Page對象只作為一個裝載地圖數(shù)據(jù)的容器,不提供查詢和分析的功能。Page對象的主要接口是IPage。4.5.1Page對象

IPage接口的屬性和方法:Background-設置背景樣式;BackgroundColor-設置背景顏色;Border-設置Page的邊框;Units-獲取Page所使用的單位。4.5.1Page對象 Page對象還實現(xiàn)了IPageEvents接口,擁有PageColorChanged、PageMarginsChanged、PageSizeChanged和PageUnitsChanged等4個事件。Units-獲取Page所使用的單位。

此外,ArcEngine還提供了esriPageFromID枚舉值設置Page對象的尺寸,使用esriPageFromID比用PutCustomSize設置Page尺寸的速度更快。4.5.2

SnapGrid對象 SnapGrid是PageLayout上用于擺放元素而設置的輔助點,便于用戶對齊元素??梢酝ㄟ^IPageLayout接口的SnapGrid屬性獲取SnapGrid對象。SnapGrid對象實現(xiàn)了ISnapGrid接口,主要屬性和方法有:HorizontalSpacing:設置網(wǎng)點之間的水平距離;VerticalSpacing:設置網(wǎng)點之間的垂直距離;IsVisible:確定網(wǎng)點是否處于可見狀態(tài);Draw:將SnapGrid對象繪制在Page上。4.5.2

SnapGrid對象4.5.3

SnapGrids對象SnapGuides對象是繪制在PageLayout上的輔助線,分為水平輔助線和垂直輔助線兩種。可以通過IPageLayout接口的HorizontalSnapGuides或VerticalSnapGuides獲得,每個SnapGuides都管理著一個Guide集合。SnapGuides對象實現(xiàn)了ISnapGuides接口,主要的屬性和方法有:AddGuides:將一個Guide放在指定的位置;AreVisible:設置SnapGuides是否可見;Draw:繪制輔助線;DrawHighlight:繪制高亮輔助線;GuideCount:返回SnapGuides中Guide的數(shù)目;RemoveAllGuides:清除所有Guide;RemoveGuide:按照索引值清除Guide。4.6Element對象 Element對象是地圖上不保存到數(shù)據(jù)庫中的元素,是內(nèi)存中的對象,當MapControl顯示地圖發(fā)生變化時,這些對象就會消失。Element對象分為兩大部分:圖形元素(GraphicElement)和框架元素(FrameElement)。IElement接口是所有圖形元素和框架元素都實現(xiàn)的接口,提供了Geometry屬性和查詢、繪制元素的方法。4.6Element對象在Map對象和PageLayout對象顯示的數(shù)據(jù)除了地理數(shù)據(jù)之外,另一種即為元素數(shù)據(jù)(Element對象)。GraphicsElement都是作為圖形的形式而存在,在Map視圖或者PageLayout視圖上是可見的;FrameElement是作為不可見的容器而存在的。Map對象或者PageLayout對象可以通過IElement接口和IGraphicsContainer接口來管理Element對象。IGraphicsContainer接口—添加、刪除、更新Element;IElement—確定Element對象的Geometry屬性。4.6Element對象圖形元素GroupElementMarkerElementLineElementTextElementDataGraphElementPictureElementFillShapeElement框架元素FrameElementMapFrameMapSourroundFrameOleFrameTableFrame4.6Element對象4.6.1圖形元素LineElement對象:在Map視圖或PageLayout視圖中表現(xiàn)為線的形式。ILineElement接口:提供Symbol設置線的樣式4.6.1圖形元素MarkerElement對象:在Map視圖或PageLayout視圖中表現(xiàn)為點的形式。IMarkerElement接口:提供Symbol設置點的樣式4.6.1圖形元素TextElement對象:形式有兩種——保存在地理數(shù)據(jù)庫中以標注類的形式存在;使用文字元素。ITextElement接口:包含ScaleText、Text、Symbol屬性 ScaleText—文字尺寸; Text—字符; Symbol—文字符號。4.6.1圖形元素GroupElement對象:將多個Element對象編為一組,作為一個整體使用。IGroupElement接口:AddElement、ClearElements、DeleteElement、ElementCount方法和屬性分別對元素添加、清空、刪除、計數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論