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