李煥勤,任永奎
(1.鄭州師范學(xué)院 信息技術(shù)系,河南 鄭州 450044; 2.河南省通信工程局有限責(zé)任公司,河南 鄭州 450003)
MapX是MapInfo公司在1996年推出的一個(gè)基于ActiveX(OCX)技術(shù)的可編程控件,它使用與MapInfo Professional一致的地圖數(shù)據(jù)格式,實(shí)現(xiàn)了大多數(shù)MapInfo Professional的功能.MapX的主要功能有顯示MapInfo格式的地圖數(shù)據(jù),支持地圖的放大、縮小、平移、選擇等操作,圖層的自由控制,支持動(dòng)態(tài)圖層、自定義圖層、強(qiáng)大的專題地圖制作和簡(jiǎn)單的地理查詢等[1].MapX是面向?qū)ο蟮牡貓D控件,它將點(diǎn)、線、面等各種圖形信息封裝在不同的類中,每個(gè)類有各自的屬性、事件和方法[2].開發(fā)人員通過(guò)實(shí)例化對(duì)象,調(diào)用封裝好的屬性和方法,對(duì)感興趣的圖形元素進(jìn)行操作.MapX可嵌入到很多主流開發(fā)環(huán)境中,如PowerBuilder、Visual Basic、Delphi、Visual C++等,使用時(shí)只需要將MapX控件放入窗體中,通過(guò)簡(jiǎn)單的編程、設(shè)置屬性、調(diào)用方法和事件,即可實(shí)現(xiàn)地理空間的可視化,完成空間查詢、地理編碼、專題分析等豐富的地圖信息系統(tǒng)功能.因此,MapX作為代表性的GIS組件產(chǎn)品已經(jīng)被廣泛應(yīng)用于GIS應(yīng)用軟件的開發(fā)之中[3].
本系統(tǒng)采用高效數(shù)據(jù)前端開發(fā)工具PowerBuilder 和Sybase數(shù)據(jù)庫(kù)系統(tǒng)開發(fā)完成,既能使房產(chǎn)管理的各種數(shù)據(jù)高效、直觀地顯示,又能夠通過(guò)相關(guān)數(shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn)信息的查詢和統(tǒng)計(jì)功能.在地圖管理上,采用MapInfo Professional為基礎(chǔ)的地理信息系統(tǒng)平臺(tái),利用MapX作為開發(fā)手段,從而實(shí)現(xiàn)全圖形化維護(hù)、管理、查詢檢索功能和圖形對(duì)象與屬性數(shù)據(jù)的雙向聯(lián)動(dòng).
小區(qū)物業(yè)管理GIS信息系統(tǒng)主要用于實(shí)現(xiàn)對(duì)所管轄社區(qū)的房產(chǎn)信息和物業(yè)信息的計(jì)算機(jī)管理,建立房產(chǎn)信息庫(kù),基于電子地圖進(jìn)行直觀、簡(jiǎn)便的數(shù)據(jù)檢索,通過(guò)信息系統(tǒng)準(zhǔn)確、詳盡、實(shí)時(shí)掌握這些房產(chǎn)信息,提升管理手段,提高工作效率,具體包括以下兩個(gè)方面[4].
(1)房產(chǎn)信息管理:實(shí)現(xiàn)以電子地圖形式對(duì)各院、樓、屋等信息的管理,包括對(duì)房屋地圖地理位置的描述與管理;房屋產(chǎn)權(quán)歸屬管理;社區(qū)公共設(shè)施管理等.
(2)物業(yè)管理:實(shí)現(xiàn)對(duì)住戶日常水、電、氣、暖的使用信息進(jìn)行管理,包括水費(fèi)、電費(fèi)、燃?xì)赓M(fèi)、暖氣費(fèi)、物業(yè)費(fèi)的收繳、維護(hù)、管理、統(tǒng)計(jì)等功能.
根據(jù)系統(tǒng)總體目標(biāo)、設(shè)計(jì)原則以及系統(tǒng)所要具備的項(xiàng)目技術(shù)內(nèi)容,結(jié)合MapX二次開發(fā)平臺(tái)的特點(diǎn),將整個(gè)系統(tǒng)分成6大功能模塊,分別是GIS信息管理、房產(chǎn)信息管理、費(fèi)用信息管理、信息查詢、系統(tǒng)維護(hù)和用戶管理,每個(gè)子系統(tǒng)又由若干個(gè)子模塊構(gòu)成.
(1) GIS信息管理
通過(guò)地圖工具,在地圖上如實(shí)地反映小區(qū)所在地圖的地理位置,并在地圖上顯示小區(qū)的樓房分布、社區(qū)公共設(shè)施分布與管道分布.實(shí)現(xiàn)地圖的放大、縮小、漫游、查看、對(duì)象增減與調(diào)整、不同對(duì)象分不同圖層顯示等功能.
(2)房產(chǎn)信息管理
房產(chǎn)信息管理子系統(tǒng)通過(guò)文字列表的方式,詳盡、全面地記錄了系統(tǒng)的屬性信息,能夠?qū)崿F(xiàn)對(duì)房產(chǎn)的基本屬性信息和公共設(shè)施信息進(jìn)行增加、刪除、修改、查詢等操作.
(3)費(fèi)用信息管理
對(duì)涉及小區(qū)各種費(fèi)用的管理,包括費(fèi)用的核算、歸類管理及收繳.
(4)信息查詢管理
依據(jù)用戶權(quán)限,查詢不同范圍的數(shù)據(jù),并能實(shí)現(xiàn)由上至下和由下至上的層次查詢,既可以從院區(qū)信息入手查詢,也可以從業(yè)主信息入手查詢,所有查詢結(jié)果都能導(dǎo)出打印.
(5)系統(tǒng)維護(hù)
為系統(tǒng)管理員提供基本的系統(tǒng)維護(hù)功能,包括系統(tǒng)參數(shù)設(shè)置、數(shù)據(jù)備份及升級(jí).
(6)用戶管理
對(duì)系統(tǒng)的用戶信息進(jìn)行維護(hù)管理,包括部門管理、用戶管理、權(quán)限管理、轄區(qū)設(shè)置及個(gè)人信息設(shè)置等.
系統(tǒng)中的地圖可利用MapX自帶的程序Geoset Manager編輯生成.在編輯過(guò)程中,將地圖按類型分層: 院區(qū)信息、主題建筑、公共設(shè)施和地下管道4個(gè)圖層.每個(gè)圖層的圖元根據(jù)其數(shù)據(jù)形態(tài)又可分為:點(diǎn)數(shù)據(jù)(表示單個(gè)數(shù)據(jù)位置,如車位、井蓋、消防設(shè)施等);線數(shù)據(jù)(覆蓋給定距離的開放對(duì)象,包括道路、上水管線、下水管線、供暖管線、電線路、消防管線、煤氣管線等);面數(shù)據(jù)(覆蓋給定地區(qū)的封閉對(duì)象,包括多邊形、橢圓形以及矩形,例如土地綠化、小區(qū)位置、治安區(qū)劃等).程序中加載地圖文件的實(shí)現(xiàn)代碼如下:
ole_map.object.Geoset = ‘..mapZMAP.gst’
string ls_inipath
ls_inipath = gs_path + ‘comm.ini’
gf_MapX_status(‘get’,ls_inipath,ole_map)
2.2.1 系統(tǒng)視圖功能實(shí)現(xiàn)技術(shù).
本系統(tǒng)的地圖視圖功能包括圖形放大、圖形縮小、圖形漫游與全圖顯示.這些功能的實(shí)現(xiàn)可以利用 MapX 自帶的工具Current(CurrentTool),MapX 給這些工具都賦予了相應(yīng)的一個(gè)長(zhǎng)整型的工具號(hào),系統(tǒng)執(zhí)行操作時(shí)調(diào)用相應(yīng)的工具號(hào)即可.部分功能的具體實(shí)現(xiàn)如下.
(1)圖形放大.既可在圖上單擊實(shí)現(xiàn)以鼠標(biāo)點(diǎn)擊處為中心的雙倍放大,也可拖動(dòng)鼠標(biāo)拉出一矩形框,使得矩形框內(nèi)圖形充滿屏幕顯示,其代碼如下:
OLE_1.object.CurrentTool=1003
OLE_1.object.Layers.Item(1).Selectable=true
(2)地圖縮小.既可在圖上單擊實(shí)現(xiàn)以鼠標(biāo)點(diǎn)擊處為中心的雙倍縮小,也可拖動(dòng)鼠標(biāo)拉出一矩形框,使得矩形框內(nèi)圖形充滿屏幕顯示,其代碼如下:
OLE_1.object.CurrentTool=1004
OLE_1.object.Layers.Item(1).Selectable=true
2.2.2 圖元編輯的實(shí)現(xiàn)技術(shù)
系統(tǒng)提供了對(duì)地圖對(duì)象的編輯功能,通過(guò)繪圖工具,使用者可以在地圖圖層中創(chuàng)建和修改圖元,同時(shí)利用代碼添加相應(yīng)的屬性.MapX提供對(duì)象創(chuàng)建的工具有“添加點(diǎn)”、“添加線條”、“添加折線”、“添加矩形”、“添加圓形”和“添加區(qū)域”,功能實(shí)現(xiàn)的代碼在這里不再贅述.
GIS的一個(gè)重要功能是方便人們查詢所需要的地理信息,查詢類型包括根據(jù)地理實(shí)體查詢它的有關(guān)屬性信息,根據(jù)空間條件查詢一定范圍內(nèi)的地理實(shí)體.系統(tǒng)的空間數(shù)據(jù)查詢包括基于空間關(guān)系特征的查詢、基于屬性特征的查詢以及基于空間和屬性的聯(lián)合查詢.選擇當(dāng)前數(shù)據(jù)集中的任一或多個(gè)對(duì)象,就會(huì)顯示出相應(yīng)的屬性數(shù)據(jù),反之選擇屬性數(shù)據(jù)中的任一條記錄,圖形窗口中相應(yīng)的圖形數(shù)據(jù)就會(huì)高亮界示.在MapX中,圖形數(shù)據(jù)與屬性數(shù)據(jù)是通過(guò)ID碼來(lái)進(jìn)行連接的,通過(guò)ID碼可以實(shí)現(xiàn)從圖到文的查詢,也可以實(shí)現(xiàn)從文到圖的查詢.采用MapX提供的Selection對(duì)象實(shí)現(xiàn)圖數(shù)互查,具體方法是通過(guò)Selection的Item屬性,返回一個(gè)Feature對(duì)象,該對(duì)象的KeyValue屬性表現(xiàn)了選中地圖對(duì)象的關(guān)鍵字,具體實(shí)現(xiàn)代碼如下:
If this.object.currenttool = miselecttool then //當(dāng)前鼠標(biāo)工具為選擇時(shí)
long ll_id,ll_count,ll_layers
string ls_name
ll_layers = This.object.layers.count
DO WHILE ll_layers >= 1
lyr = This.object.Layers.Item(ll_layers).Selection
ll_count = lyr.Count
if ll_count <> 0 then
ls_name = This.Object.Layers.Item[ll_layers].name
ll_id = long(lyr.Item(ll_Count).keyvalue)
wf_openquerywin(ls_name,ll_id)
End if
ll_layers = ll_layers - 1
LOOP
End if
用戶登錄成功后,就進(jìn)入了主界面,如圖1所示.
整個(gè)界面的布局共分3個(gè)部分,左側(cè)是系統(tǒng)菜單欄,用戶可以從這里進(jìn)入系統(tǒng)的所有功能模塊.中間是結(jié)果顯示窗口,右側(cè)是地圖控制工具窗口,有圖層控制工具與地圖操作工具、地圖圖例,通過(guò)這些工具可以對(duì)地圖進(jìn)行操作控制[5].
圖1 系統(tǒng)主界面Fig.1 Interface of system
通過(guò)電子地圖瀏覽方式,能直觀地管理所轄的所有院區(qū)、樓房、公共設(shè)施和地下管道,并能快捷定位院區(qū),不僅能查看院區(qū)的整體概貌,還能層層查看院區(qū)的詳細(xì)信息,如樓房信息、分戶信息、交費(fèi)情況等.系統(tǒng)的圖層控制功能可用顯示(選擇想看到圖層)、選擇(可選擇具體圖層進(jìn)行信息查看)和編輯(可選擇具體的的圖層進(jìn)行編輯)3種方式來(lái)實(shí)現(xiàn).圖2是對(duì)院區(qū)的地下管網(wǎng)進(jìn)行編輯的界面.
圖2 地下管網(wǎng)圖層界面Fig.2 Layer interface of the pipeline net system
本文以省直物業(yè)公司物業(yè)管理系統(tǒng)為例,介紹了利用MapX的軟件開發(fā)方法,實(shí)現(xiàn)了GIS和MIS無(wú)縫結(jié)合.目前,該系統(tǒng)已經(jīng)交付用戶使用,運(yùn)行情況良好.
參考文獻(xiàn):
[1] 于夢(mèng)琦,楊宏業(yè),侯國(guó)成. 組件技術(shù)MapX在車輛監(jiān)控系統(tǒng)中的應(yīng)用[J]. 微計(jì)算機(jī)信息,2008(24):258-259.
[2] 熊燕,柯棟.MapX技術(shù)在列車監(jiān)控管理系統(tǒng)中的應(yīng)用研究[J].長(zhǎng)江大學(xué)學(xué)報(bào):自然科學(xué)版,2009(2):271-272.
[3] 劉光.地理信息系統(tǒng)二次開發(fā)實(shí)例教程[M].北京:清華大學(xué)出版社, 2004:265-269.
[4] 路霞,孫吉貴,李海濤. 基于GIS的物業(yè)管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與研究.2006(12):188-191.
[5] 薛輝. 基于MapX的組件式GIS開發(fā)研究[J].陜西師范大學(xué)學(xué)報(bào),2008(11):42-43.