第六章 空間數(shù)據(jù)的符號化_第1頁
第六章 空間數(shù)據(jù)的符號化_第2頁
第六章 空間數(shù)據(jù)的符號化_第3頁
第六章 空間數(shù)據(jù)的符號化_第4頁
第六章 空間數(shù)據(jù)的符號化_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

空間數(shù)據(jù)的符號化一、顏色對象模型--Color二、符號對象模型--Symbol三、著色對象模型--Render空間數(shù)據(jù)的符號化

地圖符號是表達(dá)空間數(shù)據(jù)的基本手段,是地圖的語言單位,是可視化表達(dá)地理信息內(nèi)容的基礎(chǔ)工具。它不僅能表示事物的空間位置、形狀、質(zhì)量和數(shù)量特征,而且還可以表示各事物之間的相互聯(lián)系及區(qū)域總體特征。地圖符號由形狀不同、大小不一、色彩有別的圖形和文字組成,它不僅具有確定客觀事物空間位置、分布特點(diǎn)以及質(zhì)量和數(shù)量特征的基本功能,而且還具有相互聯(lián)系和共同表達(dá)地理環(huán)境各要素總體的特殊功能。地圖表現(xiàn)

地圖的符號化決定著地圖數(shù)據(jù)最終以何種“面目”呈現(xiàn)在用戶或者讀者面前,因此,符號化對地圖來說有至關(guān)重要的意義。ArcObjects提供了豐富的符號組件來滿足地圖設(shè)計(jì)中的各種需求。這些組件對象包括Renderer,Color,Symbol三大系列。地圖符號化就是通過多個(gè)組件對象間的合作來完成的。一、顏色對象模型顏色(Color)是現(xiàn)實(shí)世界中最普遍的事物屬性,為了滿足不同行業(yè)的需要人們使用了不同的顏色模型來模擬現(xiàn)實(shí)的顏色。作為一個(gè)程序員可能對于RGB顏色模型更清楚一點(diǎn),只要改變紅色、綠色和藍(lán)色的不同值,就可以調(diào)配出豐富的顏色出來,這些顏色的數(shù)值取值范圍在0到255之間。對于印刷行業(yè)而言,RGB顏色模型是不夠的,它們使用的是CMYK顏色模型。顏色的模型有多種,如RGB顏色模型、CMYK顏色模型(主要要用于印刷中)、HSV顏色模型(由色調(diào)Hue、飽和度Saturation和Value值組成)、GrayColor(灰度顏色)等。一、顏色對象模型RGB模型(發(fā)光模型)可見光譜中的大部分,都可以用各種比例和強(qiáng)度的紅、藍(lán)、綠(RGB)三種色光混合而成。這三種顏色覆蓋時(shí),會(huì)產(chǎn)生青色、洋紅色和黃色。RGB模型的主要屬性也是確定Red,Blue和Green的值,如圖6-1所示。因?yàn)镽ed,Green,Blue值加在一起后會(huì)變成白色,所以RGB三色稱為加色。加色通常用在照明、電視和電腦屏幕。屏幕上的顏色,就是光線射過紅、綠、藍(lán)磷光劑所產(chǎn)生的。紅色、藍(lán)色和綠色的混合會(huì)產(chǎn)生不同的效果,如:1.如果RGB的值相等,則產(chǎn)生的顏色是灰色。2.如果RGB都是255,則產(chǎn)生的顏色是白色。3.如果RGB都是0,那么產(chǎn)生的顏色是黑色。一、顏色對象模型CMYK模型(反光模型)CMYK模型以打印在紙上的油墨的光線吸收特性為基礎(chǔ)。當(dāng)白光照射到半透明油墨上時(shí),某些可見光波長被吸收,而其他波長則被反射回眼睛。理論上,純青色(C)、洋紅色(M)和黃色(Y)色素在合成后可以吸收所有光線并產(chǎn)生黑色。如圖6-2所示。由于打印油墨都包含一些雜質(zhì),因此這三種油墨實(shí)際生成土灰色,它們必須與黑色(K)油墨合成才能生成真正的黑色,為了避免與藍(lán)色混淆,黑色用K而非B表示。這些油墨混合重現(xiàn)顏色的過程稱為四色印刷。一、顏色對象模型Color對象Color對象是一個(gè)抽象類,它有5個(gè)顏色子類,即CMYKColor,RGBCoIor,HSVCoIor,HISCoIor和GrayColor,它們可以使用IColor接口定義的方法設(shè)置顏色對象的基本屬性。對于一種特定的顏色而言,它在不同的顏色模型中的表示方法是不一樣的,因此使用顏色對象時(shí),需要使用IColor的了接口產(chǎn)生的具體對象。一、顏色對象模型顏色對話框除了使用編程的方法得到顏色對象外,用戶也可以使用ArcOjects中的顏色對話框來獲取需要的顏色,而且使用這些可視化對話框更加直觀,畢競用戶很少能夠知道自己需要的顏色的準(zhǔn)確RGB值或CMYK值。顏色板對象Colorpalatte

ColorPalette顏色板對象排列了120種顏色供用戶使用。IColorPalette接口定義了Color屬性和TrackPopupMenu方法,使用這個(gè)接口可以從對話框中獲得一個(gè)顏色對象。一、顏色對象模型ColorRamp顏色帶對象制作地圖專題圖的過程中,需要的顏色常常不只一種,而是隨機(jī)或有序產(chǎn)生的一個(gè)顏色帶。如果某個(gè)著色對象需要100種顏色,程序員肯定不能逐個(gè)產(chǎn)生出來,而是可以使用ArcObjects提供的顏色帶(ColorRamp)對象。ColorRamp類的對象可以產(chǎn)生顏色帶,這個(gè)類實(shí)現(xiàn)了IColorRamp,定義了一系列顏色帶的公共方法,如Size(產(chǎn)生多少種顏色),Colors(顏色帶IEnumColor)。一、顏色對象模型ColorRamp對象AlgorithmicColorRamp顏色帶

AlgorithmicColorRamp是通過起止顏色來確定多個(gè)在這兩個(gè)顏色之間的色帶。下面是產(chǎn)生一個(gè)顏色帶的代碼的函數(shù),需要傳入的參數(shù)是起始顏色、終止顏色和顏色數(shù)量:privateIEnumColors

CreateColorRamp(IColor

fromColor,IColor

toColor,intcount){ //產(chǎn)生一個(gè)AlgorithmicColorRamp對象

IAIgorithmicColorRamp

pRampColor=newAlgorithmicColorRampClass();//設(shè)置起止顏色和顏色數(shù)量

pRampColor.FromColor=fromColor;

pRampColor.ToColor=toColor;

pRampColor.Size=count;bootok=true;pRampColor.CreateRamp(outok);//返回的是個(gè)顏色枚舉類型對象returnpRampColor.Colors;}如果要獲取其中的某個(gè)顏色,可以使用下面的方法:一、顏色對象模型ColorRamp對象IRandomColorRamp顏色帶RandomColorRamp對象供程序員產(chǎn)生隨機(jī)顏色帶,RandomColorRamp也需要設(shè)定一個(gè)范圍,但是這個(gè)范圍是HSV顏色模型的,顏色將在這個(gè)范圍內(nèi)隨機(jī)出現(xiàn)。下面是一個(gè)隨機(jī)顏色帶的代碼段:IEnumColors

pEnumColors;IColor

pColor;IRandomColorRamp

pRandomColor;pRandomColor=newRandomColorRampClass();pRandomColor.StartHue=140;pRandomColor.EndHue=220;pRandomColor.MinValue=35;pRandomColor.MaxValue=102;pRandomColor.MinSaturation=32;pRandomColor.MaxSaturation=245;//產(chǎn)生的隨機(jī)顏色數(shù)目pRandomColor.Size=12;//pEnumColors對象中隨機(jī)數(shù)產(chǎn)生器的隨機(jī)種子pRandomColor.Seed=7;bootok=true;pRandomColor.CreateRamp(outok);pEnumColors=pRandomColor.Colors;pColor=pEnumColors.Next();二、Symbol對象模型地圖需要符號和標(biāo)記來表示地理對象的某些描述性信息。Symbol就是ArcObjects中用于在地圖上修飾要素或者元素對象。使用符號可以讓一個(gè)點(diǎn)對象表現(xiàn)為一個(gè)箭頭或者一個(gè)圓點(diǎn),也可以讓線對象的類型有豐富的變化或讓一個(gè)面對象的填充顏色和樣式豐富多彩。在專題圖的制作中,同樣的道路線要素可以使用的鐵路線和公路線來區(qū)別,符號本身的差異才足以讓用戶了解不同要素之間某種屬性上的差別和聯(lián)系。GIS中的離散實(shí)體分為三種,即點(diǎn)、線和面實(shí)體。ArcObjects使用三種符號來繪制這些要素的兒何圖形,即MarkerSymbol、LineSymbol和FiIISymbol。此外還有兩種特殊的符號:TextSymbol用于文字標(biāo)注;3DChartSymbol用于顯示餅圖等三維對象。二、Symbol對象模型SymbolSelector符號選擇對話框?qū)ο?/p>

ArcMap里面預(yù)存了很多標(biāo)準(zhǔn)符號,使用它可以幫助用戶可視化獲取其中的某個(gè)符號出,如圖所示。其中pSymbol就是從SymboISelector對話框中獲取的。二、Symbol對象模型-MarkerSymbol對象

MarkerSymbol對象是用于修飾點(diǎn)對象的符號,它擁有五個(gè)了類,其中不同的了類可以產(chǎn)生不同類型的點(diǎn)符號,如圖所示。所有的MarkerSymbol類都實(shí)現(xiàn)了IMarkerSymbol接口,這個(gè)接口定義了標(biāo)記符號的公共方法和屬性,如角度、顏色、大小和X、Y偏移量等。二、Symbol對象模型-MarkerSymbol對象SimpIeMarkerSymbol(簡單點(diǎn)符號)

SimpIeMarkerSymbol對象有五種類型的符號,它們表現(xiàn)出來的形狀分別是矩形、圓形、Cross、菱形和‘`X”形等,產(chǎn)生一個(gè)SimpIeMarkerSymbol的方法很簡單。//創(chuàng)建一個(gè)簡單符號ISimpleMarkerSymbol

pMarkerSymbol;pMarkerSymbol=newSimpIeMarkerSymboIClass();//Symbol的樣式,為圓形pMarkerSymboL.Style=esriSimpIeMarkerStyle.esriSMSCircle;//Symbol的顏色pMarkerSymboL.Color=getRGB(60,100,50);//Symbol的旋轉(zhuǎn)角度pMarkerSymboL.Angle=60;//Symbol的大小pMarkerSymboI.Size=6;二、Symbol對象模型-MarkerSymbol對象ArrowMarkerSymbol

箭頭點(diǎn)符號

ArrowMarkerSymbol類的主要接口是IArrowMarkerSymbol,它繼承自IMarkerSymbol接口。IArrowMarkerSymbol的Length屬性表示箭頭的頂點(diǎn)到底邊的距離;Width表示箭頭底邊的寬度;Style表示箭頭符號的樣式。

CharacterMarkerSymbol

字符點(diǎn)符號

CharacterMarkerSymbol類實(shí)現(xiàn)了ICharacterMarkerSymbol接口,這個(gè)接口也繼承自IMarkerSymbol。它可以將一個(gè)點(diǎn)要素顯示為字符狀,而字符的字體來自系統(tǒng)中己經(jīng)安裝的字符集,字符是通過Characterlndex

屬性(系統(tǒng)字符的ASCII碼)來確定,如a的ASCII碼為97。二、Symbol對象模型-MarkerSymbol對象PictureMarkerSymbol

圖片點(diǎn)符號

PictureMarkerSymbol對象在符號的顯示上可以把一個(gè)點(diǎn)對象的外形表示為一張位圖圖片。PictureMarkerSymbol類實(shí)現(xiàn)IPictureMarkerSymbol接口,這個(gè)接口定義了引用位圖的方法。

PictureMarkerSymbol對象將千張圖片設(shè)置為點(diǎn)符號可以有兩個(gè)辦法,一是使用IPictureMarkerSymbol.CreateMarkerSymboIFromFile方法從磁盤上獲取一張位圖,另外一種就是設(shè)置PictureMarkerSymbol對象的Picture屬性,如:PictureMarkerSymbol.picture=images.picture。MuItiLayerMarkerSymbol

多層點(diǎn)符號如果單一的點(diǎn)狀或者箭頭符號、字符符號仍然不能滿足用戶的需要,還可以考慮將多個(gè)符號進(jìn)行疊加的方式,生成全新的組合符號,而這種組合的個(gè)數(shù)是沒有限制的。二、Symbol對象模型-LineSymbol對象

LineSymbol對象是用于修飾線型幾何對象的符號,ILineSymbol作為每一種LineSymbol類都要實(shí)現(xiàn)的接口定義了兩個(gè)公共屬性,即Color和Width。這兩個(gè)屬性為所有的線符號所需要,前者用于設(shè)置線符號的顏色,后者用于設(shè)定線符號對象的寬度。LineSymbol抽象類有四個(gè)子類,分別是SimpIeLineSymbol,CartographicLineSymbol,PictureLineSymbol和MuItiLayerLineSymbol。二、Symbol對象模型-LineSymbol對象

SimpIeLineSymbol

簡單線符號

SimpIeLineSymbol對象的主要屬性是Style,它可以確定線型,SimpIeLineSymbol對象擁有的線類型有7種。//新建一個(gè)SimpIeLineSymbol對象ISimpleLineSymbol

pSimpIeLineSymbol;pSimpIeLineSymbol=newSimpIeLineSymboIClass();//設(shè)置線符號的顏色pSimpIeLineSymboI.Color=getRGB(100,112,103);//設(shè)置線符號的類類型pSimpIeLineSymboL.Style=esriSimpIeLineStyle.esriSLSDot;//設(shè)置線符號的寬度pSimpIeLineSymboL.Width=3;二、Symbol對象模型-LineSymbol對象CartographicLineSymbol制圖線符號

CartographicLineSymbol類實(shí)現(xiàn)了兩個(gè)接口:ICartographicLineSymbol和ILineProperties。

ICartographicLineSymbol接口用于設(shè)置線符號的節(jié)點(diǎn)屬性,如設(shè)置轉(zhuǎn)折處是否圓滑等。

ILineProperties接口用于設(shè)置dash-dot類型的線要素符號屬性。PictureLineSymbol圖片線符號

PictureLineSymbol對象可以將一條線對象通過一張位圖圖片表現(xiàn)出來,當(dāng)系統(tǒng)需要設(shè)置非常特殊的線符號,比如火車線路符號時(shí),可以使用這個(gè)對象來完成。MuItiLayerLineSymbol多圖層線符號

MuItiLayerLineSymbol與MuItiLayerMarkerSymbol一樣,也是可以使用重疊符號的方法生成新的線符號。二、Symbol對象模型-FillSymbol對象FiIISymbol是用來修飾如多邊形等面實(shí)體的符號對象,它實(shí)現(xiàn)了IFiIISymbol,這個(gè)接口定義了兩個(gè)屬性Color和Outline,以滿足所有類型的FiIISymbol對象的公共屬性設(shè)置。(1)IFiIISymboI.Color可以設(shè)置填充符號的基本顏色。(2)IFiIISymbol.OutLine屬性可以設(shè)置填充符號的外邊框,這個(gè)外邊框是一個(gè)線對象,因此使用ILineSymbol對象修飾,在默認(rèn)情況下它是一個(gè)Solid類型的簡單線符號。二、Symbol對象模型-FillSymbol對象

SimpIeFiIISymbol簡單填充符號

SimpIeFiIISymbol是最簡單的填充符號,它繼承自FiIISymbol對象。

SimpIeFiIISymbol類實(shí)現(xiàn)的接口是ISimpIeFiIISymbol,使用它定義的屬性和方法可以設(shè)置一個(gè)簡單填充符號不同的Style屬性,可以選擇不同的簡單填充類型。

Style屬性

為枚舉類型值:STYLE_BACKWARD_DIAGONAL:填充從右上向左下傾斜的線條圖案。STYLE_CROSS:填充相互交叉的水平線和垂直線的圖案.STYLE_DIAGONAL_CROSS:填充交叉對角線的圖案。STYLE_FORWARD_DIAGONAL:填充從左上向右下傾斜的線條的圖案。STYLE_HORIZONTAL:填充水平線的圖案。STYLE_NULL:多邊形沒有填充。STYLE_SOLID:填充不透明背景.STYLE_VERTICAL:填充垂直線的圖案。二、Symbol對象模型-FillSymbol對象//創(chuàng)建簡單填充符號對象

ISimpleFillSymbolpSimpleFillS=NewSimpIeLineSymboIClass();//設(shè)置填充樣式

pSimpleFillS.Style=esriSFSForwardDiagonal;//設(shè)置填充顏色I(xiàn)RgbColorpRgbColor=getRGB(255,0,0);

pSimpleFillS.Color=pRgbColor; //設(shè)置填充邊框ISimpleLineSymbolpSimpIeLineSymbol;pSimpIeLineSymbol=newSimpIeLineSymboIClass();pSimpIeLineSymboI.Color=getRGB(0,255,0);pSimpIeLineSymboL.Style=esriSimpIeLineStyle.esriSLSDot;pSimpIeLineSymboL.Width=3;pSimpleFillS.OutLine=pSimpIeLineSymboL;

二、Symbol對象模型-FillSymbol對象LineFiIISymbol線填充符號

LineFiIISymbol中的填充符號是重復(fù)的線條,它實(shí)現(xiàn)了ILineFiIISymbol接口用于定義它的角度、偏移量和線之間的間隔距離;ILineFiIISymboI.LineSymbol屬性用于設(shè)置線填充符號的線的樣式,線條使用LineSymbol對象設(shè)置;ILineFiIISymboI.Angle屬性獲取或設(shè)置線與水平線的夾角;ILineFiIISymboI.Seperation屬性獲取或設(shè)置線之間的間距;ILineFiIISymboI.Offset屬性獲取或設(shè)置線的偏移量。二、Symbol對象模型-FillSymbol對象

MarkerFiIISymbol點(diǎn)填充符號

MarkerFiIISymbol是使用一個(gè)Marker符號作為背景填充符號。這個(gè)類實(shí)現(xiàn)了IMarkerFiIISymbol接口,用于設(shè)置填充對象的Marker對象的屬性。

IMarkerFiIISymboI.GridAngle屬性用于設(shè)置這些Marker點(diǎn)的角度,

IMarkerFiIISymboI.MarkerSymbol屬性用于設(shè)置這些Marker的類型,它使用一個(gè)IMarkerSymbol對象。二、Symbol對象模型-FillSymbol對象GradientFiIISymbol漸變顏色填充符號

GradientFiIISymbol使用漸變顏色帶進(jìn)行填充,它需要使用到顏色帶對象。這些顏色帶可以是從一側(cè)到另一側(cè),也可以是從中間到四方。GradientFiIISymbol類實(shí)現(xiàn)了IGradientFiIISymbol接口,其中的IGradientFiIISymboI.ColorRamp屬性用于設(shè)置這個(gè)漸變填充符號的顏色帶對象。二、Symbol對象模型-TextSymbol對象PictureFiIISymbol

圖片填充符號

PictureFiIISymbol對象使用圖片來進(jìn)行填充,PictureFiIISymbol類實(shí)現(xiàn)了IIPictureFiIISymbol接口。IPictureFiIISymbol.CreateFiIISymboIFromFile

就用于獲取系統(tǒng)外的圖片,這個(gè)方法輸入的參數(shù)是圖片的類型和路徑。注意PictureFiIISymbol對象能夠使用的圖片類型只有EMF和BMP兩種圖形。MultilayerFiIISymbol

如果需要的話,也可以使用多個(gè)填充符號進(jìn)行疊加以產(chǎn)生新的填充符號對象。這種疊加是一層符號放在另一層符號的上面,因而可能產(chǎn)生覆蓋的情況。

MultilayerFiIISymbol對象實(shí)現(xiàn)的是IMuItilayerFiIISymbol接日,這個(gè)接口定義的方法為了添加、移動(dòng)、刪除和清空構(gòu)成這個(gè)多層填充符號使用的填充符號。使用IMuItilayerFiIISymbol.MoveLayer方法可以移動(dòng)這些符號層,這樣用戶可以顯示不同的效果。二、Symbol對象模型-TextSymbol對象TextSymbol對象是用于修飾文字元素的,文字元素在要素標(biāo)注等方面很有用。使用TextSymbol,經(jīng)常要設(shè)置它的字體,需要使用ITextSymboI.Font屬性來實(shí)現(xiàn),可以設(shè)置字體的大小和是否是粗體、傾斜等屬性: stdole.IFontDisppFont; pFont=newstdole.StdFontClass()asstdole.IFontDisp; pFont.Name="ESRICartography"; //是否為粗體 pFont.Bold=true;//是否為傾斜pFont.ltalic=true;//是否有

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論