張黎娜
(安徽廣播電視大學,合肥 230000)
基于ArcGIS Engine的地圖符號庫管理系統(tǒng)的設計與實現(xiàn)
張黎娜
(安徽廣播電視大學,合肥 230000)
為了滿足采煤沉陷區(qū)三維建模與動態(tài)仿真項目開發(fā)過程中對地圖符號的需要,采用基于ArcGIS Engine的開發(fā)方式,使用C#語言,進行了地圖符號庫管理系統(tǒng)的開發(fā)與設計。應用結果表明,該系統(tǒng)能夠滿足實際項目開發(fā)過程中對地圖符號的應用需要。
ArcGIS Engine;C#語言;地圖符號庫管理系統(tǒng)
在項目實際的開發(fā)過程中,地圖符號的質量要求應該以充實地圖內(nèi)容、增強地圖的可讀性、利于項目實際開發(fā)與研究為首要前提[1-2]。地圖符號的設計和實現(xiàn)對矢量數(shù)據(jù)是否能準確、高效地顯示和描述地理空間中的點、線、面狀地物是至關重要的。ArcMap軟件的地圖符號庫,是地圖可視化的重要信息載體,能直觀地呈現(xiàn)出目標對象的種類、時間、空間、質量等特征信息[3]。但是,在采煤沉陷區(qū)三維建模與動態(tài)仿真項目實際的開發(fā)過程中,常常會應用到一些很特別的礦區(qū)符號,ArcMap軟件中自帶的地圖符號庫很難準確描述和呈現(xiàn)這些地物信息,必須進行手工繪制實現(xiàn)這些信息的表達。為了彌補ArcMap軟件的不足,本研究基于ArcGIS Engine開發(fā)方式、采用C#語言進行地圖符號庫管理系統(tǒng)的建立,以滿足項目開發(fā)過程中對地圖符號的實際需要。
1.1 地圖符號設計方法
GIS是一種基于數(shù)據(jù)庫管理系統(tǒng)的管理空間對象的信息系統(tǒng),具有以地理數(shù)據(jù)為操作對象的空間分析功能。ArcGIS Engine是ArcGIS的一套軟件開發(fā)引擎,可以創(chuàng)建自定義的GIS桌面程序[4]。GIS軟件符號庫中地圖符號設計的方法主要有4種,其操作特點和缺點分析如表1所示。
本研究采用第4種方法,應用Visual studio2005+C#語言開發(fā)環(huán)境、ArcGIS Engine開發(fā)方式進行地圖符號庫管理系統(tǒng)的建立,開發(fā)和設計一些特殊的專題地圖符號,實現(xiàn)地圖符號的制作、顯示、導入、導出、管理等功能。雖然這種方法的設計過程相對復雜、繁瑣、開發(fā)周期長,但是對于制作特殊的礦區(qū)地圖符號卻是非常有效的。
表1 地圖符號設計方法分析
1.2 地圖符號庫的制作
1.2.1 地圖符號庫管理系統(tǒng)體系結構
地圖符號庫管理系統(tǒng)體系結構如圖1所示。系統(tǒng)主要由三大模塊組成:符號制作、符號導入導出、符號庫管理,提供了以下3種功能:一是提供符號添加、刪除、新建功能;二是提供符號的導入、導出等功能;三是對符號庫中符號進行管理和維護。
圖1 地圖符號庫管理系統(tǒng)體系結構
1.2.2 地圖符號庫管理系統(tǒng)的實現(xiàn)
地圖符號庫管理系統(tǒng)由8個類構成。各個類及功能分別如下:
(1)public partial class FormSaveSymbol,主要功能是保存各類符號,保存的符號類型為ServerStyle。
(2)public partial class FormSymbolExport,主要功能是將已經(jīng)制作好的地圖符號導入到指定位置(可以把設計的符號導入到GIS符號庫中進行地圖制作)。
(3)public partial class FormSymbolImport,主要功能是導入外界已有的地圖符號(可以導入GIS符號庫中的點、線、面符號),對于導入的地圖符號可以進行二次編輯,導入的文件類型為ServerStyle。
(4) public partial class UCSymbolMake
{
private DrawTools m_dt//儲存原始畫布大小,用來新建文件時使用;
private Size m_defaultPicSize;
private IStyleGallery m_pStyleGallery//是否改變畫布大??;
private bool m_bResized = false//繪圖樣式;
private string m_sDrawType//打開的文件名;
private string m_fileName//調節(jié)大小可能造成畫板大小超過屏幕區(qū)域,所以事先要設置autoScroll為true。
}
此類的主要功能是針對已存在的地圖符號或是現(xiàn)有的圖片(JPG.Bmp.png等圖片格式)進行編輯。在地圖符號的編輯過程中GDI繪圖的坐標系有3個:屏幕坐標、客戶區(qū)坐標、文檔坐標。實際操作的過程中滾動條的出現(xiàn)增加了符號制作的難度,因為操作過程中滾動條的上下移動改變的是文檔坐標,但是客戶區(qū)坐標不變,而location屬性屬于客戶區(qū)坐標,如果根據(jù)客戶區(qū)坐標直接計算地圖符號位置就會出現(xiàn)錯誤,這就需要知道文檔坐標與客戶區(qū)坐標的偏移量,偏移量可以通過AutoScrollPostion獲得。
(5)public partial class UCSymbolManager,主要功能是負責地圖符號的管理,數(shù)據(jù)庫的屬性表中記錄了地圖符號的“名稱”“Index”“分類”等屬性。
(6)public partial class UCSymbolLibMgr,主要功能是顯示符號庫管理系統(tǒng)主界面。
(7) public class DrawTools
{
public Graphics DrawTools_Graphics//目標畫板;
private Pen p;
private Image orginalImg//原始畫布,用來保存已完成的繪圖過程;
private Color drawColor=Color.Black//繪圖顏色;
private Graphics newgraphics//中間畫板;
private Image finishingImg//中間畫布,用來保存繪圖過程中的痕跡。
}
此類的主要功能是進行地圖符號的手工繪制。根據(jù)提供的基本圖元,繪制出各種所需的地圖符號。在繪圖過程中為避免圖片抖動,防止記錄不必要的繪圖痕跡,需要先在中間畫板上將地圖符號完成,然后再將繪制好的符號一次性畫到目標畫板上。繪圖的步驟為:先實例化中間畫板(在中間畫板上繪制出所需要的地圖符號),畫布為上一次繪制結束時的畫布的副本(如果第一次繪制,那畫布就是初始時的畫布副本),然后按照地圖符號的樣式在中間畫板上進行繪制,接著將繪制結束的符號畫到中間畫布上。因為最終繪制結束時的符號應該是在鼠標松開時完成,所以鼠標移動中所繪制的地圖符號都只能畫到中間畫布上,但仍需要顯示在目標畫板上,否則鼠標移動過程中看不到畫制的效果。當鼠標松開時,才最終把中間畫布上的地圖符號畫到原始畫布上。
(8)class StyleGalleryItemView,此類的主要功能是通過符號庫中的IStyleGalleryItem和IStyleGalleryClass類來生成地圖符號的預覽。
地圖符號庫管理系統(tǒng)部分運行界面如圖2所示(顯示的為制作的部分點符號)。
(a)符號制作的界面
(b)符號管理界面圖2 地圖符號庫管理系統(tǒng)部分運行界面
2.1 地圖符號庫管理系統(tǒng)的優(yōu)點
(1)較強的靈活性。靈活性是利用C#語言開發(fā)GIS系統(tǒng)的最大優(yōu)點,C#語言可以根據(jù)系統(tǒng)的具體要求實現(xiàn)具體的操作功能,在一些GIS系統(tǒng)(特別是小型GIS系統(tǒng))開發(fā)時,具有無可比擬的優(yōu)勢。
(2)易于擴展。地圖符號庫管理系統(tǒng)是一個獨立的模塊,它可以作為獨立的個體單獨運行,也可以嵌入到其他基于ArcGIS Engine開發(fā)方式開發(fā)的系統(tǒng)中運行。系統(tǒng)短小精悍,對軟件和硬件的要求比較低,運行速度快。
2.2 實際項目中的應用
在采煤沉陷區(qū)三維建模與動態(tài)仿真項目的實際開發(fā)過程中,地圖符號庫管理系統(tǒng)很好地滿足了ArcGIS Engine應用系統(tǒng)對符號的應用需要。不僅準確表達了地圖信息,并且充實了礦區(qū)地圖的內(nèi)容、增強了地圖的可讀性。
為了滿足采煤沉陷區(qū)三維建模與動態(tài)仿真項目對地圖符號的需要,開發(fā)了地圖符號庫管理系統(tǒng)。該系統(tǒng)不僅提供了地圖符號的制作功能,而且也集成了符號的管理功能。它可以作為獨立個體單獨運行,也可以嵌入到其他基于ArcGIS Engine方式開發(fā)的系統(tǒng)中運行。應用結果表明,開發(fā)的地圖符號庫管理系統(tǒng)能夠滿足ArcGIS Engine應用系統(tǒng)對地圖符號的應用需要。
[1] 牛芩濤,盛業(yè)華.基于ArcGIS的地圖符號庫的設計與實現(xiàn)[J].四川測繪,2003,26(3):14-116.
[2] 祁華斌.基于ArcMap的地圖符號庫建立與符號化實施[J].測繪通報,2003,26(3):14-17.
[3] 邱洪鋼,張青蓮,陸邵強.ArcGIS Engine開發(fā)從入門到精通[M].北京:人民郵電出版社,2010:7.
[4] 張黎娜,鄒海.基于ArcSDE的地理數(shù)據(jù)入庫和實例開發(fā)[J].計算機技術與發(fā)展,2013,23(12):183-185.
[5] 熊麗華,楊峰.基于ArcSDE的空間數(shù)據(jù)庫技術的應用研究[J].計算機應用,2004,24(3):90-96.
[6] Zhang Degan, Li Guang, Zheng Ke. An energy-balanced routing method based on forward-aware factor for wireless Sensor Network[J]. IEEE Transactions on Industrial Informatics,2014,10(1):766-773.
[7] Zhang Degan, Wang Xiang, Song Xiaodong. A novel approach to mapped correlation of ID for RFID anti-collision[J]. IEEE Transactions on Services Computing,2014,7(4):741-748.
[8] Zhang Degan, Zhu Yannan. A new constructing approach for a weighted topology of wireless sensor networks based on local-world theory for the Internet of Things(IOT)[J]. Computers & Mathematics with Applications,2012,64(5):1044-1055.
(責任編校:李秀榮)
Design and Implementation of the Management System of Map Symbol Library Based on ArcGIS Engine
ZHANG Li-na
(Anhui Radio and TV University, Hefei 230000,China)
The author of this paper has developed a map symbol management system in C # language with ArcGIS Engine to meet the needs for map symbols in three-dimensional modeling of an coal mining subsidence area and dynamic simulation of project development. Application results show that the system can meet the practical needs for map symbols in the process of project development.
ArcGIS Engine; C# language;map symbol management system
TP311;P283.1
A
1672-349X(2015)06-0024-03
10.16160/j.cnki.tsxyxb.2015.06.010