999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Style符號庫的存取研究及符號選擇器實現

2011-11-15 03:30:00樊文鋒葉芳宏
測繪通報 2011年11期
關鍵詞:符號

樊文鋒,王 懷,葉芳宏

(國家測繪地理信息局衛星測繪應用中心,北京100830)

基于Style符號庫的存取研究及符號選擇器實現

樊文鋒,王 懷,葉芳宏

(國家測繪地理信息局衛星測繪應用中心,北京100830)

在ArcGIS Engine的應用開發中,無法直接利用Style符號庫文件。通過對ArcGIS符號庫文件存儲結構的剖析,詳細分析符號存取的接口方法,并在此基礎上開發出針對Style符號庫文件的符號選擇器組件,且該組件能夠在ArcGIS Engine的應用開發系統中直接使用。

符號;序列化;重構

一、引 言

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

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

筆者通過研究剖析Style符號庫文件的存儲結構,編程開發了利用Style符號庫文件的選擇器組件,使得在ArcGIS Engine應用開發中能夠直接使用Style符號庫文件。本文主要探討Style符號庫文件的存儲結構、符號存儲接口以及符號選擇器的實現。

二、Style符號庫文件存儲結構

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

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

數據庫中的每一張表對應著ArcGIS符號中的一類符號,數據庫中存儲ArcGIS基本的點、線、面、文本符號以及其他顏色、比例尺、圖例等符號[3]。

三、Style符號接口分析

從ArcGIS的應用開發包中可以看出,實現符號的存儲、顯示以及符號的選擇主要由符號序列化結構、基本的符號接口、符號庫的訪問接口以及符號庫文件等接口組成。以下將描述主要的接口及其實現方法。

1.序列化接口

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

2.基本符號接口

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

3.符號庫訪問接口

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

四、Style符號選擇器實現

以下將闡述如何對IMemoryBlobStream接口實現在內存中進行數據流操作,如何以點符號對象為例實現符號序列化存儲和反序列化重構,如何以C#語言編程實現符號選擇器組件。圖1是符號對象序列化重構的流程圖。

圖1 符號序列化重構流程圖

1.IMemoryBlobStream接口實現類

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

1)創建內存存儲區域,根據數據的大小動態調整內存空間的大小。

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

3)實現ExportToVariant方法,從內存數據空間導出符號對象序列化得數據流,實現符號對象序列化操作。

4)實現ImportFromMemory方法,加載外部內存空間的符號對象的數據流,供符號對象使用,實現反序列化操作。

2.序列化存儲操作

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

1)簡單點符號的成員變量

int m_lColor;

double m_dAngle;

double m_dSize;

2)簡單點符號序列化存儲函數Save,其中參數pStream實現了IMemoryBlobStream接口的Write方法向內存中寫入數據

Void Save(IStream*pStream)

3)簡單點符號反序列化重構函數Load,其中,參數 pStream實現了 IMemoryBlobStream接口的Read方法向內存中讀取數據

3.IStyleGallery接口實現類

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

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

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

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

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

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

4.符號選擇器

符號選擇器為ArcGIS Engine的應用開發提供了一個可視化的符號對象瀏覽工具,應用開發系統可以通過它預覽符號庫中的符號。符號選擇器可以根據當前要符號化的地理數據屬性(點、線、面)從符號庫文件中加載全部的符號,也可以加載指定的類別的符號。在ArcGIS桌面環境ArcMap下的符號選擇器,能夠對選定的符號作適當的編輯修改后對地理數據進行符號化,同時也能對修改后的符號進行保存處理。在本文中實現的符號選擇組件暫時不能夠提供選定符號對象的編輯修改以及保存操作。

本文描述的符號選擇器組件采用C#語言開發,實現了對Style符號庫文件的符號選取,并應用在以ArcGIS Engine開發的某省級基礎地理信息數據庫管理系統中。圖2、圖3是已實現的該符號選擇器組件截圖。

圖2 多邊形符號選擇

圖3 線型符號選擇

五、結束語

本文通過對ArcGIS Style符號庫文件存儲結構、符號庫文件讀取結構和各級序列化接口的研究剖析,在Microsoft framework.NET環境下設計并開發了ArcGIS Style符號庫文件的符號選擇器組件。該組件是一個獨立的模塊,可以獨立運行,也可嵌入到其他基于ArcGIS Engine開發的應用系統中,能夠方便地滿足應用系統直接調用Style符號庫文件的需求,具有較好的開放性和實用價值。

[1] 劉梅.地圖符號學在數字制圖條件下的應用[J].現代測繪,2009,32(4):59-61.

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

[3] 張俊嶺,熊衛東,夏斌.基于ArcEngine的地圖符號制作工具研建[J].測繪科學,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—),男,河北棗強人,工程師,主要從事航空與航天攝影測量、遙感、地理信息系統應用開發工作。

猜你喜歡
符號
幸運符號
符號神通廣大
學符號,比多少
幼兒園(2021年6期)2021-07-28 07:42:14
“+”“-”符號的由來
靈魂的符號
散文詩(2017年17期)2018-01-31 02:34:20
怎樣填運算符號
變符號
倍圖的全符號點控制數
圖的有效符號邊控制數
草繩和奇怪的符號
主站蜘蛛池模板: 1024国产在线| yjizz视频最新网站在线| 亚洲三级a| 久久精品女人天堂aaa| 女人18毛片久久| 精品日韩亚洲欧美高清a| 亚洲男人的天堂在线| 欧美第一页在线| 国产一在线观看| 欧美翘臀一区二区三区| 日本精品视频一区二区 | 中文字幕1区2区| 免费 国产 无码久久久| 久久人与动人物A级毛片| 青青草原国产| 最新国产精品鲁鲁免费视频| 高清无码手机在线观看| 国产女人喷水视频| 亚洲成a人片在线观看88| 亚洲精品视频免费观看| 思思热精品在线8| 狠狠干综合| 夜夜高潮夜夜爽国产伦精品| 狠狠色成人综合首页| 久久中文字幕不卡一二区| 国产玖玖视频| 国产免费福利网站| 国产日韩欧美在线视频免费观看| 色综合综合网| 国产午夜福利亚洲第一| 日韩av资源在线| 国产精品人莉莉成在线播放| 日韩二区三区| 久久精品亚洲中文字幕乱码| 波多野结衣视频一区二区| 中文成人在线| 青草视频久久| 亚洲欧美日韩成人高清在线一区| 久久精品人人做人人爽97| 国产91透明丝袜美腿在线| 久久综合一个色综合网| 精品无码人妻一区二区| 香蕉99国内自产自拍视频| 亚洲视频影院| 男人天堂伊人网| hezyo加勒比一区二区三区| 国产精品欧美激情| 国产综合色在线视频播放线视| 欧美视频在线不卡| h网址在线观看| 日韩精品无码免费一区二区三区| 亚洲无码精彩视频在线观看| 亚洲美女久久| 免费啪啪网址| 久久久久久午夜精品| 免费国产无遮挡又黄又爽| 国产香蕉一区二区在线网站| 亚洲欧美色中文字幕| 亚洲高清资源| 97亚洲色综久久精品| 三区在线视频| 亚洲欧洲日韩国产综合在线二区| 国产对白刺激真实精品91| 久久综合九色综合97婷婷| 日韩国产高清无码| 国产在线麻豆波多野结衣| 日韩毛片在线播放| 在线观看精品自拍视频| 亚洲天堂2014| 成人在线亚洲| 亚洲国产日韩欧美在线| 国产亚洲成AⅤ人片在线观看| 精品一区二区无码av| 香蕉久人久人青草青草| 99精品在线看| 国产成人免费高清AⅤ| 四虎永久在线精品影院| 久久久四虎成人永久免费网站| 亚洲第一视频免费在线| 国产午夜无码片在线观看网站 | 精品欧美一区二区三区久久久| 99精品热视频这里只有精品7 |