王海俠
(蚌埠市勘測設(shè)計研究院,安徽蚌埠 233000)
很多測繪單位在生產(chǎn)過程中都積累了大量的CAD資料,這些資料不但數(shù)目比較龐大,而且比較分散,難于查找和更新,隨著時間的積累,會越來越不方便于管理。這些現(xiàn)實需求迫切需要使用信息化的管理方法來管理這些資料。GIS技術(shù)[1]是近年來得到快速發(fā)展的新技術(shù),在許多行業(yè)都得到了大量應用。超圖軟件作為一家專業(yè)從事地理信息開發(fā)的公司,在地理信息產(chǎn)品的開發(fā)方面具有很強的技術(shù)優(yōu)勢,形成了多個GIS開發(fā)平臺,包括組件式GIS開發(fā)平臺、服務式GIS開發(fā)平臺、嵌入式GIS開發(fā)平臺、桌面GIS平臺、導航應用開發(fā)平臺以及相關(guān)的空間數(shù)據(jù)生產(chǎn)、加工和管理工具[2]。Super Objects.NET就是其中應用最為廣泛的一種。本文就是基于SuperMap Objects組件技術(shù),采用3層體系架構(gòu)[3],通過二次開發(fā)來實現(xiàn)蚌埠市征地資料管理系統(tǒng)。
系統(tǒng)采用3層架構(gòu)設(shè)計,從下至上分別為:數(shù)據(jù)訪問層、業(yè)務邏輯層、表示層。
數(shù)據(jù)訪問層(DAL):有時也稱為持久層,其主要功能是負責數(shù)據(jù)庫的訪問,可以訪問數(shù)據(jù)庫系統(tǒng)、二進制文件、文本文檔或XML文檔,具體來說就是實現(xiàn)對數(shù)據(jù)表的增加、刪除、修改、查找等操作。該層為業(yè)務邏輯層或表示層提供數(shù)據(jù)服務。
業(yè)務邏輯層(BLL):針對具體問題的操作,也可以說是對數(shù)據(jù)層的操作,對數(shù)據(jù)業(yè)務進行邏輯處理。業(yè)務邏輯層是3層體系架構(gòu)中的核心部分,它處于數(shù)據(jù)訪問層和表示層之間,在數(shù)據(jù)交換中起到承上啟下的作用。業(yè)務邏輯層的關(guān)注點主要集中在業(yè)務規(guī)則的制定、業(yè)務流程的實現(xiàn)等與業(yè)務需求有關(guān)的系統(tǒng)設(shè)計。業(yè)務邏輯層設(shè)計的好壞直接關(guān)系到軟件的質(zhì)量。
表示層(UI):通俗地講就是展現(xiàn)給用戶的界面,用于顯示數(shù)據(jù)和接收用戶輸入的數(shù)據(jù),為用戶提供一種交互式操作的界面。可以表示成Web方式,也可以表示成Winform方式。
在本系統(tǒng)中,數(shù)據(jù)訪問層是通過將征地圖形數(shù)據(jù)、屬性數(shù)據(jù)轉(zhuǎn)換為SuperMap SDX+支持的空間數(shù)據(jù),在SQL Server 2008中通過調(diào)用SQL語句來實現(xiàn)征地數(shù)據(jù)的增、刪、改、查等操作,為業(yè)務邏輯層的調(diào)用提供或預留接口;業(yè)務邏輯層是對征地數(shù)據(jù)的具體操作,它根據(jù)表示層的業(yè)務需求以及數(shù)據(jù)層的功能數(shù)據(jù)操作接口來實現(xiàn)具體的功能。具體來說就是通過調(diào)用.NET組件、SuperMap Objects組件、數(shù)據(jù)層提供的接口來實現(xiàn)數(shù)據(jù)源管理、地圖操作、數(shù)據(jù)轉(zhuǎn)換操作、數(shù)據(jù)查詢操作、坐標轉(zhuǎn)換操作、空間分析操作,為表示層的具體功能展現(xiàn)提供或預留接口;表示層是根據(jù)業(yè)務邏輯層提供的接口,將征地管理系統(tǒng)實現(xiàn)的功能呈現(xiàn)給用戶的界面。
在3層體系架構(gòu)中,系統(tǒng)主要功能和業(yè)務邏輯都在業(yè)務邏輯層處理。通過3層架構(gòu)設(shè)計將各層的開發(fā)分離開,提高了各層內(nèi)的高類聚和層間的低耦合,大大縮短了系統(tǒng)的開發(fā)周期。同時各層之間的數(shù)據(jù)得到了很好的封裝,降低了層與層之間的依賴,有利于標準化和各層之間的邏輯復用,開發(fā)人員可以集中于某一層進行設(shè)計,極大地提高了工作效率。 本系統(tǒng)的具體系統(tǒng)架構(gòu)如圖1所示:
圖1 系統(tǒng)總體框架設(shè)計
面向?qū)ο蠹夹g(shù)強調(diào)在軟件開發(fā)過程中面向客觀世界或問題域中的事物,采用人類在認識客觀世界的過程中普遍運用的思維方法,直觀、自然地描述客觀世界中的有關(guān)事物。
面向?qū)ο蠹夹g(shù)的基本特征主要有抽象性、封裝性、繼承性和多態(tài)性[4]。
系統(tǒng)采用組件技術(shù)進行二次開發(fā),由于組件技術(shù)本身就具有良好的抽象性、封裝性、繼承性和多態(tài)性,是面向?qū)ο蟮?,因此體現(xiàn)了面向?qū)ο笤O(shè)計的思想。本系統(tǒng)正是運用面向?qū)ο蠹夹g(shù),利用.NET組件、Super-Map組件進行二次開發(fā),對組件或接口再次封裝,開發(fā)出系統(tǒng)需要的功能。
SuperMap Objects組件[5]由若干個 ActiveX控件[6]和數(shù)量眾多的自動化對(Automation Objects)構(gòu)成,因此可以方便地嵌入到流行的可視化高級開發(fā)語言環(huán)境中進行二次開發(fā)。開發(fā)人員可以充分發(fā)揮Visual Basic、Visual C++、Visual Basic.Net、Visual C#.Net和Delphi等高級開發(fā)工具在面向?qū)ο缶幊獭⒖梢暬绦蛟O(shè)計等方面的優(yōu)勢,結(jié)合各種第三方ActiveX控件件,輕松開發(fā)出各種GIS系統(tǒng)。
SuperMap Objects共有12個組件,包括工作空間組件,地圖組件,用于排版輸出地圖的布局組件,用于三維模型分析處理的三維組件,用于數(shù)據(jù)拓撲處理的拓撲組件,用于圖層顯示的圖層組件以及用于圖例顯示、屬性數(shù)據(jù)顯示、加密信息控制的輔助性組件[7]。利用SuperMap Objeccts組件和.NET組件可以快捷的開發(fā)出各種GIS系統(tǒng)。
SuperMap Objects的組件如圖2所示。
圖2 SuperMap Objects組件
SuperMap SDX+[8],是SuperMap GIS平臺中的空間數(shù)據(jù)庫引擎,是SuperMap GIS軟件的重要組成部分,它采用先進的空間數(shù)據(jù)庫存儲技術(shù)、索引技術(shù)和查詢技術(shù),具有“空間-屬性數(shù)據(jù)一體化”、“矢量-柵格數(shù)據(jù)一體化”和“空間信息-業(yè)務信息一體化”的集成式空間數(shù)據(jù)庫管理能力,是GIS大型工程應用的理想選擇。
SuperMap SDX+具有一些幾個特點:
(1)充分結(jié)合數(shù)據(jù)庫技術(shù),全面支持主流商用關(guān)系數(shù)據(jù)庫平臺。SuperMap SDX+可以全面支持目前的主流商用關(guān)系數(shù)據(jù)庫平臺,除了支持全球市場前列的Oracle、Oracle Spatial、SQL Server和DB2外,還支持國產(chǎn)的具有自主知識產(chǎn)權(quán)的達夢多媒體數(shù)據(jù)庫DM和人大金倉數(shù)據(jù)庫Kingbase。SuperMap SDX+對于這些數(shù)據(jù)庫提供全面的支持,為客戶端提供全透明的訪問。
(2)采用混合多級索引技術(shù),實現(xiàn)海量空間數(shù)據(jù)管理能力。SuperMap GIS提出了混合多級索引技術(shù),在數(shù)據(jù)庫引擎中采用了四叉樹索引、R樹索引、動態(tài)索引(或稱多級網(wǎng)格索引)和圖庫索引(原稱三級索引)4種索引,充分發(fā)揮每一種索引的優(yōu)勢,提高數(shù)據(jù)訪問和查詢效率。
(3)全面支持各種空間對象類型。SuperMap SDX +提供了全面的空間對象類型的支持,既支持點、線、面、文本等簡單的空間對象,也支持多點、多線、湖中島、宗地等復合對象以及支持Network(網(wǎng)絡模型)、Route(路由模型)、TIN(三角格網(wǎng)模型)、DEM(數(shù)字高程模型)、GRID(格網(wǎng)數(shù)據(jù))和Image(影像數(shù)據(jù))等復雜數(shù)據(jù)模型。
(4)具備長事務處理能力。SuperMap長事務面向GIS應用的事務處理機制,具有短事務的主要優(yōu)勢,而盡量避免了短事務的局限性。
系統(tǒng)功能設(shè)計包括以下幾個部分:系統(tǒng)登錄界面設(shè)計、數(shù)據(jù)源管理設(shè)計、數(shù)據(jù)處理設(shè)計、數(shù)據(jù)查詢設(shè)計、坐標轉(zhuǎn)換設(shè)計及空間分析設(shè)計。
(1)登錄界面設(shè)計
為了增強系統(tǒng)的安全性,避免非法登陸,需要給系統(tǒng)設(shè)置一定的登錄權(quán)限。通過設(shè)置用戶名和密碼,來確認登陸者的身份是否合法。
(2)數(shù)據(jù)源管理設(shè)計
數(shù)據(jù)源可分為文件型數(shù)據(jù)源和數(shù)據(jù)庫型數(shù)據(jù)源。文件型數(shù)據(jù)源支持只要系統(tǒng)支持,即可直接被系統(tǒng)直接讀取;數(shù)據(jù)庫型數(shù)據(jù)源是在數(shù)據(jù)庫引擎支持下的數(shù)據(jù)源。
(3)數(shù)據(jù)處理模塊設(shè)計
數(shù)據(jù)處理主要是指矢量/柵格數(shù)據(jù)的導入、導出和數(shù)據(jù)轉(zhuǎn)換。支持udb、dwg、shp等矢量格式以及jpg、tif等柵格數(shù)據(jù)數(shù)據(jù)格式的數(shù)據(jù)導入與導出。
(4)查詢設(shè)計
查詢設(shè)計主要是指由地圖查詢地圖數(shù)據(jù)的屬性查詢和根據(jù)條件來查詢地圖的條件查詢。
(5)坐標轉(zhuǎn)換設(shè)計
由于CAD圖情況,因此本系統(tǒng)的坐標轉(zhuǎn)換主要是北京54坐標系和西安80坐標系之間的坐標轉(zhuǎn)換。
(6)空間分析設(shè)計
空間分析設(shè)計主要是指地塊之間的合并設(shè)計、超出或減少范圍的緩沖區(qū)分析、各不同地塊使用類型的統(tǒng)計查詢設(shè)計。
系統(tǒng)總體功能設(shè)計如圖3所示:
圖3 征地資料管理系統(tǒng)總體功能結(jié)構(gòu)設(shè)計
征地資料地籍數(shù)據(jù)庫分為勘測定界數(shù)據(jù)庫和面積計算數(shù)據(jù)庫。其中,勘測定界數(shù)據(jù)庫又包括征地數(shù)據(jù)庫和賠付數(shù)據(jù)庫,面積計算數(shù)據(jù)庫又包括供地數(shù)據(jù)庫、面積測算數(shù)據(jù)庫和宗地數(shù)據(jù)庫。
征地資料各數(shù)據(jù)庫的設(shè)計對于征地資料的分類、查詢和檢索和分析都起著至關(guān)重要的作用。因此系統(tǒng)開發(fā)前必須認真設(shè)計好征地資料各地籍數(shù)據(jù)庫。
通過研究和分析征地資料各地籍數(shù)據(jù)庫的特征和實際應用需求,可以得出以下結(jié)論:
(1)各征地資料地籍數(shù)據(jù)庫都應包含以下字段:國標碼(Code)、Cass碼(CassCode)、資料編號(ZL-BH)、任務書編號(RWSBH)、資料名稱(ZLMC)、電子文件名稱(DZWJMC)、委托單位(WTDW)、委托日期(WTRQ)、勘測日期(KCRQ)、面積(MJ)和備注(BZ)。
(2)不同的字段名根據(jù)需要賦予不同的字段類型。
(3)Cass碼必須唯一,并設(shè)為關(guān)鍵字。
(4)征地資料資料的Cass碼采用名稱加年份的方法進行分類。其中,不同征地資料地籍數(shù)據(jù)庫之間的Cass碼按名稱加以區(qū)分,名稱采用轉(zhuǎn)義編碼;同一征地資料地籍數(shù)據(jù)庫的Cass碼加名稱后按年份進行分類。
(5)各征地資料地籍數(shù)據(jù)庫之間的命名不能出現(xiàn)重名;
根據(jù)對征地資料地籍數(shù)據(jù)庫設(shè)計的分析,將CAD圖中的征地地籍數(shù)據(jù)庫加以分類,將各征地地籍數(shù)據(jù)庫中的不同地塊賦予不同的Cass碼,完成各征地地籍數(shù)據(jù)庫在Cass中的初步分類。然后將這些地籍數(shù)據(jù)庫,通過數(shù)據(jù)庫轉(zhuǎn)換工具加入到SuperMap SDX+空間數(shù)據(jù)庫中,實現(xiàn)對這些征地地籍數(shù)據(jù)庫的操作管理及進一步的查詢分析。
系統(tǒng)開發(fā)所使用的語言為C#。系統(tǒng)框架搭建完成之后,根據(jù)面向?qū)ο蟮乃枷耄?NET組件、Super-Map Objects組件、SuperMap SDX+空間數(shù)據(jù)庫技術(shù),在業(yè)務邏輯層實現(xiàn)對各功能模塊進行二次封裝,為表示層的功能顯示提供功能功能操作和接口,在表示層通過調(diào)用業(yè)務邏輯層的功能操作和接口,實現(xiàn)需要的功能。
通過二次開發(fā)實現(xiàn)了以下功能:實現(xiàn)了SuperMap工作空間的打開、新建和關(guān)閉功能;實現(xiàn)了地圖的放大、縮小、平移、全幅顯示、自由縮放、刷新功能;實現(xiàn)了文件型數(shù)據(jù)源和數(shù)據(jù)庫型數(shù)據(jù)源的打開和新建功能;實現(xiàn)了矢量數(shù)據(jù)和柵格數(shù)據(jù)的導入和導出功能;實現(xiàn)了有地圖查詢地圖屬性的功能。實現(xiàn)了根據(jù)查詢條件(如地塊的Cass碼、資料編號、任務書編號、委托日期、勘測日期、面積等)查詢關(guān)聯(lián)圖形的功能;實現(xiàn)了54坐標和西安80坐標之間的相互轉(zhuǎn)換功能;實現(xiàn)了部分空間分析功能。如緩沖區(qū)分析、疊置分析、統(tǒng)計分析、圖層合并功能。
系統(tǒng)主體界面如圖4所示:
圖4 征地資料管理系統(tǒng)主界面功能實現(xiàn)
本文以Mirosoft Visual Studio.NET為平臺,通過運用面向?qū)ο蠹夹g(shù)、SuperMap Objects組件技術(shù)、Super-Map SDX+空間數(shù)據(jù)庫技術(shù),采用3層體系架構(gòu),實現(xiàn)了蚌埠市征地資料管理系統(tǒng)的開發(fā)與應用。通過二次開發(fā),系統(tǒng)實現(xiàn)了工作空間管理、數(shù)據(jù)源管理、數(shù)據(jù)導入導出、地圖的縮放、屬性查詢、條件查詢、坐標轉(zhuǎn)換、空間分析等功能,使征地資料的管理更加方便快捷,提高了生產(chǎn)效率,有力地促進了單位檔案、資料的信息化建設(shè)。
系統(tǒng)具有具有以下幾個方面的優(yōu)點:
(1)采用3層架構(gòu)體系開發(fā),使系統(tǒng)開發(fā)簡潔明了,并縮短了開發(fā)周期。
(2)采用了面向?qū)ο笤O(shè)計思想,利用SuperMap Objects組件技術(shù),對各功能模塊進行二次封裝,實現(xiàn)了同一模塊的高內(nèi)聚,不同模塊的低耦合,體現(xiàn)了軟件工程設(shè)計的思想。
(3)充分利用SuperMap Objects提供的組件功能,減少了開發(fā)的難度,縮短了開發(fā)的周期。
(4)充分利用SuperMap SDX+空間數(shù)據(jù)庫技術(shù),方便了對征地資料地籍數(shù)據(jù)庫的管理和操作,也有利于程序?qū)φ鞯刭Y料地籍數(shù)據(jù)庫的調(diào)用和分析。
(5)方面了征地資料的管理,有利于實現(xiàn)信息化辦公,同時推動單位信息化建設(shè)。
但是,系統(tǒng)也有以下幾個方面的不足之處:
①只是對征地資料的信息化管理進行開發(fā),沒有對征地系統(tǒng)的整體管理進行設(shè)計開發(fā),使系統(tǒng)功能有限,無法使用戶對征地管理的整體流程有清醒的認識。
②系統(tǒng)沒有實現(xiàn)進一步的網(wǎng)絡化,還沒有真正實現(xiàn)信息化辦公,有待于進一步研究實現(xiàn)。
③系統(tǒng)對征地資料管理系統(tǒng)的知識和認識還有所不足,有待于進一步的學習和加強。
[1] 陳述彭.地理信息系統(tǒng)導論[M].北京:科學出版社,1999:11~13.
[2] 北京超圖地理信息技術(shù)有限公司.SuperMap Objects開發(fā)教程(中級篇)[R].北京:2007:4~6.
[3] 熊斌.基于B/S三層架構(gòu)OA系統(tǒng)的設(shè)計與實現(xiàn)[D].四川:電子科技大學,2011.
[4] Avinash C.Kak.Programming with Objects a Comparative Presentation of Object Oriented Programming with C++and Java[M].New Jersey:John Wiley&Sons,2003:62~73.
[5] 王春嬌,程培峰.基于SuperMap Objects二次開發(fā)的城市道路規(guī)劃設(shè)計管理系統(tǒng)[J].東北林業(yè)大學學報,2008,36(10):80~82.
[6] 宋哲琛.基于組件式GIS技術(shù)的氣象信息系統(tǒng)設(shè)計與開發(fā)[J].浙江水利水電專科學校學報,2010,22(4):47~48.
[7] 楊秋霞.基于組件式GIS_SuperMap Objects的地理信息系統(tǒng)二次開發(fā)[J].哈爾濱師范大學·自然科學學報,2005,21(6):95~97.
[8] 北京超圖地理信息技術(shù)有限公司.SuperMap SDX+技術(shù)白皮書[R].北京:2003:3~9.