• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于MapObjects和DLL的自定義地圖面符號(hào)庫的實(shí)現(xiàn)*

      2012-04-27 07:27:56陳國(guó)良
      全球定位系統(tǒng) 2012年3期
      關(guān)鍵詞:面狀調(diào)用繪制

      劉 金,李 鋼,陳國(guó)良

      (1.中國(guó)礦業(yè)大學(xué) 環(huán)境與測(cè)繪學(xué)院,江蘇 徐州221116;2.徐州市國(guó)土資源局,江蘇 徐州221116)

      0 引 言

      一般來說,地圖符號(hào)的設(shè)計(jì)和實(shí)現(xiàn)方法分為兩種:一是在已有軟件的基礎(chǔ)上利用其二次開發(fā)語言及自身的圖形編輯功能進(jìn)行自定義符號(hào),如ArcInfo,AutoCAD,MapInfo,ArcView以及Corel-Draw等[1-3];二是利用程序語言自己開發(fā)符號(hào)設(shè)計(jì)軟件平臺(tái)實(shí)現(xiàn)符號(hào),目前,最流行的就是OOP和COM技術(shù)等[4-10]。地圖符號(hào)庫主要是針對(duì)計(jì)算機(jī)而不是專門針對(duì)地理信息可視化,而我國(guó)的各種比例尺地圖中的地理信息內(nèi)容十分豐富,要素表述非常詳盡,現(xiàn)無法擴(kuò)展復(fù)雜和特殊的符號(hào)。

      為了克服組件MapObjects自帶缺省符號(hào)的缺乏無法滿足工程的需要,主要研究一種在地理信息工程中可以根據(jù)地圖符號(hào)規(guī)范來制作地圖面符號(hào)庫,具有良好的擴(kuò)充作用,滿足相應(yīng)工程需要,應(yīng)用于實(shí)際工程,同時(shí)對(duì)制作點(diǎn)線符號(hào)庫也有很大的參考價(jià)值。

      1 面符號(hào)庫的設(shè)計(jì)

      面狀符號(hào)是指地圖上用來表示呈面狀分布的物體或地理現(xiàn)象的符號(hào),它在二維圖的各方向上都能按比例表示,如按比例表示的耕地、果園、水域等符號(hào)。

      1.1 面狀符號(hào)的特點(diǎn)

      面狀符號(hào)除了擁有地圖符號(hào)的一般特點(diǎn)外,面狀符號(hào)還有如下特點(diǎn):

      1)面狀符號(hào)一般有一個(gè)封閉輪廓邊界線,這個(gè)邊界線可以是有形的也可以是無形的。

      2)面狀符號(hào)的面積和范圍都是依比例表示的,其大小隨地圖比例尺變化而變化。

      3)為區(qū)別邊界線范圍內(nèi)的對(duì)象,不同的面狀符號(hào)在邊界線范圍內(nèi)填充不同的點(diǎn)符號(hào)、線符號(hào)、位圖或顏色來區(qū)分。

      1.2 面符號(hào)的制作

      面狀符號(hào)實(shí)際上是一種組合符號(hào),一般都是由填充組合而成。一般面狀符號(hào)的填充方式有三種:點(diǎn)狀符號(hào)填充、暈線填充、簡(jiǎn)單填充。

      三種填充方式各有特點(diǎn),通過查閱大量文獻(xiàn)比較和比較各種符號(hào)制作軟件,設(shè)計(jì)出一種比較好的制作方式。在CorelDRAW中設(shè)置版面,按照地形圖圖式規(guī)范進(jìn)行繪制,可以準(zhǔn)確設(shè)置符號(hào)大小和位移間隔。需要注意的是頁面設(shè)置大小能符合循環(huán),圖1示出了用CorelDRAW繪制菜地的實(shí)例。為了在應(yīng)用工程調(diào)用比較好的效果,再輸出bmp格式根據(jù)需要調(diào)整大小。

      圖1 菜地制作與規(guī)范

      位圖繪制比較方便,繪制位圖地圖符號(hào)基本可以滿足點(diǎn)狀地物及復(fù)雜點(diǎn)狀地物。在GIS中,利用位圖表示面狀地物有以下幾個(gè)優(yōu)點(diǎn)[11]:

      1)對(duì)客觀世界中的目標(biāo)地物抽象時(shí)丟失的許多直觀信息可以通過該地物的實(shí)際圖片或象形圖片展示,能直接了解地物信息。

      2)對(duì)空間信息的可視化有重要的幫助,由于位圖的設(shè)計(jì)可以很方便地融合藝術(shù)的手段,這些在矢量圖形編程中有時(shí)并不容易做到。通過位圖提供的豐富的符號(hào),可以通過這種方式應(yīng)用到系統(tǒng)中,增強(qiáng)信息的表達(dá)能力和視覺美觀。

      3)利用位圖符號(hào)可以直接作為專題圖的圖例用,可以直接創(chuàng)建諸如點(diǎn)要素分布的專題地圖。

      2 MapObject中的地圖符號(hào)

      MapObjects是由美國(guó)環(huán)境系統(tǒng)研究所(ESRI)開發(fā)的一組供應(yīng)用開發(fā)人員使用的制圖與GIS功能組件。它由一個(gè)ActiveX控件和一系列可編程OLE(對(duì)象鏈接與嵌入)對(duì)象組成[12]。

      MapObjects的CMoSymbol對(duì)象為用戶提供了有限的缺省的符號(hào)樣(SymbolStyle)。MO默認(rèn)缺省面狀符號(hào)11種,符號(hào)類型和值分別通過Style,SymbolType屬性設(shè)置。這種方式符號(hào)數(shù)目少,樣式單一,不具有專業(yè)領(lǐng)域應(yīng)用前景,不能滿足實(shí)際應(yīng)用系統(tǒng)對(duì)符號(hào)表現(xiàn)多樣化的要求。

      MapObjects雖然本身不帶有豐富的符號(hào)庫,但它能提供自定義符號(hào)的接口函數(shù),使得符號(hào)的設(shè)計(jì)和擴(kuò)展成為可能[13]。提供的接口自定義符號(hào),可以建立一套自己需要的符號(hào)庫系統(tǒng)。使用ICustomMarker用來實(shí)現(xiàn)點(diǎn)狀符號(hào)的接口。對(duì)于MapObjects中實(shí)現(xiàn)自定義符號(hào)繪制的自動(dòng)化對(duì)象,至少要實(shí)現(xiàn)3個(gè)基本函數(shù)[14],分別為

      1)SetupDC:該函數(shù)用來建立繪制符號(hào)的設(shè)備上下文(Device Context)和設(shè)置一些繪制所需要的參數(shù),如符號(hào)大小、旋轉(zhuǎn)角度等。

      2)ReleaseDC:該函數(shù)清除當(dāng)前設(shè)備上下文并恢復(fù)原始的設(shè)備上下文,用來為下一次繪制提供一個(gè)初始設(shè)備上下文。

      3)Draw:這個(gè)函數(shù)是自定義符號(hào)中最重要的一個(gè)函數(shù),它實(shí)現(xiàn)了自定義符號(hào)的繪制。

      通過利用Windows GDI函數(shù),能靈活地繪制各種符號(hào),包括圖元、幾何圖形以及三維實(shí)體,通過這些符號(hào)能非常形象逼真地顯示客觀世界中的對(duì)象。

      3 MapObjects中實(shí)現(xiàn)自定義面符號(hào)

      用CorelDRAW軟件制作好的相應(yīng)比例尺地圖面符號(hào),可以實(shí)現(xiàn)在工程中的調(diào)用,主要流程如圖2所示。

      圖2 自定義面符號(hào)實(shí)現(xiàn)流程

      3.1 ATL開發(fā)自定義面符號(hào)DLL

      ATL是ActiveX Template Library的縮寫,它是一套C++模板庫。MapObjects已經(jīng)提供的自定義接口,利用ATL很容易生成DLL,所以使用ATL是一種簡(jiǎn)單快捷的方法。

      創(chuàng)建自定義面狀符號(hào),選擇接口ICustomFill,以保證能夠執(zhí)行面符接口。三個(gè)基本函數(shù)Setup-DC、ResetDC和Draw,注意面中的points是封閉的點(diǎn)串:

      開發(fā)地理信息工程人員,可能對(duì)于Windows GDI繪制符號(hào)不精通,可以用位圖顯示來顯示復(fù)雜地圖符號(hào),很好地解決符號(hào)編程的困難。為每一個(gè)符號(hào)創(chuàng)建一個(gè)自動(dòng)化對(duì)象是不切實(shí)際的,需將面符號(hào)對(duì)象建成一個(gè)對(duì)象庫,并且具有很好的擴(kuò)展性。

      主要用到加載位圖和多邊形填充方法來實(shí)現(xiàn)面狀符號(hào)的調(diào)用和填充。關(guān)鍵實(shí)現(xiàn)代碼如下:

      編譯生成dll。已經(jīng)生成了一個(gè)自定義面狀狀符號(hào),它放在一個(gè)名CustomFillSymbol.dll的動(dòng)態(tài)庫文件中,并且可以在MapObjects環(huán)境中調(diào)用它。

      對(duì)于將同類面符建成同一符號(hào)庫,可以通過ATL簡(jiǎn)單實(shí)現(xiàn),方法與前面相同,可以繼續(xù)添加如Fill2,F(xiàn)ill3等,使用DLL,可以方便在后臺(tái)維護(hù),也方便對(duì)符號(hào)庫的管理。這樣就建立一個(gè)符號(hào)對(duì)應(yīng)表如表1所示,供用戶需要來選擇。

      表1 DLL中符號(hào)對(duì)應(yīng)表

      3.2 VC工程實(shí)現(xiàn)符號(hào)庫調(diào)用

      在VC++6.0環(huán)境中編寫一個(gè)小的應(yīng)用工程來實(shí)現(xiàn)如何調(diào)用剛才生成的自定義面符號(hào)。

      在應(yīng)用工程中包含下面的語句,主要作用是調(diào)用DLL:

      利用ICustomFillPtr來定義指針了,為了方便用戶的使用,利用對(duì)話框來實(shí)現(xiàn)交互。具體關(guān)鍵實(shí)現(xiàn)代碼:

      在應(yīng)用工程下實(shí)現(xiàn)面狀符號(hào)DLL的調(diào)用(以菜地為例),如圖3所示。

      圖3 菜地符號(hào)調(diào)用效果

      一般MapObjects默認(rèn)是整個(gè)圖層,但是在實(shí)際工程中往往需要對(duì)不用圖層實(shí)現(xiàn)不同的屬性,所以CMoValueMapRenderer對(duì)象的唯一屬性值符號(hào)化地圖。假設(shè)當(dāng)前有一個(gè)土地使用圖層,它是由不同使用方式的土地組成:一些住宅區(qū),一些是公園,一些是工業(yè)區(qū),還有一些是耕地等?,F(xiàn)在要做的工作是,從記錄字段中提取屬性按土地使用圖層進(jìn)行分類分級(jí)顯示,原理與上述一樣,就是用屬性字段的每一個(gè)值顯示一種符號(hào),以Symbol(i)設(shè)置具體的符號(hào)特性。對(duì)MapObjects自帶的“STATES”面圖層中的“AREA”屬性進(jìn)行分級(jí),其中部分屬性用自定義的面符號(hào)來顯示。具體實(shí)現(xiàn)效果如圖4所示。

      圖4 面符號(hào)符號(hào)化效果

      4 結(jié) 論

      主要給出了通過CorelDraw軟件繪制地圖面符號(hào),制作出高精度又可以根據(jù)不同比例尺的地圖符號(hào),同時(shí)很好利用MapObjects提供的面符號(hào)接口,實(shí)現(xiàn)對(duì)符號(hào)庫的制作和擴(kuò)充。

      地圖符號(hào)在GIS中占有非常重要的地位,地圖符號(hào)隨著GIS的發(fā)展而改進(jìn),目前在GIS中對(duì)地圖符號(hào)的研究還屬于初級(jí)階段,有許多地方還不夠完善,未來還有很多的工作需要去進(jìn)一步的研究和解決:

      1)尚未涉及到點(diǎn)線符號(hào)制作和調(diào)用,尚未解決線狀符號(hào)的快速實(shí)現(xiàn),在用到純函數(shù)繪制時(shí),由于知識(shí)受限,無法繪制復(fù)雜線狀符號(hào),通過在CorelDRAW軟件繪制好符號(hào),在系統(tǒng)中加載位圖或者與ARCGIS中的制作線符號(hào)實(shí)現(xiàn),在后期學(xué)習(xí)中應(yīng)進(jìn)一步研究實(shí)現(xiàn)。

      2)地圖符號(hào)庫包括地圖符號(hào)編輯器,利用制作軟件來繪制地圖符號(hào),但不是專門制作GIS地圖符號(hào)的軟件,開發(fā)一個(gè)脫平臺(tái)的地圖符號(hào)編輯器也是后期研究的重點(diǎn)。最好能夠設(shè)計(jì)接口在不同平臺(tái)實(shí)現(xiàn)調(diào)用。

      3)主要研究的是二維的地圖符號(hào),而地圖符號(hào)已經(jīng)開始向多方向發(fā)展:從靜態(tài)符號(hào)到動(dòng)態(tài)符號(hào)發(fā)展;從二維符號(hào)向三維符號(hào)發(fā)展以及多媒體地圖符號(hào)的發(fā)展。

      [1] 姚興海,馬秋云.基于CorelDraw的地圖符號(hào)庫建庫[J].測(cè)繪通報(bào),2003(2):36-38.

      [2] 羅慶洲,張衛(wèi)民,李先華.在常用GIS軟件中實(shí)現(xiàn)自定義地圖符號(hào)[J].測(cè)繪通報(bào),2003(1):44-45.

      [3] 程朋根.GeoStar地圖符號(hào)的實(shí)現(xiàn)方法[J].地礦測(cè)繪,1999(3):3-6.

      [4] 談曉軍,邊馥苓,何忠煥.地圖符號(hào)可視化系統(tǒng)的面向?qū)ο笤O(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)繪通報(bào),2003(1):11-13.

      [5] 楊春成,宋志剛,吳文會(huì).基于OOP技術(shù)的地圖符號(hào)制作工具的設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)繪科學(xué),2002,27(1):50-53.

      [6] 蔡忠亮,李 霖.普通地圖符號(hào)的全開放式設(shè)計(jì)[J].武漢測(cè)繪科技大學(xué)學(xué)報(bào),1999,24(3):259-261.

      [7] 吳立新,劉純波,陳桂茹,等.地圖符號(hào)庫的面向?qū)ο蠹夹g(shù)和引用接口[J].礦山測(cè)量,1999(1):32-35.

      [8] 程朋根,龔健雅,眭海剛.GIS中地圖符號(hào)設(shè)計(jì)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)圖形圖象學(xué)報(bào),2002,5(A)(12):1006-1011.

      [9] FRANK A U,ENGENHOFER M J.Computer cartography for GIS,an object-oriented view on display transformation[J].Computer and Geo-sciences,1992,18(8):975-987.

      [10] 王 偉,張 波,殷贛華.基于COM技術(shù)的地圖符號(hào)庫結(jié)構(gòu)設(shè)計(jì)與實(shí)現(xiàn)[J].武漢大學(xué)學(xué)報(bào)·信息科學(xué)版,2002,27(3):296-300.

      [11] 劉黎明.基于MapObjects的位圖符號(hào)的設(shè)計(jì)與應(yīng)用[OL][2006-07-31].中 國(guó) 科 技 論 文 在 線.http://www.paper.edu.cn.

      [12] 胡慶武.基于MapObject的地圖符號(hào)庫設(shè)計(jì)[J].測(cè)繪通報(bào),2001(10):15-17.

      [13] 趙冬泉,賈海峰,程聲通.基于MapObjects的排水管道流向表達(dá)與編輯[J].測(cè)繪通報(bào),2004(8):36-37,55.

      [14] 戴 維,劉志輝.基于MapObjects的自定義地圖符號(hào)塊的實(shí)現(xiàn)[J].水土保持研究,2008(2),15(1):196-197.

      猜你喜歡
      面狀調(diào)用繪制
      Art on coffee cups
      利用ArcGis實(shí)現(xiàn)森林資源管理“一張圖”線轉(zhuǎn)面的方法探討
      綠色科技(2021年5期)2021-04-08 08:14:00
      核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      顧及遙感影像特征的面狀地物輪廓簡(jiǎn)化
      放學(xué)后
      童話世界(2018年17期)2018-07-30 01:52:02
      一種面狀要素地圖的連續(xù)綜合方法研究
      基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
      在轉(zhuǎn)變中繪制新藍(lán)圖
      基于快照差的面狀地理要素增量信息表達(dá)模型
      莱芜市| 蒲城县| 苍梧县| 济源市| 宁化县| 云梦县| 本溪市| 古蔺县| 吐鲁番市| 米脂县| 保亭| 库尔勒市| 方山县| 绍兴县| 芦溪县| 恩平市| 鄂温| 白沙| 桂阳县| 兰州市| 托克逊县| 通海县| 泸定县| 涟源市| 从江县| 云龙县| 瓦房店市| 辽中县| 红桥区| 邵武市| 卢湾区| 永吉县| 拜城县| 永德县| 临沂市| 临泽县| 巫溪县| 莱州市| 肃南| 会昌县| 昌平区|