第5章地圖制圖_第1頁
第5章地圖制圖_第2頁
第5章地圖制圖_第3頁
第5章地圖制圖_第4頁
第5章地圖制圖_第5頁
已閱讀5頁,還剩97頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

牟乃夏ArcGISEngine地理信息系統(tǒng)開發(fā)教程

配套PPT

第5章地圖制圖目錄符號化專題圖制作地圖整飾與輸出一、符號化1.顏色模型2.地圖符號化3.地圖標(biāo)注1.ArcGIS顏色模型1)RGB顏色模型2)CMYK顏色模型3)HSV顏色模型4)Gray模型1)RGB顏色模型這是一種最常用的顏色模型,所有的顏色都是通過紅色(Red)、綠色(Green)和藍(lán)色(Blue)這三原色的混合來顯示通過顯示紅、綠、藍(lán)光的像素,計(jì)算機(jī)顯示器就可以描繪上百種、上千種甚至幾百萬種不同的顏色要定義一個(gè)表示為RGB值的顏色,用戶需要分別給出光的紅、綠、藍(lán)三原色的值1)RGB顏色模型

用于RGB顏色模型的一些規(guī)則:如果所有的RGB值相等,則產(chǎn)生的顏色是灰色調(diào)的如果所有的RGB值為0,則產(chǎn)生的顏色為黑色如果所有的RGB值為255,則產(chǎn)生的顏色為白色2)CMYK顏色模型

CMYK是一種顏色模式,是印刷時(shí)必須使用的一種模式C、M、Y、K分別指的是青色(Cyan)、洋紅色(Magenta)、黃色(Yellow)和黑色(Black)四種顏色的油墨,使用分別從0~100,也就是顏色從最淺到最深的數(shù)值。數(shù)值越小顏色越淺,反之顏色則越深,當(dāng)每種顏色都達(dá)到最高值100時(shí)則為深黑色。2)CMYK顏色模型

3)HSV顏色模型

即色調(diào)(Hue)、飽和度(Saturation)和明度(Value)顏色模型色調(diào)值指明了顏色在色環(huán)中的位置,以度表示。例如,色調(diào)值為0的顏色是暗紅色,而色調(diào)值為180的顏色是暗青色飽和度描述了顏色的純度。飽和度的取值范圍為0~100,因此,飽和度為20意味著中等暗色,而飽和度為100意味著可能的最純的顏色明度(Value)也稱為亮度,亮度高,色彩明亮,亮度低,色彩暗淡,明度(Value)的取值范圍為0~100。值為0表示黑色,但是值為100不表示白色,它只是表明可能的最亮顏色3)HSV顏色模型

以下是用于HSV顏色模型的一些規(guī)則:如果Value=0,產(chǎn)生的顏色為黑色。如果Saturation=0,產(chǎn)生的顏色為暗灰色。如果Value=100且Saturation=0,產(chǎn)生的顏色為白色5)Gray模型灰度圖像,由8位信息組成,并使用256級的灰色來模擬顏色層次灰度值為0表示黑色,值為255表示白色Color對象Color類是一個(gè)抽象類,它包括5個(gè)顏色子類,分別是:CmykColor類,實(shí)現(xiàn)了ICmykColor接口RgbColor類,實(shí)現(xiàn)了IRgbColor接口HsvColor類,實(shí)現(xiàn)了IHsvColor接口HlsColor類,實(shí)現(xiàn)了IHlsColor接口GrayColor類,實(shí)現(xiàn)了IGrayColor接口在ArcGISEngine中最常用的是RGB和HSV這兩種顏色模型。下面代碼是封裝的獲取RGB顏色值的方法

//輸入RGB值,獲得IRgbColor型值

publicIRgbColorGetRgbColor(intintR,intintG,intintB){IRgbColorpRgbColor=null;if(intR<0||intR>255||intG<0||intG>255||intB<0||intB>255){returnpRgbColor;}pRgbColor=newRgbColorClass();pRgbColor.Red=intR;pRgbColor.Green=intG;pRgbColor.Blue=intB;returnpRgbColor;}下面代碼是封裝的獲取HSV顏色值的方法//輸入HSV值,獲得IHsvColor型值publicIHsvColorGetHsvColor(intintH,intintS,intintV){IHsvColorpHsvColor=null;if(intH<0||intH>360||intS<0||intS>100||intV<0||intV>100){returnpHsvColor;}pHsvColor=newHsvColorClass();pHsvColor.Hue=intH;pHsvColor.Saturation=intS;pHsvColor.Value=intV;returnpHsvColor;}Color類及其子類

ColorRamp類及其子類ColorRamp類的對象可以產(chǎn)生顏色帶,這個(gè)類實(shí)現(xiàn)了IColorRamp接口,它定義了一系列顏色帶的屬性,如Size(產(chǎn)生多少種顏色),Colors(顏色帶IEnumColor)ColorRamp是抽象類,它有4個(gè)子類,分別是AlgorithmicColorRamp(起止?jié)u變色)MultiPartColorRamp(疊加漸變色)RandomColorRamp(隨機(jī)漸變色)PresetColorRamp(預(yù)設(shè)漸變色)ColorRamp類及其子類ColorRamp類及其子類AlgorithmicColorRamp用起始顏色、終止顏色確定一個(gè)顏色帶MultiPartColorRamp疊加產(chǎn)生顏色帶RandomColorRamp隨機(jī)地創(chuàng)建一系列顏色PresetColorRamp預(yù)設(shè)的顏色模式,可存儲13種顏色4種顏色帶說明AlgorithmicColorRamp類介紹及代碼示例

AlgorithmicColorRamp是通過起止顏色來確定多個(gè)在這兩個(gè)顏色之間的色帶AlgorithmicColorRamp類實(shí)現(xiàn)了兩個(gè)主要的接口:

IColorRamp和IAlgorithmicColorRamp,兩個(gè)接口之間是接口繼承關(guān)系,后者包含了前者所有的方法和屬性IAlgorithmicColorRamp接口的屬性,F(xiàn)romColor屬性用于設(shè)置或返回起始顏色值,ToColor屬性用于設(shè)置或返回終止顏色值。IAlgorithmicColorRamp接口的屬性和方法如下:AlgorithmicColorRamp代碼示例

代碼示例:publicIColorRampCreateAlgorithmicColorRamp(){//創(chuàng)建一個(gè)新AlgorithmicColorRampClass對象IAlgorithmicColorRamppAlgColorRamp=newAlgorithmicColorRampClass();IRgbColorpFromColor=newRgbColorClass();IRgbColorpToColor=newRgbColorClass();//創(chuàng)建起始顏色對象

pFromColor.Red=255;pFromColor.Green=0;pFromColor.Blue=0;//創(chuàng)建終止顏色對象pToColor.Red=0;pToColor.Green=255;pToColor.Blue=0;

//設(shè)置AlgorithmicColorRampClass的起止顏色屬性

pAlgColorRamp.ToColor=pFromColor;pAlgColorRamp.FromColor=pToColor;//設(shè)置梯度類型

pAlgColorRamp.Algorithm=esriColorRampAlgorithm.esriCIELabAlgorithm;//設(shè)置顏色帶顏色數(shù)量

pAlgColorRamp.Size=10;//創(chuàng)建顏色帶

boolbture=true;pAlgColorRamp.CreateRamp(outbture);returnpAlgColorRamp;}MultiPartColorRamp類介紹MultiPartColorRamp類是由兩個(gè)色帶疊加生成一個(gè)新的色帶。MultiPartColorRamp類實(shí)現(xiàn)了IMultiPartColorRamp接口,其AddRamp方法用于添加一個(gè)基礎(chǔ)色帶。該色帶可以在表達(dá)具有零點(diǎn)的現(xiàn)象(如人口增長或溫度)時(shí)使用。RandomColorRamp類介紹RandomColorRamp對象產(chǎn)生隨機(jī)顏色帶,RandomColorRamp也需要設(shè)定一個(gè)范圍,這個(gè)范圍是HSV顏色模型的,顏色將在這個(gè)范圍內(nèi)隨機(jī)出現(xiàn)RandomColorRamp類實(shí)現(xiàn)了IRandomColorRamp接口RandomColorRamp類介紹IRandomColorRamp接口的屬性和方法如下:2.地圖的符號化在ArcGISEngine中,所有地圖數(shù)據(jù)及其修飾要素的顯示樣式都是由Symbol類控制的。主要分為三大類符號:MarkerSymbol(點(diǎn)符號)、LineSymbol(線符號)和FillSymbol(填充符號)來繪制地理要素的幾何圖形此外還有兩種特殊類型的符號:一種是TextSymbol,用于文字標(biāo)注;另一種是ChartRender

,用于顯示餅圖、條形圖、柱狀圖等表示統(tǒng)計(jì)圖表類型(在專題地圖中詳細(xì)講述)。符號的設(shè)置1)MarkerSymbol類及其子類2)LineSymbol類及其子類3)FillSymbol類及其子類4)TextSymbol類1)MarkerSymbol類及其子類MarkerSymbol類是用于修飾點(diǎn)對象的符號,它主要擁有5個(gè)子類,不同的子類可以產(chǎn)生不同類型的點(diǎn)符號所有的MarkerSymbol子類都實(shí)現(xiàn)了IMarkerSymbol接口,這個(gè)接口定義了標(biāo)記符號的公共方法和屬性,如Angle、Color、Size和XOffset、YOffset等。1)MarkerSymbol類及其子類MarkerSymbol類的五個(gè)主要子類:SimpleMarkerSymbolArrowMarkerSymbolCharacterMarkerSymbolPictureMarkerSymbolMultiLayerMarkerSymbol1)MarkerSymbol類及其子類SimpleMarkerSymbol用與設(shè)置簡單類型的點(diǎn)符號,該類實(shí)現(xiàn)了ISimpleMarkerSymbol接口。其Style屬性用于設(shè)置點(diǎn)類型的樣式,它有五種類型,并存儲在esriSimpleMarkerStyle變量中,分別是圓形、矩形、十字形、X型、菱形。CharacterMarkerSymbol可以將點(diǎn)要素顯示為字符,該類實(shí)現(xiàn)了ICharacterMarkerSymbol接口,F(xiàn)ont屬性設(shè)置字體類型,Characterindex屬性用于設(shè)置或返回要顯示的字符。設(shè)置顯示的字符由ASCII碼決定。1)MarkerSymbol類及其子類代碼示例:privatevoidSimpleMaker_Click(objectsender,EventArgse){//獲取目標(biāo)圖層ILayerpLayer=newFeatureLayerClass();pLayer=mainMapControl.get_Layer(0);IGeoFeatureLayerpGeoFeatLyr=pLayerasIGeoFeatureLayer;//設(shè)置點(diǎn)符號ISimpleMarkerSymbolpMarkerSymbol=newSimpleMarkerSymbol();pMarkerSymbol.Style=esriSimpleMarkerStyle.esriSMSSquare;//設(shè)置點(diǎn)符號樣式為方形

IRgbColorpRgbColor=newRgbColor();pRgbColor=GetRgbColor(225,100,100);pMarkerSymbol.Color=pRgbColor;//設(shè)置點(diǎn)符號顏色

ISymbolpSymbol=(ISymbol)pMarkerSymbol;//更改符號樣式

ISimpleRendererpSimpleRenderer=newSimpleRendererClass();pSimpleRenderer.Symbol=pSymbol;

pGeoFeatLyr.Renderer=pSimpleRendererasIFeatureRenderer;mainMapControl.Refresh();mainTOCControl.Update();}簡單符號化的結(jié)果2)LineSymbol類及其子類

LineSymbol類是用于修飾線型幾何對象的符號,它主要擁有5個(gè)子類,如SimpleLineSymbol、CartographicLineSymbol、MultiLayerLineSymbol、PictureLineSymbol、HashLineSymbol等,不同的子類可以產(chǎn)生不同類型的線符號所有的LineSymbol子類都實(shí)現(xiàn)了ILineSymbol接口,ILineSymbol定義了兩個(gè)公共屬性:Color和Width。2)LineSymbol類及其子類

LineSymbol類的五個(gè)主要子類:SimpleLineSymbol(預(yù)定義風(fēng)格的線符號)CartographicLineSymbol(制圖線符號)MultiLayerLineSymbol(多符號疊加產(chǎn)生的新線符號)PictureLineSymbol(圖片線符號)

HashLineSymbol(離散線符號)

2)LineSymbol類及其子類

代碼示例:ISimpleLineSymbolpLineSymbol;IRgbColorpRgbColor;pRgbColor=newRgbColorClass();pRgbColor.Red=255;pLineSymbol=newSimpleLineSymbolClass();//設(shè)置線符號的顏色pLineSymbol.Color

=pRgbColor;//設(shè)置先符號的類型pLineSymbol.Style=esriSimpleLineStyle.esriSLSDashDotDot;//設(shè)置線符號的寬度pLineSymbol.Width=1;3)FillSymbol類及其子類面要素的符號化通過FillSymbol類來完成,它是一個(gè)抽象類,有多個(gè)子類。FillSymbol類實(shí)現(xiàn)了IFillSymbol接口,這個(gè)接口定義了兩個(gè)屬性:Color和OutlineColor屬性控制填充的顏色Outline屬性設(shè)置填充符號的輪廓線,默認(rèn)情況下,輪廓線是一個(gè)實(shí)心的SimpleLineSymbol,但用戶可以使用任何類型的線型符號作為輪廓線3)FillSymbol類及其子類FillSymbol類的子類:SimpleFillSymbol(簡單填充符號)LineFillSymbol(包含線型符號的填充符號)MarkerFillSymbol(包含點(diǎn)符號的填充符號)GradientFillSymbol(漸變填充符號)PictureFillSymbol(圖片填充符號)MultiLayerFillSymbol(多符號疊加產(chǎn)生新填充符號)

3)FillSymbol類及其子類SimpleFillSymbolSimpleFillSymbol類實(shí)現(xiàn)簡單填充符號,該類實(shí)現(xiàn)了ISimpleFillSymbol接口,其Style屬性用于設(shè)置或返回填充格式。SimpleFillSymbol支持8種填充類型,存儲在esriSimpleFillStyle常量集合中。3)FillSymbol類及其子類LineFillSymbol該類實(shí)現(xiàn)了ILineFillSymbol接口。接口的屬性和方法如下圖所示。3)FillSymbol類及其子類MarkerFillSymbol該類主要實(shí)現(xiàn)了IMarkerFillSymbol和IFillProperties這兩個(gè)接口。IMarkerFillSymbol接口屬性IFillProperties接口屬性3)FillSymbol類及其子類GradientFillSymbolGradientFillSymbol類實(shí)現(xiàn)了用漸變色填充面要素,它實(shí)現(xiàn)了IGradientFillSymbol接口。3)FillSymbol類及其子類PictureFillSymbolPictureFillSymbol類實(shí)現(xiàn)了用圖片填充面要素。其CreateFillSymbolFromFile方法用于設(shè)置填充圖片的類型和來源,Outline屬性用于設(shè)置面要素邊線,Angle屬性用于設(shè)置圖片的顯示方向。MultiLayerFillSymbol與MultiLayerLineSymbol類似,MultiLayerFillSymbol類實(shí)現(xiàn)了組合符號填充面要素,該類實(shí)現(xiàn)了IMultiLayerFillSymbol接口。SimpleFillSymbol填充代碼示例IGeoFeatureLayerpGeoFeatLyr=pLayerasIGeoFeatureLayer;//設(shè)置面填充符號ISimpleFillSymbolpSimpleFillSymbol=newSimpleFillSymbolClass();pSimpleFillSymbol.Style=esriSimpleFillStyle.esriSFSVertical;//設(shè)置面填充為垂直線填充pSimpleFillSymbol.Color=GetRgbColor(150,150,150);//更改符號樣式ISimpleRendererpSimpleRenderer=newSimpleRendererClass();pSimpleRenderer.Symbol=pSimpleFillSymbolasISymbol;pGeoFeatLyr.Renderer=pSimpleRendererasIFeatureRenderer;4)文本符號化

TextSymbol類是用于修飾文字元素的,文字元素在要素標(biāo)注等方面很有用處TextSymbol類最重要的設(shè)置對象是它的字符,它實(shí)現(xiàn)了三個(gè)主要的接口來設(shè)置字符:ITextSymbol、ISimpleTextSymbol

和IFormattedTextSymbolITextSymbol接口是定義文本字符樣式的主要接口,被ISimpleTextSymbol和IFormattedTextSymbol接口繼承。Font屬性是產(chǎn)生一個(gè)TextSymbol符號的關(guān)鍵。使用ITextSymbol接口還可以定義TextSymbol對象的顏色、角度、水平排列方式、垂直排列方式和文本等內(nèi)容文本符號化代碼示例//設(shè)置文本格式ITextSymbolpTextSymbol=newTextSymbolClass();StdFontmyFont=newstdole.StdFontClass();myFont.Name="宋體";myFont.Size=24;pTextSymbol.Font=(IFontDisp)myFont;pTextSymbol.Angle=0;pTextSymbol.RightToLeft=false;//文本由左向右排列pTextSymbol.VerticalAlignment=esriTextVerticalAlignment.esriTVABaseline;//垂直方向基線對齊pTextSymbol.HorizontalAlignment=esriTextHorizontalAlignment.esriTHAFull;//文本兩端對齊pTextSymbol.Text=TextBox.Text;ITextElementpTextElement=newTextElementClass();pTextElement.Symbol=pTextSymbol;pTextElement.Text=pTextSymbol.Text;5)符號選擇器在ArcGIS中可以使用符號選擇器和樣式管理器來設(shè)置更復(fù)雜和更具有行業(yè)特征的符號??丶﨨ame屬性Text屬性其它SymbologyControlaxSymbologyControl

PictureBoxptbPreview

LabellblColor顏色

LabellblSize大小

LabellblWidth線寬

LabellblAngle角度

LabellblOutlineColor外框顏色

NumericUpDownnudSize

NumericUpDownnudWidth

NumericUpDownnudAngle

ButtonbtnColor

ButtonbtnOutlineColor

ButtonbtnMoreSymbols更多符號

ButtonbtnOK確定DialogResult屬性設(shè)為OKButtonbtnCancel取消

ColorDialogcolorDialog

OpenFileDialogopenFileDialog

Filter屬性設(shè)置為:ServerStyle文件文件|*.ServerStyleContextMenuStripcontextMenuStripMoreSymbol

控件名稱及其屬性符號選擇器代碼示例

if(e.button==1){if(itemType==esriTOCControlItem.esriTOCControlItemLegendClass){//取得圖例ILegendClasspLegendClass=((ILegendGroup)unk).get_Class((int)data);//創(chuàng)建符號選擇器SymbolSelector實(shí)例SymbolSelectorFrmSymbolSelectorFrm=newSymbolSelectorFrm(pLegendClass,layer);if(SymbolSelectorFrm.ShowDialog()==DialogResult.OK){//局部更新主Map控件m_mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography,null,null);//設(shè)置新的符號pLegendClass.Symbol=SymbolSelectorFrm.pSymbol;//更新主Map控件和圖層控件this.axMapControl1.ActiveView.Refresh();this.axTOCControl1.Refresh();}}3.地圖標(biāo)注

地圖標(biāo)注是表示制圖對象的名稱、數(shù)量與質(zhì)量特征的文字和數(shù)字等文字語言,用于說明制圖對象的名稱、種類、性質(zhì)和數(shù)量等具體特征,不僅可以彌補(bǔ)地圖符號的不足,豐富地圖的內(nèi)容,而且在某種程度上還可以起到符號的作用。ArcGISEngine中提供了兩種使用文字信息標(biāo)注地圖要素的方式:標(biāo)注和注記。1)TextElement標(biāo)注TextElement標(biāo)注類似于ArcGIS中的“標(biāo)注”功能,即將地理實(shí)體的某個(gè)屬性值添加到地圖上。實(shí)現(xiàn)思路:利用IFeatureCursor獲取并遍歷要素;利用IFeature的get_Value方法獲取并遍歷要素的屬性值,將其以文本形式賦值給ITextElement的Text屬性;將文字以Element的形式加入地圖容器中。標(biāo)注代碼示例//產(chǎn)生一個(gè)文本符號ITextSymbolpTextSymbol=newTextSymbolClass();//設(shè)置文本符號的大小pTextSymbol.Size=20;pTextSymbol.Font=pFont;pTextSymbol.Color=m_OperateMap.GetRgbColor(255,0,0);//產(chǎn)生一個(gè)文本對象ITextElementpTextElement=newTextElementClass();pTextElement.Text=pFeature.get_Value(index).ToString();pTextElement.ScaleText=true;//標(biāo)注隨著地圖放大縮小而變化pTextElement.Symbol=pTextSymbol;IElementpElement=pTextElementasIElement;pElement.Geometry=pPoint;IActiveViewpActiveView=pMapasIActiveView;IGraphicsContainerpGraphicsContainer=pMapasIGraphicsContainer;//添加元素pGraphicsContainer.AddElement(pElement,0);2)Annotation注記在ArcGISEngine中,注記以更復(fù)雜的方法和屬性對要素圖層進(jìn)行標(biāo)注。實(shí)現(xiàn)Annotation注記涉及到IAnnotateLayerPropertiesCollection、IAnnotateLayerProperties、ILabelEngineLayerProperties等接口。2)Annotation注記AnnotateLayerPropertiesCollection是一個(gè)要素圖層的屬性,可由IGeoFeaturelayer的AnnotationProperties屬性獲取,它是標(biāo)注對象集的集合,此集合內(nèi)可以放置多個(gè)不同的LabelEngineLayerProperties(標(biāo)注對象),LabelEngineLayerProperties是與某個(gè)要素圖層關(guān)聯(lián)的,用于描述要素圖層的標(biāo)注,LabelEngineLayerProperties類實(shí)現(xiàn)了ILabelEngineLayerProperties接口,其Expression屬性用于通過VBScript或Jscript表達(dá)式設(shè)置或格式化標(biāo)注字段,BasicOverposterLayerProperties屬性用于設(shè)置或返回標(biāo)注的位置,并有處理標(biāo)注沖突的功能,Symbol屬性用于設(shè)置或返回標(biāo)注字體的格式。注記代碼示例IGeoFeatureLayerpGeoFeatLyer=pFeatLyrasIGeoFeatureLayer;IAnnotateLayerPropertiesCollectionpAnnoProps=pGeoFeatLyer.AnnotationProperties;pAnnoProps.Clear();//設(shè)置標(biāo)注記體格式ITextSymbolpTextSymbol=newTextSymbolClass();stdole.StdFontpFont=newstdole.StdFontClass();pFont.Name="verdana";pFont.Size=10;pTextSymbol.Font=pFontasstdole.IFontDisp;//設(shè)置注記放置格式ILineLabelPositionpPosition=newLineLabelPositionClass();pPosition.Parallel=false;pPosition.Perpendicular=true;ILineLabelPlacementPrioritiespPlacement=newLineLabelPlacementPrioritiesClass();注記代碼示例IBasicOverposterLayerPropertiespBasic=newBasicOverposterLayerPropertiesClass();pBasic.FeatureType=esriBasicOverposterFeatureType.esriOverposterPolyline;pBasic.LineLabelPlacementPriorities=pPlacement;//設(shè)置標(biāo)注文本擺設(shè)路徑權(quán)重pBasic.LineLabelPosition=pPosition;//控制文本的排放位置ILabelEngineLayerPropertiespLableEngine=newLabelEngineLayerPropertiesClass();pLableEngine.Symbol=pTextSymbol;pLableEngine.BasicOverposterLayerProperties=pBasic;//設(shè)置標(biāo)注文本的放置方式,以及處理文字間沖突的處理方式等pLableEngine.Expression="["+sFieldName+"]";//輸入VBScript或JavaScript語言,設(shè)置要標(biāo)注的字段IAnnotateLayerPropertiespAnnoLayerProps=pLableEngineasIAnnotateLayerProperties;pAnnoProps.Add(pAnnoLayerProps);3)MapTips顯示MapTips是一種與地圖數(shù)據(jù)交互的訪問方式,即當(dāng)鼠標(biāo)停留在某一要素上時(shí),就可以查看該要素的某一屬性值,具體顯示的哪一個(gè)字段的值,由該圖層的主顯示字段決定。實(shí)例程序?qū)崿F(xiàn)思路如下:獲取要素圖層;設(shè)置該圖層要顯示的屬性字段;設(shè)置AxMapControl的ShowMapTips屬性。MapTips代碼示例ILayerpLayer=newFeatureLayerClass();pLayer=pFeatLyr;pLayer.ShowTips=true;ILayerFieldspLayerFields=(ILayerFields)pFeatLyr;for(inti=0;i<=pLayerFields.FieldCount-1;i++){IFieldfield=pLayerFields.get_Field(i);if(field.Name==sFieldName){pFeatLyr.DisplayField=field.Name;break;}}mainMapControl.ShowMapTips=true;二、專題地圖制作1.單一符號化2.唯一值符號化3.唯一值多字段符號化4.分級色彩符號化5.分級符號化6.比例符號化7.點(diǎn)密度符號化8.統(tǒng)計(jì)圖表符號化9.雙值符號化10.多比例尺符號化1.單一符號化單一符號化就是采用大小、形狀和顏色都統(tǒng)一的點(diǎn)狀、線狀或面狀符號來表示某一個(gè)圖層。這種符號設(shè)置方法忽略了要素在數(shù)量與質(zhì)量等方面的差異,只能反映制圖要素的地理位置。然而正是這種特點(diǎn)使其在表達(dá)制圖要素的地理位置方面具有一定的優(yōu)勢。單一符號化的實(shí)現(xiàn)與點(diǎn)、線、面簡單符號化類似。2.唯一值符號化唯一值符號化是根據(jù)要素屬性值來設(shè)置地圖符號的,它將具有相同屬性值的地理要素賦予相同的符號,并用符號來區(qū)分不同的屬性值。這種表示方法能夠反映出地圖要素的數(shù)量或者質(zhì)量的差異。唯一值符號化由UniqueValueRenderer類實(shí)現(xiàn),該類實(shí)現(xiàn)了IUniqueValueRenderer接口。其FieldCount屬性用于設(shè)置或返回渲染字段的個(gè)數(shù)(0-3個(gè)),唯一值符號化的時(shí)候,它的值為1。2.唯一值符號化實(shí)例程序?qū)崿F(xiàn)思路如下:(1)獲取渲染字段的屬性值;(2)生成一組與之對應(yīng)的填充樣式,通過IUniqueValueRender接口的AddValue方法,使不同的屬性值和填充樣式關(guān)聯(lián);(3)由IGeoFeatureLayer接口的Render方法完成渲染。唯一值單字段符號化代碼示例定義一個(gè)色帶查詢要渲染的字段獲取渲染字段的值并為每個(gè)值附上顏色唯一值單字段符號化代碼示例面線點(diǎn)3.唯一值多字段符號化唯一值多字段符號化與單字段唯一值符號化的實(shí)現(xiàn)類似,不同之處是需要設(shè)置IUniqueValueRenderer接口的FieldDelimiter屬性,它的作用是將多個(gè)組合字段的屬性值分開。除此之外,IUniqueValueRenderer接口的AddValue方法的參數(shù)也不同,在唯一值多字段符號化中AddValue需添加的參數(shù)為不同屬性字段的組合值、字段與其對應(yīng)的符號。4.分級色彩符號化

分級色彩符號化是將要素屬性值按照一定的分級方法分成若干級別,再用不同的顏色來表示不同級別。每個(gè)級別表示數(shù)值的一個(gè)范圍,從而可以明確地反映制圖要素的數(shù)量差異。色彩選擇和分級方案是分級色彩表示法中的重要環(huán)節(jié),只有合理的配色方案和科學(xué)的分級方法才能將地理現(xiàn)象的分布規(guī)律體現(xiàn)得清晰明確。這種方法多用于人口密度分布圖、糧食產(chǎn)量分布圖等。分級符號化代碼示例5.分級符號化

分級符號和分級色彩類似,都是由IClassBreakRenderer接口下的ClassBreakRenderer類實(shí)現(xiàn)。不同的是分級色彩根據(jù)不同的值賦予不同的顏色,而分級符號是根據(jù)不同的值賦予大小不同的符號。6.比例符號化在ArcGISEngine中,比例符號是由ProportionalSymbolRenderer類實(shí)現(xiàn),該類實(shí)現(xiàn)了IProportionalSymbolRenderer接口。其Field屬性用于設(shè)置或返回渲染字段,MaxDataValue、MinDataValuel屬性分別用于設(shè)置渲染中的最大值和最小值,一般我們設(shè)為渲染字段的最大值和最小值,MinSymbol屬性用于設(shè)置或返回最小值對應(yīng)的符號。分級符號化代碼示例7.點(diǎn)密度符號化

點(diǎn)密度符號化是指根據(jù)制圖要素屬性值的大小,用隨機(jī)分布的一定數(shù)量且大小相同的點(diǎn)來表示,屬性值越大則表明該區(qū)域的點(diǎn)越多,屬性越小則表明該地區(qū)的點(diǎn)越少,它是一種用點(diǎn)的密度來表達(dá)要素空間分布的方法。點(diǎn)密度由DotDensityRenderer類實(shí)現(xiàn)的,該類主要實(shí)現(xiàn)了IDotDensityRenderer和IRendererFields這兩個(gè)接口。IRendererFields的AddField方法用來添加渲染字段;IDotDensityRenderer的DotDensitySymbol屬性用來設(shè)置或返回點(diǎn)的樣式,而DotDensitySymbol由DotDensityFillSymbol類實(shí)現(xiàn);DotValue屬性用來設(shè)置每個(gè)點(diǎn)所代表的值。需要注意的是點(diǎn)密度只能用于面狀要素圖層。8.統(tǒng)計(jì)圖表符號化常用的統(tǒng)計(jì)圖表類型有:餅圖、條形圖、柱狀圖、堆疊圖等。在ArcGISEngine中,它們都是由ChartRenderer類實(shí)現(xiàn)的,該類實(shí)現(xiàn)了IChartRenderer接口。9.雙值符號化雙值符號化是綜合使用唯一值符號化和分級符號化這兩種符號化方法來渲染地圖,使地圖既能表現(xiàn)出唯一值符號渲染的特征,又能表現(xiàn)出分級渲染的特征。雙值符號化由BiUniqueValueRenderer類實(shí)現(xiàn),該類實(shí)現(xiàn)了IBivariateRenderer接口。其MainRenderer屬性用設(shè)置或返回主渲染方法,該方法必須為唯一值渲染;VariationRenderer屬性用于設(shè)置或返回二元渲染,該方法必須是分級渲染。9.雙值符號化實(shí)例程序?qū)崿F(xiàn)思路如下:(1)設(shè)置唯一值渲染;(2)設(shè)置分級渲染,并分別將其賦值給MainRenderer和VariationRenderer屬性。10.多比例尺符號化在ArcGISEngine中,多比例尺渲染由ScaleDependentRenderer類實(shí)現(xiàn),該類實(shí)現(xiàn)了IScaleDependentRenderer接口。其AddRenderer方法用于向渲染列表末尾添加一個(gè)新的渲染值;set_Break方法用于設(shè)置指定比例尺下的渲染方法,如IScaleDependentRenderer.set_Break(0,10000),IScaleDependentRenderer.set_Break(1,20000),所表達(dá)的意思為當(dāng)比例尺分母≤10000時(shí),地圖顯示為AddRenderer方法第一個(gè)添加的渲染方式,當(dāng)比例尺分母大于10000且小于等于20000時(shí),地圖顯示為AddRenderer方法第二個(gè)添加的渲染方式,依此類推。10.多比例尺符號化實(shí)例程序?qū)崿F(xiàn)思路如下:(1)設(shè)置不同的渲染方式;(2)用AddRenderer方法添加渲染方式;(3)用set_Break方法設(shè)置不同比例尺下顯示的不同渲染方式。三、地圖整飾與輸出5.5地圖整飾一幅完整的地圖,不僅有地理數(shù)據(jù)的符號化顯示,還要有比例尺、指北針、圖例等制圖要素的整飾,這些整飾要素都屬于MapSurround對象。MapSurround是由MapSurroundFrame管理的。添加圖例添加圖例主要由LegendItem和Legend兩個(gè)類實(shí)現(xiàn),它們分別實(shí)現(xiàn)了ILegendItem和ILegend接口。LegendItem類是一個(gè)抽象類,它有四個(gè)子類:HorizontalBarLegendItem、HorizontalLegendItem、NestedLegendItem和VerticalLegendItem,它們分別對應(yīng)不同類型的圖例。5.5地圖整飾基本思路如下:(1)用IGraphicsContainer接口的FindFrame方法獲取一個(gè)MapFrame對象;(2)由IMapFrame接口的CreateSurroundFrame方法獲取一個(gè)MapSurroundFrame對象,并設(shè)置MapSurroundFrame的背景,背景設(shè)置由ISymbolBackground接口實(shí)現(xiàn);(3)遍歷所有圖層,設(shè)置ILegendItem接口的Layer屬性關(guān)聯(lián)的圖層,并通過ILegend接口的AddItem方法將LegendItem添加到ILegend中;(4)將生成的圖例添加到PageLayoutControl中。5.5地圖整飾添加指北針指北針在地圖中用于指示地圖哪個(gè)方向朝北。在ArcGISEngine中,指北針由MarkerNorthArrow類實(shí)現(xiàn),該類主要實(shí)現(xiàn)了IMarkerNorthArrow和InorthArrow這兩個(gè)接口。INorthArrow接口用于設(shè)置指北針對象的一般屬性,如顏色、尺寸和位置等;IMarkerNorthArrow接口定義了一個(gè)MarkSymbol屬性,用于設(shè)置或返回指北針的符號類型。實(shí)例程序?qū)崿F(xiàn)思路如下:(1)利用SymbologyControl的LoadStyleFile方法將符號庫載入到SymbologyControl控件中;(2)選擇適合的指北針,將選擇的符號添加到PageLayout控件中。5.5地圖整飾添加指北針5.5地圖整飾添加比例尺比例尺表示地圖上的單位長度代表著現(xiàn)實(shí)世界的實(shí)際長度,它是地圖制圖的重要組成部分,由ScaleBar類實(shí)現(xiàn)。ScaleBar類也是一種MapSurround對象,它有多個(gè)子類,如ScaleLine、AlternatingScaleBar、DoubleAlternatingScaleBar和HollowScalbar等,這些類都實(shí)現(xiàn)了IScaleBar和IScaleMarks這兩個(gè)接口。5.5地圖整飾添加比例尺5.5地圖整飾添加地圖格網(wǎng)ArcGISEngine中添加地圖格網(wǎng)使用MapGrid對象,MapGrid對象作為MapFrame對象的一種,必須出現(xiàn)在Pagelayout視圖中。Mapgrid對象主要由GridLine(格網(wǎng)線)、GridLabel(格網(wǎng)標(biāo)注)、GridBorder(格網(wǎng)邊框)三部分組成。地圖格網(wǎng)組成5.5地圖整飾1)地圖格網(wǎng)分類MapGrid有五個(gè)子類,分別是MeasuredGrid、IndexGrid、MgrsGrid、Graticule和CustomOverlayGrid,不同的子類可以生成不同類型的格網(wǎng)。Graticule類使用經(jīng)緯線來劃分地圖,它主要實(shí)現(xiàn)了IGraticule和IMeasuredGrid這兩個(gè)接口。MeasuredGrid與Graticule類似,都是使用經(jīng)緯度作為地圖格網(wǎng)來劃分地圖,不同的是它的空間參考屬性可以與MapFrame對象一致,也可以不一致。IndexGrid接口使用索引值的方式來劃分地圖區(qū)域,適合小區(qū)域內(nèi)地塊的劃分。IndexGrid類實(shí)現(xiàn)了IIndexGrid接口。CustomOverlayGrid是用戶自定義的格網(wǎng)對象。5.5地圖整飾2)添加地圖格網(wǎng)下面以添加Graticule、MeasuredGrid和IndexGrid格網(wǎng)為例,說明如何在PageLayoutControl控件中添加地圖格網(wǎng)。添加Graticule格網(wǎng)實(shí)例程序?qū)崿F(xiàn)思路如下:(1)由IGraticule設(shè)置格網(wǎng)的邊框、網(wǎng)格線、標(biāo)注等格式;(2)由IMeasuredGrid設(shè)置格網(wǎng)的空間參考、起始點(diǎn)和格網(wǎng)間隔等;(3)將格網(wǎng)添加到地圖上。添加經(jīng)緯網(wǎng)添加經(jīng)緯網(wǎng)5.5地圖整飾2)添加MeasuredGrid格網(wǎng)實(shí)例程序?qū)崿F(xiàn)思路如下:(1)由IMeasuredGrid設(shè)置格網(wǎng)基本屬性,如是否自動設(shè)置起始點(diǎn)、經(jīng)緯度間隔、格網(wǎng)標(biāo)注格式等;(2)將格網(wǎng)添加到地圖上。添加方里格網(wǎng)5.5地圖整飾3)添加IndexGrid格網(wǎng)添加參考格網(wǎng)5.6制圖模板模板是ArcMap中的一種地圖文檔,用于快速創(chuàng)建新地圖。模板包含數(shù)據(jù)、自定義界面以及用于在虛擬頁面上排列地圖元素(如指北針、比例尺等)的預(yù)定義布局。制圖模板以*.mxt為文件擴(kuò)展名,這與*.mxd不同(地圖文檔)。本節(jié)實(shí)例主要實(shí)現(xiàn)加載系統(tǒng)自帶地圖模板與自定義地圖模板、預(yù)覽模板顯示效果、選擇合適的模板應(yīng)用到當(dāng)前地圖中等功能。實(shí)例程序?qū)崿F(xiàn)的主要思路如下:(1)讀取模板文件,在TreeView中生成以模板名稱命名的節(jié)點(diǎn),單擊節(jié)點(diǎn),獲取節(jié)點(diǎn)名稱所對應(yīng)的地圖模板路徑,在PageLayoutControl控件中預(yù)覽,如合適,單擊確定;(2)刪除原有地圖中除MapFrame外的所有元素并遍歷新模板的要素,將其添加到地圖上。預(yù)覽模板顯示如圖5.31所示,其中“Custorm”下模板表示自定義模板,其余表示系統(tǒng)自帶模板。5.6制圖模板5.7空間參考在ArcGISEngine中,管理空間參考框架的是SpatialReference類,它實(shí)現(xiàn)了ISpatialReference接口。SpatialReference是一個(gè)抽象類,該類被GeographicCoordinateSystem、ProjectedCoordinateSystem、UnknownCoordinateSystem所繼承。GeographicCoordinateSystem類主要實(shí)現(xiàn)了IGeographicCoordinateSystem和IGeographicCoordinateSystemEdit這兩個(gè)接口。ProjectedCoordinateSystem類主要實(shí)現(xiàn)了IProjectedCoordinateSystem和IProjectedCoordinateSystemEdit這兩個(gè)接口。在ArcGISEngine中有關(guān)坐標(biāo)系定義還常用到SpatialReferenceEnvironment類,該類實(shí)現(xiàn)了ISp

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論