亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Style符號庫的存取研究及符號選擇器實現(xiàn)

        2011-11-15 03:30:00樊文鋒葉芳宏
        測繪通報 2011年11期
        關(guān)鍵詞:選擇器序列化字段

        樊文鋒,王 懷,葉芳宏

        (國家測繪地理信息局衛(wèi)星測繪應(yīng)用中心,北京100830)

        基于Style符號庫的存取研究及符號選擇器實現(xiàn)

        樊文鋒,王 懷,葉芳宏

        (國家測繪地理信息局衛(wèi)星測繪應(yīng)用中心,北京100830)

        在ArcGIS Engine的應(yīng)用開發(fā)中,無法直接利用Style符號庫文件。通過對ArcGIS符號庫文件存儲結(jié)構(gòu)的剖析,詳細(xì)分析符號存取的接口方法,并在此基礎(chǔ)上開發(fā)出針對Style符號庫文件的符號選擇器組件,且該組件能夠在ArcGIS Engine的應(yīng)用開發(fā)系統(tǒng)中直接使用。

        符號;序列化;重構(gòu)

        一、引 言

        符號是一種物質(zhì)的對象、屬性或過程,可用它來表示抽象的概念。符號是地圖的語言單位,是可視化表達(dá)地理數(shù)據(jù)信息內(nèi)容的基礎(chǔ)工具。地圖符號是符號應(yīng)用于地圖的一個子類,具有語義、語法和語用規(guī)則[1]。地形信息符號庫是地圖符號的匯集系統(tǒng),它利用計算機(jī)進(jìn)行管理,以實現(xiàn)符號數(shù)據(jù)的存儲、檢索和更新[2]。隨著地理信息系統(tǒng)技術(shù)和理論的發(fā)展及其在各行業(yè)的廣泛應(yīng)用,地理信息符號化表現(xiàn)形式已經(jīng)發(fā)生了巨大的變化,其功能也由認(rèn)知地圖空間為主擴(kuò)展至動態(tài)導(dǎo)航、輔助決策。

        ArcGIS針對地理數(shù)據(jù)的點(diǎn)、線、面要素提供了不同類型的符號,用戶可以選用任意一種類型符號對地理數(shù)據(jù)進(jìn)行符號化顯示。而且ArcGIS符號設(shè)計完全是在ArcGIS桌面環(huán)境ArcMap下實現(xiàn),以Style庫文件存儲。但是基于ArcGIS Engine的應(yīng)用開發(fā)中,采用的是ServerStyle符號文件,無法直接使用ArcGIS桌面環(huán)境下設(shè)計的Style符號文件,只有通過工具M(jìn)akeServerStyle把Style符號庫文件制作成ServerStyle符號庫文件才能供其使用。但在實際應(yīng)用中,很多ArcGIS Engine應(yīng)用開發(fā)都希望能夠在系統(tǒng)中直接使用Style符號庫文件,而不需要通過第三方工具轉(zhuǎn)換。

        筆者通過研究剖析Style符號庫文件的存儲結(jié)構(gòu),編程開發(fā)了利用Style符號庫文件的選擇器組件,使得在ArcGIS Engine應(yīng)用開發(fā)中能夠直接使用Style符號庫文件。本文主要探討Style符號庫文件的存儲結(jié)構(gòu)、符號存儲接口以及符號選擇器的實現(xiàn)。

        二、Style符號庫文件存儲結(jié)構(gòu)

        Style符號庫文件實際上是小型關(guān)系型數(shù)據(jù)庫文件,其文件的擴(kuò)展名為*.style,可以將擴(kuò)展名更改為*.mdb后用微軟的Access軟件打開。

        數(shù)據(jù)庫中的每個表結(jié)構(gòu)都相同,每個表都是由ID、Name、Category、Object 4個字段組成。其中,ID字段是整型數(shù)據(jù)類型,是該表的關(guān)鍵字,保持記錄的唯一性;Name字段是字符串類型,用來命名符號的名稱,在對地理數(shù)據(jù)符號化的過程中,可以將地理數(shù)據(jù)的屬性信息與該字段進(jìn)行自動符號化;Category字段是字符串類型,用來表示符號的分類,可以通過該字段進(jìn)行分類查詢過濾;Object字段是OLE類型,用來存儲符號的信息,該字段包含了符號的CLSID值和符號信息數(shù)據(jù),是通過符號序列化接口序列化后的二進(jìn)制數(shù)據(jù)流。在符號二進(jìn)制數(shù)據(jù)流中,前16字節(jié)是符號對象的CLSID值,是GUID數(shù)據(jù)類型,通過CLSID值可以創(chuàng)建符號對象;余下的數(shù)據(jù)流是符號信息數(shù)據(jù),包含了符號的顏色、大小、寬度、旋轉(zhuǎn)角度等信息,可通過序列化和反序列化實現(xiàn)存儲和讀取。

        數(shù)據(jù)庫中的每一張表對應(yīng)著ArcGIS符號中的一類符號,數(shù)據(jù)庫中存儲ArcGIS基本的點(diǎn)、線、面、文本符號以及其他顏色、比例尺、圖例等符號[3]。

        三、Style符號接口分析

        從ArcGIS的應(yīng)用開發(fā)包中可以看出,實現(xiàn)符號的存儲、顯示以及符號的選擇主要由符號序列化結(jié)構(gòu)、基本的符號接口、符號庫的訪問接口以及符號庫文件等接口組成。以下將描述主要的接口及其實現(xiàn)方法。

        1.序列化接口

        序列化是將對象狀態(tài)轉(zhuǎn)換為可存儲的數(shù)據(jù)流格式的過程。與序列化相對的是反序列化,它將流轉(zhuǎn)換為對象。將這兩個過程結(jié)合起來,可以輕松地存儲和重構(gòu)數(shù)據(jù)。序列化接口主要是實現(xiàn)符號的存儲和重構(gòu),包括 IPersist、IStream、IPersistStream、IBlobStream、IMemoryBlobStream等主要接口。其中,IPersist、IStream、IPersistStream是微軟提供的數(shù)據(jù)流標(biāo)準(zhǔn)接口。IPersist是獲取對象的CLSID值的接口; IStream是對數(shù)據(jù)流進(jìn)行讀取、寫入以及移位等操作的接口;IPersistStream是根據(jù)加載和保存數(shù)據(jù)流的接口。而IBlobStream、IMemoryBlobStream兩個接口主要實現(xiàn)符號對象的存取。其中,IMemoryBlobStream繼承IBlobStream、IStream接口,并在IMemory-BlobStream接口的實現(xiàn)類中全部實現(xiàn)其接口的方法以及屬性,還可實現(xiàn)將符號對象序列化成二進(jìn)制數(shù)據(jù)流存儲和從二進(jìn)制數(shù)據(jù)流中反序列化重構(gòu)符號對象。

        2.基本符號接口

        ArcGIS提供了 ISymbol、IMarkerSymbol、ILine-Symbol、IFillSymbol以及ITextSymbol等基本符號對象接口,根據(jù)這些接口可再衍生出其他豐富的符號接口,如IPictureMarkerSymbol等。其中,ISymbol是符號對象根據(jù)圖形設(shè)備接口進(jìn)行繪制,所有的符號必須繼承該接口;IMarkerSymbol、ILineSymbol、IFill-Symbol和ITextSymbol分別是點(diǎn)、線、面、文本符號的基本接口,且定義了符號的大小、寬度、顏色、旋轉(zhuǎn)角度、字體等信息。其派生的符號對象接口必須繼承基本符號接口,其實現(xiàn)類中必須實現(xiàn)其方法和屬性。同時,IMarkerSymbol、ILineSymbol、IFillSymbol和ITextSymbol派生接口的實現(xiàn)類必須實現(xiàn)IPersist、IPersistStream接口的方法和屬性,以實現(xiàn)符號對象的存取。

        3.符號庫訪問接口

        符號庫的訪問接口主要由IStyleGallery、IStyle-GalleryStorage和數(shù)據(jù)庫訪問ADO接口組成,用于實現(xiàn)符號對象序列化成二進(jìn)制數(shù)據(jù)流存儲到符號庫中,以及從符號庫中取出二進(jìn)制數(shù)據(jù)流重構(gòu)符號對象。IStyleGallery接口是應(yīng)用系統(tǒng)從符號庫中提供符號對象和將符號對象保存到符號庫中的接口; IStyleGalleryStorage接口是管理多個符號庫文件的接口,并能使符號選擇器同時能夠打開多個符號庫文件;ADO接口是對數(shù)據(jù)庫表進(jìn)行插入、查詢、更新操作的接口。

        四、Style符號選擇器實現(xiàn)

        以下將闡述如何對IMemoryBlobStream接口實現(xiàn)在內(nèi)存中進(jìn)行數(shù)據(jù)流操作,如何以點(diǎn)符號對象為例實現(xiàn)符號序列化存儲和反序列化重構(gòu),如何以C#語言編程實現(xiàn)符號選擇器組件。圖1是符號對象序列化重構(gòu)的流程圖。

        圖1 符號序列化重構(gòu)流程圖

        1.IMemoryBlobStream接口實現(xiàn)類

        IMemoryBlobStream接口的實現(xiàn)類中,繼承實現(xiàn)了IStream的方法及屬性。其實現(xiàn)過程如下:

        1)創(chuàng)建內(nèi)存存儲區(qū)域,根據(jù)數(shù)據(jù)的大小動態(tài)調(diào)整內(nèi)存空間的大小。

        2)實現(xiàn)IStream接口的Write、Read、Seek方法,即分別是寫入內(nèi)存、讀取內(nèi)存、內(nèi)存地址移動。

        3)實現(xiàn)ExportToVariant方法,從內(nèi)存數(shù)據(jù)空間導(dǎo)出符號對象序列化得數(shù)據(jù)流,實現(xiàn)符號對象序列化操作。

        4)實現(xiàn)ImportFromMemory方法,加載外部內(nèi)存空間的符號對象的數(shù)據(jù)流,供符號對象使用,實現(xiàn)反序列化操作。

        2.序列化存儲操作

        以簡單點(diǎn)符號為例實現(xiàn)符號對象的序列化存儲,如用簡單點(diǎn)符號的成員變量描述符號的大小、顏色、旋轉(zhuǎn)角度屬性。下面用部分代碼描述序列化過程。

        1)簡單點(diǎn)符號的成員變量

        int m_lColor;

        double m_dAngle;

        double m_dSize;

        2)簡單點(diǎn)符號序列化存儲函數(shù)Save,其中參數(shù)pStream實現(xiàn)了IMemoryBlobStream接口的Write方法向內(nèi)存中寫入數(shù)據(jù)

        Void Save(IStream*pStream)

        3)簡單點(diǎn)符號反序列化重構(gòu)函數(shù)Load,其中,參數(shù) pStream實現(xiàn)了 IMemoryBlobStream接口的Read方法向內(nèi)存中讀取數(shù)據(jù)

        3.IStyleGallery接口實現(xiàn)類

        在IStyleGallery接口實現(xiàn)類中,主要的方法是實現(xiàn)對符號庫文件的加載、符號分類獲取以及符號存儲,下面是實現(xiàn)該接口的主要方法和屬性。

        1)LoadStyle方法,即加載符號庫文件,對多個符號庫文件進(jìn)行管理。

        2)SaveStyle方法,即保存符號至符號庫文件。

        3)AddItem方法,即存儲符號。

        4)Categories屬性,即獲取符號的分類。

        5)Items屬性,即獲取符號對象。

        4.符號選擇器

        符號選擇器為ArcGIS Engine的應(yīng)用開發(fā)提供了一個可視化的符號對象瀏覽工具,應(yīng)用開發(fā)系統(tǒng)可以通過它預(yù)覽符號庫中的符號。符號選擇器可以根據(jù)當(dāng)前要符號化的地理數(shù)據(jù)屬性(點(diǎn)、線、面)從符號庫文件中加載全部的符號,也可以加載指定的類別的符號。在ArcGIS桌面環(huán)境ArcMap下的符號選擇器,能夠?qū)x定的符號作適當(dāng)?shù)木庉嬓薷暮髮Φ乩頂?shù)據(jù)進(jìn)行符號化,同時也能對修改后的符號進(jìn)行保存處理。在本文中實現(xiàn)的符號選擇組件暫時不能夠提供選定符號對象的編輯修改以及保存操作。

        本文描述的符號選擇器組件采用C#語言開發(fā),實現(xiàn)了對Style符號庫文件的符號選取,并應(yīng)用在以ArcGIS Engine開發(fā)的某省級基礎(chǔ)地理信息數(shù)據(jù)庫管理系統(tǒng)中。圖2、圖3是已實現(xiàn)的該符號選擇器組件截圖。

        圖2 多邊形符號選擇

        圖3 線型符號選擇

        五、結(jié)束語

        本文通過對ArcGIS Style符號庫文件存儲結(jié)構(gòu)、符號庫文件讀取結(jié)構(gòu)和各級序列化接口的研究剖析,在Microsoft framework.NET環(huán)境下設(shè)計并開發(fā)了ArcGIS Style符號庫文件的符號選擇器組件。該組件是一個獨(dú)立的模塊,可以獨(dú)立運(yùn)行,也可嵌入到其他基于ArcGIS Engine開發(fā)的應(yīng)用系統(tǒng)中,能夠方便地滿足應(yīng)用系統(tǒng)直接調(diào)用Style符號庫文件的需求,具有較好的開放性和實用價值。

        [1] 劉梅.地圖符號學(xué)在數(shù)字制圖條件下的應(yīng)用[J].現(xiàn)代測繪,2009,32(4):59-61.

        [2] 王哲.ArcGIS軟件平臺上基于基礎(chǔ)地理信息數(shù)據(jù)庫的地圖符號化表達(dá)[J].現(xiàn)代測繪,2008,31(4):39-41.

        [3] 張俊嶺,熊衛(wèi)東,夏斌.基于ArcEngine的地圖符號制作工具研建[J].測繪科學(xué),2007,32(5):86-87.

        Research on Style Symbol Library Access and the Implementation of the Symbol Selector

        FAN Wenfeng,WANG Huai,YE Fanghong

        0494-0911(2011)11-0025-03

        P208

        B

        2011-08-24

        樊文鋒(1970—),男,河北棗強(qiáng)人,工程師,主要從事航空與航天攝影測量、遙感、地理信息系統(tǒng)應(yīng)用開發(fā)工作。

        猜你喜歡
        選擇器序列化字段
        靶通道選擇器研究與優(yōu)化設(shè)計
        圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
        如何建構(gòu)序列化閱讀教學(xué)
        甘肅教育(2020年14期)2020-09-11 07:58:36
        四選一數(shù)據(jù)選擇器74LS153級聯(lián)方法分析與研究
        電腦與電信(2017年6期)2017-08-08 02:04:22
        Java 反序列化漏洞研究
        雙四選一數(shù)據(jù)選擇器74HC153的級聯(lián)分析及研究
        作文訓(xùn)練微格化、序列化初探
        語文知識(2015年12期)2015-02-28 22:02:15
        CNMARC304字段和314字段責(zé)任附注方式解析
        無正題名文獻(xiàn)著錄方法評述
        關(guān)于CNMARC的3--字段改革的必要性與可行性研究
        极品少妇小泬50pthepon| 久久综合激激的五月天| 国产一区二区三区在线观看蜜桃 | 亚洲一区二区三区色偷偷| 国产最新女主播福利在线观看| 亚洲日韩久久综合中文字幕| 永久免费av无码网站yy| 亚洲成在人线电影天堂色| 少妇被搞高潮在线免费观看| 中国男女黄色完整视频| 无码人妻精品一区二区三区蜜桃| 少妇无码av无码一区| 无码视频一区二区三区在线观看| 亚洲熟妇夜夜一区二区三区| 在线看亚洲一区二区三区| 国产午夜在线视频观看| 亚洲成av人片在www| 久久精品人成免费| 国产主播一区二区在线观看| 国产无卡视频在线观看| 黑人巨大精品欧美| 国产顶级熟妇高潮xxxxx| 久久国产热精品波多野结衣av | 最新欧美一级视频| 国产成人av一区二区三| 女色av少妇一区二区三区| 久久久久亚洲av成人网人人网站| 精品一区二区三区在线观看| 女同另类激情在线三区| 国产自拍91精品视频| 国内免费高清在线观看| 欧美激情a∨在线视频播放| 动漫av纯肉无码av在线播放| 熟女少妇av一区二区三区| 又黄又爽又色视频| 白又丰满大屁股bbbbb| 精品国产高清a毛片| 日本女同av在线播放| 久久不见久久见免费视频6| 又粗又硬又黄又爽的免费视频| 亚洲嫩草影院久久精品|