版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、牟乃夏牟乃夏 ArcGIS Engine ArcGIS Engine 地理信地理信息系統(tǒng)開發(fā)教程息系統(tǒng)開發(fā)教程配套配套PPT-PPT-第5章 地圖制圖目目 錄錄l符號化符號化l專題圖制作專題圖制作l地圖整飾與輸出地圖整飾與輸出一、符號化一、符號化u1.1.顏色模型顏色模型u2.2.地圖符號化地圖符號化u3.3.地圖標(biāo)注地圖標(biāo)注 1.ArcGIS 1.ArcGIS顏色模型顏色模型l1)RGB顏色模型顏色模型 l2)CMYK顏色模型顏色模型 l3)HSV顏色模型顏色模型 l4)Gray模型模型1 1)RGBRGB顏色模型顏色模型l這是一種最常用的顏色模型,所有的顏色都是通過這是一種最常用的顏色模型
2、,所有的顏色都是通過紅色紅色(Red)、綠色綠色(Green)和和藍(lán)色藍(lán)色(Blue)這三原色的混合來顯示這三原色的混合來顯示l通過顯示紅、綠、藍(lán)光的像素,計(jì)算機(jī)顯示器就可以描通過顯示紅、綠、藍(lán)光的像素,計(jì)算機(jī)顯示器就可以描繪上百種、上千種甚至幾百萬種不同的顏色繪上百種、上千種甚至幾百萬種不同的顏色l要定義一個(gè)表示為要定義一個(gè)表示為RGB值的顏色,用戶需要分別給出光的值的顏色,用戶需要分別給出光的紅、綠、藍(lán)三原色的值紅、綠、藍(lán)三原色的值 1 1)RGBRGB顏色模型顏色模型 用于用于RGB 顏色模型的一些規(guī)則:顏色模型的一些規(guī)則:l如果所有的如果所有的RGB值相等,則產(chǎn)生的顏色是灰色調(diào)的值相等
3、,則產(chǎn)生的顏色是灰色調(diào)的l如果所有的如果所有的RGB值為值為0,則產(chǎn)生的顏色為黑色,則產(chǎn)生的顏色為黑色l如果所有的如果所有的RGB值為值為255,則產(chǎn)生的顏色為白色,則產(chǎn)生的顏色為白色2 2)CMYKCMYK顏色模型顏色模型 lCMYK是一種顏色模式,是印刷時(shí)必須使用的一種模式是一種顏色模式,是印刷時(shí)必須使用的一種模式 lC、M、Y、K分別指的是分別指的是青色青色(Cyan)、洋紅色洋紅色(Magenta)、黃色黃色(Yellow)和和黑色黑色(Black)四種顏色的油墨,使用分別從四種顏色的油墨,使用分別從0100,也就是顏色從最淺到最深的數(shù)值。,也就是顏色從最淺到最深的數(shù)值。l數(shù)值越小顏色
4、越淺,反之顏色則越深,當(dāng)每種顏色都達(dá)數(shù)值越小顏色越淺,反之顏色則越深,當(dāng)每種顏色都達(dá)到最高值到最高值100時(shí)則為深黑色。時(shí)則為深黑色。2 2)CMYKCMYK顏色模型顏色模型 3 3)HSVHSV顏色模型顏色模型 l即色調(diào)即色調(diào)(Hue)、飽和度、飽和度(Saturation)和明度和明度(Value)顏色模型顏色模型l色調(diào)值指明了顏色在色環(huán)中的位置,以色調(diào)值指明了顏色在色環(huán)中的位置,以度度表示。例如,色調(diào)表示。例如,色調(diào)值為值為0的顏色是暗紅色,而色調(diào)值為的顏色是暗紅色,而色調(diào)值為180 的顏色是暗青色的顏色是暗青色l飽和度描述了顏色的飽和度描述了顏色的純度純度。飽和度的取值范圍為。飽和度的
5、取值范圍為0100,因,因此,飽和度為此,飽和度為20意味著中等暗色,而飽和度為意味著中等暗色,而飽和度為100意味著可意味著可能的最純的顏色能的最純的顏色l明度明度(Value)也稱為也稱為亮度亮度,亮度高,色彩明亮,亮度低,色彩,亮度高,色彩明亮,亮度低,色彩暗淡,明度暗淡,明度(Value)的取值范圍為的取值范圍為0100。值為。值為0 表示黑色,表示黑色,但是值為但是值為100不表示白色,它只是表明可能的最亮顏色不表示白色,它只是表明可能的最亮顏色3 3)HSVHSV顏色模型顏色模型 以下是用于以下是用于HSV顏色模型的一些規(guī)則:顏色模型的一些規(guī)則:l如果如果Value = 0,產(chǎn)生的
6、顏色為黑色。,產(chǎn)生的顏色為黑色。l如果如果Saturation = 0,產(chǎn)生的顏色為暗灰色。,產(chǎn)生的顏色為暗灰色。l如果如果Value = 100 且且Saturation = 0,產(chǎn)生的顏色為白色,產(chǎn)生的顏色為白色5 5)GrayGray模型模型l灰度圖像灰度圖像, ,由由8 8位信息組成,并使用位信息組成,并使用256256級的灰色來模級的灰色來模擬顏色層次擬顏色層次l灰度值為灰度值為0 0表示黑色,值為表示黑色,值為255255表示白色表示白色ColorColor對象對象lColor類是一個(gè)抽象類,它包括類是一個(gè)抽象類,它包括5個(gè)顏色子類,分別是:個(gè)顏色子類,分別是: CmykColor
7、類,實(shí)現(xiàn)了類,實(shí)現(xiàn)了ICmykColor接口接口 RgbColor類,實(shí)現(xiàn)了類,實(shí)現(xiàn)了IRgbColor接口接口 HsvColor類,實(shí)現(xiàn)了類,實(shí)現(xiàn)了IHsvColor接口接口 HlsColor類,實(shí)現(xiàn)了類,實(shí)現(xiàn)了IHlsColor接口接口 GrayColor類,實(shí)現(xiàn)了類,實(shí)現(xiàn)了IGrayColor接口接口在在ArcGIS Engine中最常用的是中最常用的是RGB和和HSV這兩種顏色模型。這兩種顏色模型。下面代碼是封裝的獲取下面代碼是封裝的獲取RGBRGB顏色值的方法顏色值的方法 /輸入輸入RGB值,獲得值,獲得IRgbColor型值型值 public IRgbColor GetRgbCol
8、or(int intR, int intG, int intB) IRgbColor pRgbColor = null; if (intR 255 | intG 255 | intB 255) return pRgbColor; pRgbColor = new RgbColorClass(); pRgbColor.Red = intR; pRgbColor.Green = intG; pRgbColor.Blue = intB; return pRgbColor; 下面代碼是封裝的獲取下面代碼是封裝的獲取HSVHSV顏色值的方法顏色值的方法/輸入輸入HSV值,獲得值,獲得IHsvColor型值
9、型值public IHsvColor GetHsvColor(int intH, int intS, int intV) IHsvColor pHsvColor = null; if (intH 360 | intS 100 | intV 100) return pHsvColor; pHsvColor = new HsvColorClass(); pHsvColor.Hue = intH; pHsvColor.Saturation = intS; pHsvColor.Value = intV; return pHsvColor;ColorColor類及其子類類及其子類 ColorRampCo
10、lorRamp類及其子類類及其子類lColorRamp類的對象可以產(chǎn)生顏色帶,這個(gè)類實(shí)現(xiàn)了類的對象可以產(chǎn)生顏色帶,這個(gè)類實(shí)現(xiàn)了IColorRamp接口,它定義了一系列顏色帶的屬性,如接口,它定義了一系列顏色帶的屬性,如 Size(產(chǎn)生多少種顏色產(chǎn)生多少種顏色),Colors(顏色帶顏色帶 IEnumColor)lColorRamp是抽象類,它有是抽象類,它有4個(gè)子類,分別是個(gè)子類,分別是lAlgorithmicColorRamp(起止?jié)u變色)(起止?jié)u變色)lMultiPartColorRamp(疊加漸變色)(疊加漸變色)lRandomColorRamp(隨機(jī)漸變色)(隨機(jī)漸變色)lPreset
11、ColorRamp(預(yù)設(shè)漸變色)(預(yù)設(shè)漸變色)ColorRampColorRamp類及其子類類及其子類ColorRampColorRamp類及其子類類及其子類AlgorithmicColorRamp 用起始顏色、終止顏色確定一個(gè)顏色用起始顏色、終止顏色確定一個(gè)顏色帶帶MultiPartColorRamp 疊加產(chǎn)生顏色帶疊加產(chǎn)生顏色帶RandomColorRamp 隨機(jī)地創(chuàng)建一系列顏色隨機(jī)地創(chuàng)建一系列顏色 PresetColorRamp 預(yù)設(shè)的顏色模式,可存儲(chǔ)預(yù)設(shè)的顏色模式,可存儲(chǔ)13種顏色種顏色 4 4種顏色帶說明種顏色帶說明 AlgorithmicColorRampAlgorithmicCo
12、lorRamp類介紹及代碼示例類介紹及代碼示例 lAlgorithmicColorRamp是通過起止顏色來確定多個(gè)在這是通過起止顏色來確定多個(gè)在這兩個(gè)顏色之間的色帶兩個(gè)顏色之間的色帶lAlgorithmicColorRamp類實(shí)現(xiàn)了兩個(gè)主要的接口:類實(shí)現(xiàn)了兩個(gè)主要的接口: IColorRamp和和IAlgorithmicColorRamp,兩個(gè)接口之間是接,兩個(gè)接口之間是接口繼承關(guān)系,后者包含了前者所有的方法和屬性口繼承關(guān)系,后者包含了前者所有的方法和屬性l IAlgorithmicColorRamp接口的屬性,接口的屬性,F(xiàn)romColor屬性用于屬性用于設(shè)置或返回起始顏色值,設(shè)置或返回起始
13、顏色值,ToColor屬性用于設(shè)置或返回終屬性用于設(shè)置或返回終止顏色值。止顏色值。lIAlgorithmicColorRamp接口的屬性和方法如下:接口的屬性和方法如下:AlgorithmicColorRampAlgorithmicColorRamp代碼示例代碼示例 l代碼示例:代碼示例: public IColorRamp CreateAlgorithmicColorRamp() /創(chuàng)建一個(gè)新創(chuàng)建一個(gè)新AlgorithmicColorRampClass對象對象 IAlgorithmicColorRamp pAlgColorRamp = new AlgorithmicColorRampClas
14、s(); IRgbColor pFromColor = new RgbColorClass(); IRgbColor pToColor = new RgbColorClass(); /創(chuàng)建起始顏色對象創(chuàng)建起始顏色對象 pFromColor.Red = 255; pFromColor.Green = 0; pFromColor.Blue = 0; /創(chuàng)建終止顏色對象創(chuàng)建終止顏色對象 pToColor.Red = 0; pToColor.Green = 255; pToColor.Blue = 0; /設(shè)置設(shè)置AlgorithmicColorRampClass的起止顏色屬性的起止顏色屬性 pAlg
15、ColorRamp.ToColor = pFromColor; pAlgColorRamp.FromColor = pToColor; /設(shè)置梯度類型設(shè)置梯度類型 pAlgColorRamp.Algorithm = esriColorRampAlgorithm.esriCIELabAlgorithm; /設(shè)置顏色帶顏色數(shù)量設(shè)置顏色帶顏色數(shù)量 pAlgColorRamp.Size = 10; /創(chuàng)建顏色帶創(chuàng)建顏色帶 bool bture = true; pAlgColorRamp.CreateRamp(out bture); return pAlgColorRamp; MultiPartColo
16、rRampMultiPartColorRamp類介紹類介紹lMultiPartColorRamp類是由兩個(gè)色帶疊加生成一個(gè)新的色帶。類是由兩個(gè)色帶疊加生成一個(gè)新的色帶。lMultiPartColorRamp類實(shí)現(xiàn)了類實(shí)現(xiàn)了IMultiPartColorRamp接口,其接口,其AddRamp方法用于添加一個(gè)基礎(chǔ)色帶。方法用于添加一個(gè)基礎(chǔ)色帶。該色帶可以在表達(dá)具有該色帶可以在表達(dá)具有零點(diǎn)的現(xiàn)象(如人口增長或溫度)時(shí)使用。零點(diǎn)的現(xiàn)象(如人口增長或溫度)時(shí)使用。RandomColorRampRandomColorRamp類介紹類介紹lRandomColorRamp對象產(chǎn)生隨機(jī)顏色帶,對象產(chǎn)生隨機(jī)顏色帶
17、,RandomColorRamp也需要設(shè)定一個(gè)范圍,這個(gè)范圍也需要設(shè)定一個(gè)范圍,這個(gè)范圍是是HSV顏色模型的,顏色將在這個(gè)范圍內(nèi)隨機(jī)出現(xiàn)顏色模型的,顏色將在這個(gè)范圍內(nèi)隨機(jī)出現(xiàn)lRandomColorRamp類實(shí)現(xiàn)了類實(shí)現(xiàn)了IRandomColorRamp接口接口RandomColorRampRandomColorRamp類介紹類介紹lIRandomColorRamp接口的屬性和方法如下:接口的屬性和方法如下:2.2.地圖的符號化地圖的符號化l在在ArcGIS Engine中,所有地圖數(shù)據(jù)及其修飾要素的顯示中,所有地圖數(shù)據(jù)及其修飾要素的顯示樣式都是由樣式都是由Symbol類控制的。主要分為三大類
18、符號:類控制的。主要分為三大類符號:MarkerSymbol(點(diǎn)符號點(diǎn)符號)、 LineSymbol(線符號線符號)和和FillSymbol(填充符號填充符號)來繪制地理要素的幾何圖形來繪制地理要素的幾何圖形l此外還有兩種特殊類型的符號:一種是此外還有兩種特殊類型的符號:一種是TextSymbol,用,用于文字標(biāo)注;另一種是于文字標(biāo)注;另一種是ChartRender ,用于顯示餅圖、,用于顯示餅圖、條形圖、柱狀圖等表示統(tǒng)計(jì)圖表類型(在專題地圖中詳條形圖、柱狀圖等表示統(tǒng)計(jì)圖表類型(在專題地圖中詳細(xì)講述)。細(xì)講述)。 符號的設(shè)置符號的設(shè)置u1 1) MarkerSymbol MarkerSymbo
19、l類及其子類類及其子類 u2 2) LineSymbol LineSymbol類及其子類類及其子類 u3 3) FillSymbol FillSymbol類及其子類類及其子類u4 4) TextSymbol TextSymbol類類 1) MarkerSymbol1) MarkerSymbol類及其子類類及其子類lMarkerSymbol類是用于修飾點(diǎn)對象的符號,它主要擁類是用于修飾點(diǎn)對象的符號,它主要擁有有5個(gè)子類,不同的子類可以產(chǎn)生不同類型的點(diǎn)符號個(gè)子類,不同的子類可以產(chǎn)生不同類型的點(diǎn)符號l所有的所有的MarkerSymbol子類都實(shí)現(xiàn)了子類都實(shí)現(xiàn)了IMarkerSymbol接接口,這個(gè)接
20、口定義了標(biāo)記符號的公共方法和屬性,如口,這個(gè)接口定義了標(biāo)記符號的公共方法和屬性,如Angle、Color、Size和和XOffset、YOffset等。等。1) MarkerSymbol1) MarkerSymbol類及其子類類及其子類lMarkerSymbol類的五個(gè)主要子類:類的五個(gè)主要子類:pSimpleMarkerSymbolpArrowMarkerSymbolpCharacterMarkerSymbolpPictureMarkerSymbolpMultiLayerMarkerSymbol1)MarkerSymbol1)MarkerSymbol類及其子類類及其子類lSimpleMark
21、erSymbol用與設(shè)置簡單類型的點(diǎn)符號,該類實(shí)現(xiàn)了用與設(shè)置簡單類型的點(diǎn)符號,該類實(shí)現(xiàn)了ISimpleMarkerSymbol接口。其接口。其Style屬性用于設(shè)置點(diǎn)類型的樣屬性用于設(shè)置點(diǎn)類型的樣式,它有五種類型,并存儲(chǔ)在式,它有五種類型,并存儲(chǔ)在esriSimpleMarkerStyle變量中,變量中,分別是圓形、矩形、十字形、分別是圓形、矩形、十字形、X型、菱形。型、菱形。lCharacterMarkerSymbol可以將點(diǎn)要素顯示為字符,該類實(shí)現(xiàn)了可以將點(diǎn)要素顯示為字符,該類實(shí)現(xiàn)了ICharacterMarkerSymbol接口,接口,F(xiàn)ont屬性設(shè)置字體類型,屬性設(shè)置字體類型,Char
22、acterindex屬性用于設(shè)置或返回要顯示的字符。設(shè)置顯示屬性用于設(shè)置或返回要顯示的字符。設(shè)置顯示的字符由的字符由ASCII碼決定。碼決定。1) MarkerSymbol1) MarkerSymbol類及其子類類及其子類l代碼示例:代碼示例:l private void SimpleMaker_Click(object sender, EventArgs e)l l /獲取目標(biāo)圖層獲取目標(biāo)圖層l ILayer pLayer = new FeatureLayerClass();l pLayer = mainMapControl.get_Layer(0);l IGeoFeatureLayer p
23、GeoFeatLyr = pLayer as IGeoFeatureLayer;l /設(shè)置點(diǎn)符號設(shè)置點(diǎn)符號l ISimpleMarkerSymbol pMarkerSymbol = new SimpleMarkerSymbol();l pMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSSquare;/設(shè)置點(diǎn)符號樣式為設(shè)置點(diǎn)符號樣式為方形方形l l IRgbColor pRgbColor = new RgbColor();l pRgbColor = GetRgbColor(225, 100, 100);l pMarkerSymbol.Color
24、 = pRgbColor;/設(shè)置點(diǎn)符號顏色設(shè)置點(diǎn)符號顏色l ISymbol pSymbol = (ISymbol)pMarkerSymbol;l /更改符號樣式更改符號樣式l ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();l pSimpleRenderer.Symbol = pSymbol;l pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;l mainMapControl.Refresh();l mainTOCControl.Update();l簡單
25、符號化的結(jié)果2) LineSymbol2) LineSymbol類及其子類類及其子類 lLineSymbol類是用于修飾線型幾何對象的符號,它主要擁有類是用于修飾線型幾何對象的符號,它主要擁有5個(gè)子類,如個(gè)子類,如SimpleLineSymbol、CartographicLineSymbol、MultiLayerLineSymbol、PictureLineSymbol、HashLineSymbol等,不同的子類可以產(chǎn)生不同類型的線符號等,不同的子類可以產(chǎn)生不同類型的線符號l所有的所有的LineSymbol子類都實(shí)現(xiàn)了子類都實(shí)現(xiàn)了ILineSymbol接口,接口,ILineSymbol定義了兩個(gè)
26、公共屬性:定義了兩個(gè)公共屬性:Color和和Width。2) LineSymbol2) LineSymbol類及其子類類及其子類 lLineSymbol類的五個(gè)主要子類:類的五個(gè)主要子類:pSimpleLineSymbol (預(yù)定義風(fēng)格的線符號)(預(yù)定義風(fēng)格的線符號)pCartographicLineSymbol (制圖線符號)(制圖線符號)pMultiLayerLineSymbol(多符號疊加產(chǎn)生的新線符號)(多符號疊加產(chǎn)生的新線符號)pPictureLineSymbol (圖片線符號)(圖片線符號) pHashLineSymbol (離散線符號)(離散線符號) 2) LineSymbol2
27、) LineSymbol類及其子類類及其子類 l代碼示例:代碼示例:ISimpleLineSymbol pLineSymbol;IRgbColor pRgbColor;pRgbColor = new RgbColorClass();pRgbColor.Red = 255;pLineSymbol = new SimpleLineSymbolClass();/設(shè)置線符號的顏色設(shè)置線符號的顏色pLineSymbol.Color = pRgbColor;/設(shè)置先符號的類型設(shè)置先符號的類型pLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot;
28、/設(shè)置線符號的寬度設(shè)置線符號的寬度pLineSymbol.Width = 1;3) FillSymbol3) FillSymbol類及其子類類及其子類l面要素的符號化通過面要素的符號化通過FillSymbol類來完成,它是一個(gè)類來完成,它是一個(gè)抽象類,有多個(gè)子類。抽象類,有多個(gè)子類。FillSymbol類實(shí)現(xiàn)了類實(shí)現(xiàn)了IFillSymbol接口,這個(gè)接口定義了兩個(gè)屬性:接口,這個(gè)接口定義了兩個(gè)屬性:Color和和OutlinepColor屬性控制填充的顏色屬性控制填充的顏色pOutline屬性設(shè)置填充符號的輪廓線,默認(rèn)情況下,輪廓屬性設(shè)置填充符號的輪廓線,默認(rèn)情況下,輪廓線是一個(gè)實(shí)心的線是一個(gè)
29、實(shí)心的SimpleLineSymbol,但用戶可以使用任何,但用戶可以使用任何類型的線型符號作為輪廓線類型的線型符號作為輪廓線3) FillSymbol3) FillSymbol類及其子類類及其子類lFillSymbol類的子類類的子類:pSimpleFillSymbol (簡單填充符號)(簡單填充符號)pLineFillSymbol (包含線型符號的填充符號)(包含線型符號的填充符號)pMarkerFillSymbol (包含點(diǎn)符號的填充符號)(包含點(diǎn)符號的填充符號) pGradientFillSymbol (漸變填充符號)(漸變填充符號) pPictureFillSymbol (圖片填充符
30、號)(圖片填充符號) pMultiLayerFillSymbol (多符號疊加產(chǎn)生新填充符號)(多符號疊加產(chǎn)生新填充符號) 3) FillSymbol3) FillSymbol類及其子類類及其子類lSimpleFillSymbollSimpleFillSymbol類實(shí)現(xiàn)簡單填充符號,該類實(shí)現(xiàn)了類實(shí)現(xiàn)簡單填充符號,該類實(shí)現(xiàn)了ISimpleFillSymbol接口,其接口,其Style屬性用于設(shè)置或返回填充格式。屬性用于設(shè)置或返回填充格式。SimpleFillSymbol支持支持8種填充類型,存儲(chǔ)在種填充類型,存儲(chǔ)在esriSimpleFillStyle常常量集合中量集合中。3) FillSymb
31、ol3) FillSymbol類及其子類類及其子類 LineFillSymbol 該類實(shí)現(xiàn)了ILineFillSymbol接口。接口的屬性和方法如下圖所示。3) FillSymbol3) FillSymbol類及其子類類及其子類 MarkerFillSymbol 該類主要實(shí)現(xiàn)了該類主要實(shí)現(xiàn)了IMarkerFillSymbol和和IFillProperties這兩個(gè)接口。這兩個(gè)接口。IMarkerFillSymbol接口屬性IFillProperties接口屬性3) FillSymbol3) FillSymbol類及其子類類及其子類 GradientFillSymbol GradientFill
32、Symbol類實(shí)現(xiàn)了用漸變色填充面要素,它實(shí)現(xiàn)了IGradientFillSymbol接口。3) FillSymbol3) FillSymbol類及其子類類及其子類 PictureFillSymbol PictureFillSymbol類實(shí)現(xiàn)了用圖片填充面要素。其CreateFillSymbolFromFile方法用于設(shè)置填充圖片的類型和來源,Outline屬性用于設(shè)置面要素邊線,Angle屬性用于設(shè)置圖片的顯示方向。 MultiLayerFillSymbol 與MultiLayerLineSymbol類似,MultiLayerFillSymbol類實(shí)現(xiàn)了組合符號填充面要素,該類實(shí)現(xiàn)了IMul
33、tiLayerFillSymbol接口。SimpleFillSymbol填充代碼示例填充代碼示例IGeoFeatureLayer pGeoFeatLyr = pLayer as IGeoFeatureLayer;/設(shè)置面填充符號設(shè)置面填充符號 ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass();pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSVertical;/設(shè)置面設(shè)置面填充為垂直線填充填充為垂直線填充pSimpleFillSymbol.Color = G
34、etRgbColor(150, 150, 150);/更改符號樣式更改符號樣式ISimpleRenderer pSimpleRenderer = new SimpleRendererClass();pSimpleRenderer.Symbol = pSimpleFillSymbol as ISymbol;pGeoFeatLyr.Renderer = pSimpleRenderer as IFeatureRenderer;4) 4) 文本符號化文本符號化 lTextSymbol類是用于修飾文字元素的,文字元素在要素標(biāo)注等類是用于修飾文字元素的,文字元素在要素標(biāo)注等方面很有用處方面很有用處lTex
35、tSymbol類最重要的設(shè)置對象是它的字符,它實(shí)現(xiàn)了三個(gè)主類最重要的設(shè)置對象是它的字符,它實(shí)現(xiàn)了三個(gè)主要的接口來設(shè)置字符:要的接口來設(shè)置字符:ITextSymbol、ISimpleTextSymbol 和和 IFormattedTextSymbollITextSymbol接口是定義文本字符樣式的主要接口,被接口是定義文本字符樣式的主要接口,被ISimpleTextSymbol 和和IFormattedTextSymbol 接口繼承。接口繼承。Font屬屬性是產(chǎn)生一個(gè)性是產(chǎn)生一個(gè)TextSymbol符號的關(guān)鍵。使用符號的關(guān)鍵。使用ITextSymbol接口還接口還可以定義可以定義TextSymb
36、ol對象的顏色、角度、水平排列方式、垂直對象的顏色、角度、水平排列方式、垂直排列方式和文本等內(nèi)容排列方式和文本等內(nèi)容文本符號化代碼示例文本符號化代碼示例/設(shè)置文本格式設(shè)置文本格式ITextSymbol pTextSymbol = new TextSymbolClass();StdFont myFont = new stdole.StdFontClass();myFont.Name = 宋體宋體;myFont.Size = 24;pTextSymbol.Font = (IFontDisp)myFont;pTextSymbol.Angle = 0;pTextSymbol.RightToLeft =
37、 false;/文本由左向右排列文本由左向右排列pTextSymbol.VerticalAlignment = esriTextVerticalAlignment.esriTVABaseline;/垂直方向基線對齊垂直方向基線對齊pTextSymbol.HorizontalAlignment = esriTextHorizontalAlignment.esriTHAFull;/文本兩端對齊文本兩端對齊pTextSymbol.Text = TextBox.Text;ITextElement pTextElement = new TextElementClass();pTextElement.Sy
38、mbol = pTextSymbol;pTextElement.Text = pTextSymbol.Text;5 5)符號選擇器)符號選擇器 在ArcGIS中可以使用符號選擇器和樣式管理器來設(shè)置更復(fù)雜和更具有行業(yè)特征的符號???件Name屬性Text屬性其 它SymbologyControlaxSymbologyControlPictureBoxptbPreviewLabellblColor顏色LabellblSize大小LabellblWidth線寬LabellblAngle角度LabellblOutlineColor外框顏色NumericUpDownnudSizeNumericUpDow
39、nnudWidthNumericUpDownnudAngleButtonbtnColorButtonbtnOutlineColorButtonbtnMoreSymbols更多符號ButtonbtnOK確定DialogResult屬性設(shè)為OKButtonbtnCancel取消ColorDialogcolorDialogOpenFileDialogopenFileDialogFilter屬性設(shè)置為:ServerStyle文件 文件|*.ServerStyleContextMenuStripcontextMenuStripMoreSymbol控件名稱及其屬性控件名稱及其屬性符號選擇器代碼示例符號選擇
40、器代碼示例 if (e.button = 1)if(itemType=esriTOCControlItem.esriTOCControlItemLegendClass) /取得圖例取得圖例ILegendClass pLegendClass = (ILegendGroup)unk).get_Class(int)data);/創(chuàng)建符號選擇器創(chuàng)建符號選擇器SymbolSelector實(shí)例實(shí)例SymbolSelectorFrm SymbolSelectorFrm = new SymbolSelectorFrm(pLegendClass, layer);if (SymbolSelectorFrm.Sho
41、wDialog() = DialogResult.OK)/局部更新主局部更新主Map控件控件m_mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);/設(shè)置新的符號設(shè)置新的符號pLegendClass.Symbol = SymbolSelectorFrm.pSymbol;/更新主更新主Map控件和圖層控件控件和圖層控件this.axMapControl1.ActiveView.Refresh();this.axTOCControl1.Refresh();3.3.地圖標(biāo)注地圖標(biāo)注
42、 地圖標(biāo)注是表示制圖對象的名稱、數(shù)量與質(zhì)量特征的文字和數(shù)字等文字語言,用于說明制圖對象的名稱、種類、性質(zhì)和數(shù)量等具體特征,不僅可以彌補(bǔ)地圖符號的不足,豐富地圖的內(nèi)容,而且在某種程度上還可以起到符號的作用。ArcGIS Engine中提供了兩種使用文字信息標(biāo)注地圖要素的方式:標(biāo)注標(biāo)注和注記注記。1)TextElement標(biāo)注 TextElement標(biāo)注類似于ArcGIS中的“標(biāo)注”功能,即將地理實(shí)體的某個(gè)屬性值某個(gè)屬性值添加到地圖上。 實(shí)現(xiàn)思路: 利用IFeatureCursor獲取并遍歷要素; 利用IFeature的get_Value方法獲取并遍歷要素的屬性值,將其以文本形式賦值給ITextE
43、lement的Text屬性; 將文字以Element的形式加入地圖容器中。標(biāo)注代碼示例標(biāo)注代碼示例/產(chǎn)生一個(gè)文本符號產(chǎn)生一個(gè)文本符號ITextSymbol pTextSymbol = new TextSymbolClass();/設(shè)置文本符號的大小設(shè)置文本符號的大小pTextSymbol.Size = 20;pTextSymbol.Font = pFont;pTextSymbol.Color = m_OperateMap.GetRgbColor(255, 0, 0);/產(chǎn)生一個(gè)文本對象產(chǎn)生一個(gè)文本對象ITextElement pTextElement = new TextElementClas
44、s();pTextElement.Text = pFeature.get_Value(index).ToString();pTextElement.ScaleText = true;/標(biāo)注隨著地圖放大縮小而變化標(biāo)注隨著地圖放大縮小而變化pTextElement.Symbol = pTextSymbol;IElement pElement = pTextElement as IElement;pElement.Geometry = pPoint;IActiveView pActiveView = pMap as IActiveView;IGraphicsContainer pGraphicsCo
45、ntainer = pMap as IGraphicsContainer;/添加元素添加元素pGraphicsContainer.AddElement(pElement, 0);2)Annotation注記 在ArcGIS Engine中,注記以更復(fù)雜的方法和屬性對要素圖層進(jìn)行標(biāo)注。實(shí)現(xiàn)Annotation注記涉及到IAnnotateLayerPropertiesCollection、IAnnotateLayerProperties、ILabelEngineLayerProperties等接口。2)Annotation注記 AnnotateLayerPropertiesCollection是一
46、個(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屬性
47、用于設(shè)置或返回標(biāo)注的位置,并有處理標(biāo)注沖突的功能,Symbol屬性用于設(shè)置或返回標(biāo)注字體的格式。注記代碼示例注記代碼示例IGeoFeatureLayer pGeoFeatLyer = pFeatLyr as IGeoFeatureLayer;IAnnotateLayerPropertiesCollection pAnnoProps = pGeoFeatLyer.AnnotationProperties;pAnnoProps.Clear();/設(shè)置標(biāo)注記體格式設(shè)置標(biāo)注記體格式ITextSymbol pTextSymbol = new TextSymbolClass();stdole.StdFon
48、t pFont = new stdole.StdFontClass();pFont.Name = verdana;pFont.Size = 10;pTextSymbol.Font = pFont as stdole.IFontDisp;/設(shè)置注記放置格式設(shè)置注記放置格式ILineLabelPosition pPosition = new LineLabelPositionClass();pPosition.Parallel = false;pPosition.Perpendicular = true;ILineLabelPlacementPriorities pPlacement = new
49、LineLabelPlacementPrioritiesClass();注記代碼示例注記代碼示例IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerPropertiesClass();pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline;pBasic.LineLabelPlacementPriorities = pPlacement;/設(shè)置標(biāo)注文本擺設(shè)置標(biāo)注文本擺設(shè)路徑權(quán)重設(shè)路徑權(quán)重pBasic.LineLabelPosi
50、tion = pPosition;/控制文本的排放位置控制文本的排放位置ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass();pLableEngine.Symbol = pTextSymbol;pLableEngine.BasicOverposterLayerProperties = pBasic;/設(shè)置標(biāo)注設(shè)置標(biāo)注文本的放置方式,以及處理文字間沖突的處理方式等文本的放置方式,以及處理文字間沖突的處理方式等pLableEngine.Expression = + sFieldName +
51、;/輸入輸入VBScript或或JavaScript語言,設(shè)置要標(biāo)注的字段語言,設(shè)置要標(biāo)注的字段IAnnotateLayerProperties pAnnoLayerProps = pLableEngine as IAnnotateLayerProperties;pAnnoProps.Add(pAnnoLayerProps);3)MapTips顯示 MapTips是一種與地圖數(shù)據(jù)交互的訪問方式,即當(dāng)鼠標(biāo)停留在某一要素上時(shí),就可以查看該要素的某一屬性值,具體顯示的哪一個(gè)字段的值,由該圖層的主顯示字段決定。 實(shí)例程序?qū)崿F(xiàn)思路如下:獲取要素圖層;設(shè)置該圖層要顯示的屬性字段;設(shè)置AxMapContro
52、l的ShowMapTips屬性。MapTips代碼示例代碼示例ILayer pLayer = new FeatureLayerClass();pLayer = pFeatLyr;pLayer.ShowTips = true;ILayerFields pLayerFields = (ILayerFields)pFeatLyr;for (int i = 0; i = pLayerFields.FieldCount - 1; i+) IField field = pLayerFields.get_Field(i); if (field.Name = sFieldName) pFeatLyr.Disp
53、layField = field.Name; break; mainMapControl.ShowMapTips = true;二、專題地圖制作 1.單一符號化單一符號化 2.唯一值符號化唯一值符號化 3.唯一值多字段符號唯一值多字段符號化化 4.分級色彩符號化分級色彩符號化 5.分級符號化分級符號化 6.6.比例符號化比例符號化 7.7.點(diǎn)密度符號化點(diǎn)密度符號化 8.8.統(tǒng)計(jì)圖表符號化統(tǒng)計(jì)圖表符號化 9.9.雙值符號化雙值符號化 10.10.多比例尺符號化多比例尺符號化1.單一符號化 單一符號化就是采用大小、形狀和顏色都統(tǒng)一的點(diǎn)狀、線狀或面狀符號來表示某一個(gè)圖層。這種符號設(shè)置方法忽略了要素在
54、數(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)思路
55、如下: (1)獲取渲染字段的屬性值; (2)生成一組與之對應(yīng)的填充樣式,通過IUniqueValueRender接口接口的的AddValue方法方法,使不同的屬性值和填充樣式關(guān)聯(lián); (3)由IGeoFeatureLayer接口的Render方法完成渲染。唯一值單字段符號化代碼示例唯一值單字段符號化代碼示例定義一個(gè)色帶查詢要渲染的字段獲取渲染字段的值并為每個(gè)值附上顏色唯一值單字段符號化代碼示例唯一值單字段符號化代碼示例面線點(diǎn)3.唯一值多字段符號化 唯一值多字段符號化與單字段唯一值符號化的實(shí)現(xiàn)類似,不同之處是需要設(shè)置IUniqueValueRenderer接口的FieldDelimiter屬性,它
56、的作用是將多個(gè)組合字段的屬性值分開。 除此之外,IUniqueValueRenderer接口的AddValue方法的參數(shù)也不同,在唯一值多字段符號化中AddValue需添加的參數(shù)為不同屬性字段的組合值、字段與其對應(yīng)的符號。4.分級色彩符號化 分級色彩符號化是將要素屬性值按照一定的分級方法分成若干級別,再用不同的顏色來表示不同級別。每個(gè)級別表示數(shù)值的一個(gè)范圍,從而可以明確地反映制圖要素的數(shù)量差異。色彩選擇和分級方案是分級色彩表示法中的重要環(huán)節(jié),只有合理的配色方案和科學(xué)的分級方法才能將地理現(xiàn)象的分布規(guī)律體現(xiàn)得清晰明確。這種方法多用于人口密度分布圖、糧食產(chǎn)量分布圖等。分級符號化代碼示例分級符號化代碼
57、示例5.分級符號化 分級符號和分級色彩類似,都是由IClassBreakRenderer接口下的ClassBreakRenderer類實(shí)現(xiàn)。不同的是分級色彩根據(jù)不同的值賦予不同的顏色,而分級符號是根據(jù)不同的值賦予大小不同的符號。6.比例符號化 在ArcGIS Engine中,比例符號是由ProportionalSymbolRenderer類實(shí)現(xiàn),該類實(shí)現(xiàn)了IProportionalSymbolRenderer接口。其Field屬性用于設(shè)置或返回渲染字段,MaxDataValue、MinDataValuel屬性分別用于設(shè)置渲染中的最大值和最小值,一般我們設(shè)為渲染字段的最大值和最小值,MinSym
58、bol屬性用于設(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)
59、的樣式,而DotDensitySymbol由DotDensityFillSymbol類實(shí)現(xiàn);DotValue屬性用來設(shè)置每個(gè)點(diǎn)所代表的值。需要注意的是點(diǎn)密度只能用于面狀要需要注意的是點(diǎn)密度只能用于面狀要素圖層。素圖層。8.統(tǒng)計(jì)圖表符號化 常用的統(tǒng)計(jì)圖表類型有:餅圖、條形圖、柱狀圖、堆疊圖等。在ArcGIS Engine中,它們都是由ChartRenderer類實(shí)現(xiàn)的,該類實(shí)現(xiàn)了IChartRenderer接口。9.雙值符號化 雙值符號化是綜合使用唯一值符號化和分級符號化這兩種符號化方法來渲染地圖,使地圖既能表現(xiàn)出唯一值符號渲染的特征,又能表現(xiàn)出分級渲染的特征。雙值符號化由BiUniqueVal
60、ueRenderer類實(shí)現(xiàn),該類實(shí)現(xiàn)了IBivariateRenderer接口。其MainRenderer屬性用設(shè)置或返回主渲染方法,該方法必須為唯一值渲染;VariationRenderer屬性用于設(shè)置或返回二元渲染,該方法必須是分級渲染。9.雙值符號化實(shí)例程序?qū)崿F(xiàn)思路如下:實(shí)例程序?qū)崿F(xiàn)思路如下:(1)(1)設(shè)置唯一值渲染;設(shè)置唯一值渲染;(2)(2)設(shè)置分級渲染,并分別將其賦值給設(shè)置分級渲染,并分別將其賦值給MainRenderMainRendererer和和VariationRendererVariationRenderer屬性。屬性。10. 多比例尺符號化 在ArcGIS Engine
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省綿陽市梓潼縣2025-2026學(xué)年七年級上學(xué)期1月期末考試生物試卷(含答案)
- 五年級期末考試卷及答案數(shù)學(xué)
- 初中數(shù)學(xué)分類講知識點(diǎn)課件
- 預(yù)防血管導(dǎo)管相關(guān)感染考試試題及答案
- 四年級下冊數(shù)學(xué)期末測試卷及答案【全優(yōu)】
- 人教版初二下冊政治我們的文化、經(jīng)濟(jì)權(quán)利試題及答案
- 東湖事業(yè)單位招聘2022年考試模擬試題及答案解析30
- 2022-2023學(xué)年滬粵版八年級物理上冊第三章光和眼睛同步訓(xùn)練試卷(含答案詳解版)
- 鋼材力學(xué)性能檢測技術(shù)方法
- 道路照明工程技術(shù)方法
- 運(yùn)輸人員教育培訓(xùn)制度
- 升降貨梯買賣安裝與使用說明書合同
- 河南豫能控股股份有限公司及所管企業(yè)2026屆校園招聘127人考試備考題庫及答案解析
- 房地產(chǎn)公司2025年度總結(jié)暨2026戰(zhàn)略規(guī)劃
- 2026浙江寧波市鄞州人民醫(yī)院醫(yī)共體云龍分院編外人員招聘1人筆試參考題庫及答案解析
- (2025年)新疆公開遴選公務(wù)員筆試題及答案解析
- 物業(yè)管家客服培訓(xùn)課件
- 虛假貿(mào)易十不準(zhǔn)培訓(xùn)課件
- 直銷公司旅游獎(jiǎng)勵(lì)方案
- 中央空調(diào)多聯(lián)機(jī)施工安全管理方案
- 2026年當(dāng)兵軍事理論訓(xùn)練測試題及答案解析
評論
0/150
提交評論