基于MapX的房地產(chǎn)專題信息管理_第1頁
基于MapX的房地產(chǎn)專題信息管理_第2頁
基于MapX的房地產(chǎn)專題信息管理_第3頁
基于MapX的房地產(chǎn)專題信息管理_第4頁
基于MapX的房地產(chǎn)專題信息管理_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

緒論1.1選題的背景及意義隨著國民經(jīng)濟的迅猛發(fā)展,我國房地產(chǎn)市場也變得充分開放與活躍。正是由于這種開放與活躍使得房地產(chǎn)信息變化與更新變得更加頻繁。同時為了適應與發(fā)展現(xiàn)代化信息管理,對房地產(chǎn)管理部門提出了更高的標準。近年來,在GIS組件技術(shù)的支持下,房地產(chǎn)管理部門已經(jīng)著手建設(shè)以房地產(chǎn)為專題的信息管理系統(tǒng),以加快房地產(chǎn)管理的信息化、可視化步伐,改變傳統(tǒng)的房地產(chǎn)管理模式[1]。傳統(tǒng)的管理方法是借助MIS信息系統(tǒng)來實現(xiàn)房地產(chǎn)專題信息管理,但是這種方法只能對一些簡單的屬性信息進行管理,無法實現(xiàn)房地產(chǎn)中的空間信息的管理以及空間信息與屬性信息的結(jié)合。伴隨著MapInfo技術(shù)的迅猛發(fā)展以及MapX組件技術(shù)的成熟,為解決上述問題提供了有效、可行的技術(shù)方法。MapX組件技術(shù)能夠?qū)崿F(xiàn)各種專題信息與實際的地理位置的結(jié)合,并借助計算機成圖和數(shù)據(jù)庫技術(shù)來實現(xiàn)信息的采集與存儲以及信息的編輯與顯示。MapX組件技術(shù)不僅僅能夠?qū)臻g數(shù)據(jù)進行相應的管理而且還能夠?qū)碗s而又繁多的屬性數(shù)據(jù)進行高效、便捷的的處理。這種通過對空間信息(圖形信息)與非空間信息(屬性信息)的共同管理來克服傳統(tǒng)管理方法的局限性,為房地產(chǎn)管理部門提供相應的信息分析和應用服務,也為規(guī)劃決策提供全面而又全新的輔助信息。為此,將MapX組件嵌入可視化工具中進行開發(fā)將會使有關(guān)房地產(chǎn)專題信息管理系統(tǒng)功能更加強大和完善。在基于MapX的房地產(chǎn)專題信息管理中主要是利用MapX組件為房地產(chǎn)管理部門開發(fā)相應的房地產(chǎn)專題信息管理系統(tǒng),以便能夠準確、高效地查詢各類用房用地的空間位置以及統(tǒng)計各類用房的占地面積、樓層數(shù)、房間數(shù)、房產(chǎn)價值等非空間數(shù)據(jù)信息,實現(xiàn)信息的可視化效果。1.2國內(nèi)相關(guān)技術(shù)的研究現(xiàn)狀對于MapX本身而言,它定義了一個類體系,以一種高效的方式來組織各實體的圖形數(shù)據(jù)、各圖層協(xié)調(diào)關(guān)系、各實體的屬性數(shù)據(jù)等對象。同時對于MapX編程而言,開發(fā)者可以根據(jù)自身所熟悉的任何可視化編程語言進行開發(fā)而不需要有任何MapBasic知識,對于大多數(shù)功能的實現(xiàn)可以直接通過設(shè)置MapX控件屬性來實現(xiàn)。隨著MapX組件技術(shù)的成熟,這種簡易、便捷、高效的方式使其備受青睞。就房地產(chǎn)行業(yè)而言,人們對房屋的需求量逐漸增大,隨之房屋建設(shè)也猛然增加。在面對繁多的房地產(chǎn)信息,各相關(guān)部門也以各種方式建立自己的房地產(chǎn)信息管理系統(tǒng)來實現(xiàn)對房地產(chǎn)專題信息的規(guī)范管理,從而減少了管理方面的工作量,也讓管理工作變得更加高效。但是獨立的信息管理系統(tǒng)具有其局限性,這種局限性主要表現(xiàn)是不能夠把空間幾何信息與屬性信息結(jié)合起來以便實現(xiàn)圖、文并茂,將一些信息直觀、清晰的表現(xiàn)出來。綜述所述,無論是從MapX組件技術(shù)方面還是在房地產(chǎn)本身需求方面,基于MapX組件來實現(xiàn)房地產(chǎn)專題信息管理具有一定的可行性、經(jīng)濟性、實用性。目前國內(nèi)已經(jīng)有很多這樣的實例來證明,例如2002年福州市海洋與水產(chǎn)局基于MapX實現(xiàn)了海洋功能區(qū)劃管理信息系統(tǒng)、2007年蘭州大學基于MapX設(shè)計并實現(xiàn)了其校園房地產(chǎn)信息管理系統(tǒng),2007年南京工業(yè)大學基于MapX開發(fā)了其江浦校區(qū)的房地產(chǎn)信息管理系統(tǒng)等。1.3課題涉及的相關(guān)技術(shù)基于MapX對房地產(chǎn)專題信息進行管理主要體現(xiàn)是將MapX組件嵌入VB、VC或者其他可視化開發(fā)工具中,以Access、SQLServer、Oracle等為空間數(shù)據(jù)庫進行開發(fā)房地產(chǎn)管專題信息管理系統(tǒng)。這樣就能夠使房地產(chǎn)的某些屬性信息更加直觀的體現(xiàn)在地圖數(shù)據(jù)上,也能夠準確地了解房地產(chǎn)資源的空間分布情況以及其基本屬性信息,真正意義上實現(xiàn)房地產(chǎn)資源的可視化管理。也就是說利用MapX對房地產(chǎn)專題信息進行管理涉及的相關(guān)技術(shù)主要體現(xiàn)著以下幾個方面:在MapX方面,不僅僅要詳細了解MapX控件的屬性、其對象的屬性和方法以及相應的事件而且還需知道MapX地圖數(shù)據(jù)結(jié)構(gòu)。由于Map和MapInfoProfessional在地圖數(shù)據(jù)結(jié)構(gòu)方面存在一致性,所以只有對MapInfoProfessional地圖數(shù)據(jù)結(jié)構(gòu)的充分掌握才能做到MapX的高效開發(fā)。在開發(fā)語言與數(shù)據(jù)處理方面,MapX支持多種高級編程語言如VisualBasic、VisualC++、Delphi等,對于開發(fā)者而言必須具備某種語言的基本知識。另外由于Access、SQLServer、Oracle等為空間數(shù)據(jù)庫自身都有其優(yōu)點和不足,所以開發(fā)者必須對其具有一定程度的了解,這樣才能根據(jù)實際開發(fā)情況選擇合理的數(shù)據(jù)庫,做到房地產(chǎn)信息管理系統(tǒng)的合理性和優(yōu)越性。在房地產(chǎn)方面,也需要全面了解房地產(chǎn)各方面的信息如房產(chǎn)信息、地產(chǎn)信息,其中房產(chǎn)信息包括建筑信息、樓層信息、房間信息等,地產(chǎn)信息主要包括土地信息管理。另外還需根據(jù)具體的情況對某些信息制作專題地圖,以便實現(xiàn)地圖信息與屬性信息的雙向管理,也使屬性信息更加直觀化。1.4課題討論的主要內(nèi)容本課題主要從以下幾個方面進行討論:有關(guān)軟件MapInfo的簡介,其中主要包括空間拓撲關(guān)系模型以及其數(shù)據(jù)組織形式。對該內(nèi)容的介紹主要是因為MapX的數(shù)據(jù)組織形式與MapInfoProfessional內(nèi)部的數(shù)據(jù)組織形式保持著一致性,只有對MapInfoProfessional的數(shù)據(jù)組織機制做到足夠的了解才能實現(xiàn)MapX的充分開發(fā)。MapX的研究,其中主要有包括MapX的基本介紹、MapX空間數(shù)據(jù)的組織機制、MapX控件包含對象的基本模型以及基本屬性、MapX的顯著特征、MapX的使用程序GeoSetManager的介紹。基于MapX的房地產(chǎn)信息管理系統(tǒng)的設(shè)計流程,其中主要包括房地產(chǎn)專題數(shù)據(jù)的獲取與相應數(shù)據(jù)處理、系統(tǒng)的總體結(jié)構(gòu)。結(jié)合實例來實現(xiàn)基于MapX的房地產(chǎn)專題信息管理系統(tǒng)中各模塊功能以及其主要代碼分析。2MapInfo軟件的簡介2.1MapInfo的空間拓撲關(guān)系模型對于任何地理信息系統(tǒng)而言其存在的基礎(chǔ)是空間拓撲關(guān)系模型的建立。在如今應用較為廣泛的地理信息系統(tǒng)中,空間拓撲關(guān)系模型大多采用兩種結(jié)構(gòu)模型,其一是POLYVRT結(jié)構(gòu)模型,其二是空間實體結(jié)合空間索引所建立的模型。在上述兩種結(jié)構(gòu)模型中,MapInfo是利用空間實體結(jié)合空間索引建立的拓撲關(guān)系模型。80年代中后期出現(xiàn)的商用地理信息系統(tǒng),尤其是桌面地理信息系統(tǒng)大多采用這種方式,包括ESRI的ArcView,而采用POLYVRT模型的系統(tǒng)主要是以Arc/Info為代表的一些專業(yè)GIS產(chǎn)品[2]?!翱臻g實體+空間索引”指的是以“空間實體”為基礎(chǔ)進行建立的一種模型??臻g實體指的是地理實體對應的抽象形式,比如空間點、空間線以及空間面等類型。每個空間實體對象都維護著自己的所有屬性,多個空間實體則可以組成一個圖層。“空間實體+空間索引”模型是借助“空間索引”機制來完成對空間實體的查詢和定位??臻g索引的機制是通過已有的空間坐標形成一個坐標范圍,進而在該范圍內(nèi)對空間對象進行快速搜索。MapInfo采用R-Tree技術(shù)將空間實體的最小外接矩形(MBR)存儲在索引中,并按從大到小的順序進行索引搜索[3]。只有建立了相應的空間索引,才能快速地進行空間分析了。“空間實體+空間索引”模型因其空間索引機制決定了公共結(jié)點的多次存儲,進而使存儲空間大量開銷,但是在數(shù)據(jù)的編輯和管理方面比較簡便。而對于POLYVRT模型而言,雖然通過將一定數(shù)量的不同空間實體共用相同結(jié)點的方式來節(jié)省了必要的存儲空間,但是該模型的結(jié)構(gòu)變得繁雜,從而空間數(shù)據(jù)的可維護性大大降低了。此外,POLYVRT模型在組織空間實體數(shù)據(jù)方面并不能嚴格定義為關(guān)系模型,而“空間實體+空間索引”模型在該方面存在“實體-關(guān)系”的關(guān)系模型,進而可以和任何關(guān)系數(shù)據(jù)庫進行綁定,并在關(guān)系數(shù)據(jù)庫中實現(xiàn)空間數(shù)據(jù)編輯與存儲管理。2.2MapInfo數(shù)據(jù)組織形式在MapInfo中其數(shù)據(jù)的是以表的形式進行數(shù)據(jù)的查詢、數(shù)據(jù)的存儲和管理。另外在MapInfo中存在兩種表,一種是數(shù)據(jù)表,可分為包含圖形(地圖)對象的數(shù)據(jù)表和不包含圖形對象的數(shù)據(jù)表,例如電子表格或外部數(shù)據(jù)表,另一種表是柵格表,它是一種只能在地圖窗口中顯示的圖象,沒有數(shù)據(jù)表的記錄、字段和索引等表結(jié)構(gòu)[4]。這里我們只討論數(shù)據(jù)表的有關(guān)操作。MapInfo可調(diào)用dBASE數(shù)據(jù)庫、MSExcel電子表格、MSAccess數(shù)據(jù)庫、Lotus1-2-3和ASCll文件等。在MapInfo中可以通過“文件/打開表”命令來進行文件類型的選擇。而對于外部的表則可以通過“文件/另存為”命令轉(zhuǎn)換為MapInfo格式的數(shù)據(jù)表,進而實現(xiàn)外部數(shù)據(jù)的編輯和管理。另外,MapInfo中也可以直接修改數(shù)據(jù)表的結(jié)構(gòu),如增加或刪除字段;改變字段的順序、名稱、類型、寬度或索引;從對話框中設(shè)定或確定表的投影;還可以刪除數(shù)據(jù)表、重命名數(shù)據(jù)表和緊縮表結(jié)構(gòu)以減少磁盤空間。MapInfo采用雙數(shù)據(jù)庫存儲模式,即其空間數(shù)據(jù)與屬性數(shù)據(jù)是分開來存儲的。屬性數(shù)據(jù)存儲在關(guān)系數(shù)據(jù)庫的若干屬性表中,而空間數(shù)據(jù)則以MapInfo的自定義格式保存于若干文件中,二者通過一定的索引機制聯(lián)系起來。為了提高查詢和處理效率,MapInfo采用層次結(jié)構(gòu)對空間數(shù)據(jù)進行組織,即根據(jù)不同的專題將地圖分層(圖層還可以分成若干圖幅),每個圖層存儲為若干個基本文件[5]。2.2.1屬性數(shù)據(jù)的表結(jié)構(gòu)文件.TAB屬性數(shù)據(jù)表結(jié)構(gòu)文件定義了地圖屬性數(shù)據(jù)的表結(jié)構(gòu),包括字段數(shù)、字段名稱、字段類型和字段寬度、索引字段及相應圖層的一些關(guān)鍵空間信息描述。.TAB文件實際上是一個文本文件,可以在寫字板中打開觀察其內(nèi)容[6]。2.2.2屬性數(shù)據(jù)文件.DAT屬性數(shù)據(jù)文件中存放完整的地圖屬性數(shù)據(jù)。在文件頭之后,為表結(jié)構(gòu)描述,其后首尾相接地緊跟著各條具體地屬性數(shù)據(jù)記錄。2.2.3交叉索引文件.ID交叉索引文件記錄了地圖中每一個空間對象在空間數(shù)據(jù)文件(.MAP)中的位置指針。每四個字節(jié)構(gòu)成一個指針。指針排列的順序與屬性數(shù)據(jù)文件(.DAT)中屬性數(shù)據(jù)記錄存放的順序一致。交叉索引文件實際上是一個空間對象的定位表。2.2.4空間數(shù)據(jù)文件.MAP具體包含了各地圖對象的空間數(shù)據(jù)??臻g數(shù)據(jù)包括空間對象的幾何類型、坐標信息和顏色信息等。另外還描述了與該空間對象對應的屬性數(shù)據(jù)記錄在屬性數(shù)據(jù)文件(.DAT)中的記錄號。這樣,當用戶從地圖上查詢某一地圖對象時,就能夠方便地查到與之相關(guān)的屬性信息,其相應的空間數(shù)據(jù)的索引機制如圖2-1。圖2-1MapInfo的文件格式及數(shù)據(jù)關(guān)聯(lián)機制2.2.5索引文件.IND索引文件并不是必須的,只有當用戶規(guī)定了數(shù)據(jù)庫的索引字段后mapinfo才會自動產(chǎn)生索引文件。索引文件中對應于每個索引字段都有一個索引表。在每個索引表中,先給出總的數(shù)據(jù)庫記錄數(shù)目,然后按照索引順序給出每條屬性數(shù)據(jù)記錄在對應的索引字段處的具體屬性數(shù)據(jù)和該記錄在屬性文件(.DAT)及交叉索引文件(.ID)中的記錄號[7]。圖2-2表示了MapInfo的索引文件機制。圖2-2MapInfo的索引文件格式及數(shù)據(jù)關(guān)聯(lián)機制2.3MapX的研究2.31MapX的簡介MapX是MapInfo公司向用戶提供的具有強大地圖分析功能的ActiveX控件產(chǎn)品。由于它是一種基于Windows操作系統(tǒng)的標準控件,因而能支持絕大多數(shù)標準的可視化開發(fā)環(huán)境如VisualC++、VisualBasic、Delphi、PowerBuilder等。編程人員在開發(fā)過程中可以選用自己最熟悉的開發(fā)語言,輕松地將地圖功能嵌入到應用中,并且可以脫離MapInfo的軟件平臺運行。利用MapX,能夠簡單快速地在企業(yè)應用中嵌入地圖化功能,增強企業(yè)應用的空間分析能力,實現(xiàn)企業(yè)應用的增值[8]。MapX采用基于MapInfoProfessional的相同的地圖化技術(shù),可以實現(xiàn)MapInfoProfessional具有的絕大部分地圖編輯和空間分析功能。而且,MapX提供了各種工具、屬性和方法,實現(xiàn)這些功能是非常容易的。2.32MapX的空間數(shù)據(jù)機制空間數(shù)據(jù)結(jié)構(gòu)是GIS的基石,GIS就是通過這種地理空間拓撲結(jié)構(gòu)建立地理圖形的空間數(shù)據(jù)模型并定義各空間數(shù)據(jù)之間的關(guān)系,從而實現(xiàn)地理圖形和數(shù)據(jù)庫的結(jié)合。對于MapX而言,其空間數(shù)據(jù)模型如圖2-3。圖2-3MapX的空間數(shù)據(jù)結(jié)構(gòu)從橫向分析,MapX采取的空間數(shù)據(jù)結(jié)構(gòu)是基于空間實體和空間索引相結(jié)合的一種結(jié)構(gòu)??臻g實體是地理圖形的抽象模型,主要包括點、線、面三種類型。任何點、線、面實體都可以用直角坐標點x、y來表示[9]。點可以表示成一組坐標(x,y),對于線和面,則均被表示成多組坐標(x1,y1;x2,y2;xn,yn)??臻g索引是查詢空間實體的一種機制,通過空間索引,就能夠以盡量快的速度查詢到給定坐標范圍內(nèi)的空間實體及其所對應的數(shù)據(jù)。從縱向分析,MapX的空間數(shù)據(jù)結(jié)構(gòu)是一種分層存放的結(jié)構(gòu)。用戶可以通過圖形分層技術(shù),根據(jù)自己的需求或一定的標準對各種空間實體進行分層組合,將一張地圖分成不同圖層[10]。采用這種分層存放的結(jié)構(gòu),可以提高圖形的搜索速度,便于各種不同數(shù)據(jù)的靈活調(diào)用、更新和管理。圖2-4MapX的模型結(jié)構(gòu)2.33MapX控件包含對象的基本模型以及基本屬性MapX控件中最基本的組成單元是單個的對象(Object)和多個對象的集合(Collection)。每種對象和集合負責處理地圖某種功能。由圖2.4可以看出,位于頂層的是Map對象本身,其它均由Map對象繼承。而Layers對象、DataSets對象、Annotations對象又是是Map對象的主要組成部分。其中Layer主要用于操作地圖的圖層,DataSet用于訪問空間數(shù)據(jù)表,Annotation用于在地圖上增加文本或者符號[11]。(1)Map每個Map對象主要包括Datasets、Layers、Annotations三個對象集合。Map對象有一些主要的屬性,如Zoom用來設(shè)置放大級別(在地圖上顯示的大?。?,Rotation控制地圖的旋轉(zhuǎn)角度,CenterX和CenterY用于設(shè)置x和y的坐標系,這要取決于地圖的投影。Map對象的許多屬性本身又是一個對象,比如說一幅地圖由多個圖層組成,則在一個Map對象中存在一個單獨的layers集合,其中包含所有圖層的信息。(2)Layers在MapX中,每張單獨的地圖都被表示成單獨的一個圖層,所有的圖層存儲在layers集合中。Layers集合由Layer對象組成,按順序編號為0到n。Layer對象由features對象組成,features對象又是由Feature對象組成,對應于地圖中的點、線、區(qū)域或符號。最上面一層為Layers(1),Layers(2)位于Layers(1)的下面,以次類推。最下面的圖層最先繪制,最上面的圖層最后繪制。在應用程序中,合理地安排好每層在Layers中的順序是至關(guān)重要的。比如說有兩個圖層,一層為點,一層為區(qū)域,則應將點層放到區(qū)域?qū)拥纳戏?,否則區(qū)域會將點覆蓋。另外,在進行地圖選擇操作時,根據(jù)要求調(diào)整圖層的順序也是十分重要的。MapX中的選擇工具總是從可選擇圖層中的最上層開始選擇,如果在地圖上的同一位置存在多個位于不同層的地圖對象,其結(jié)果是很難精確地選擇到目標對象,因此,最好將被選擇圖層提到最上層顯示[12]。(3)GeoSetsGeoSet是在GeoManager中建立好的.GST文件,類似MapInfo中的WorkSpace概念,是圖層及其設(shè)置的集合,控制程序中顯示的地圖。也可以在運行階段設(shè)置GeoSet,此時將導致已經(jīng)加載的所有圖層和DataSet被刪除而由GeoSet中定義的圖層所代替。如果單純地想刪除所有圖層,只需給GeoSet賦一個空字符串即可??梢允褂肎eoSetManager程序來管理GeoSet文件(*.GST)。默認情況下.GST文件存儲在…\\mapx\maps目錄下,可以調(diào)用GeoDictionaryManager程序進行修改,指向用戶程序數(shù)據(jù)所在的位置。(4)DatasetsDatasets用于實現(xiàn)地圖與數(shù)據(jù)的綁定。舉例說明,有一個關(guān)于城市銷售情況的MSAccess數(shù)據(jù)庫和一張該城市的地圖,則可以將二者綁定,在地圖上形象地顯示出各城市銷售業(yè)績的趨勢,這一點是表格數(shù)據(jù)無法做到的。建立地圖信息與屬性數(shù)據(jù)之間聯(lián)系的過程稱之為自動綁定或自動匹配(autobinding/automatching)。要實現(xiàn)這一過程,必須首先將地圖在GeoDictionary中注冊。屬性數(shù)據(jù)表示的可視化使得創(chuàng)建專題地圖成為可能;數(shù)據(jù)綁定"PuttingYourDataontheMap";專題地圖"ThemeMappingandAnalysis";(5)AnnotationsAnnotations集合提供了操縱地圖中文字和符號的簡單方法。Annotations位于所有其它圖層的上方并且不與任何數(shù)據(jù)連接,有點兒象MapInfo中的透明圖層。Annotations包括以下主要的屬性與方法:AddSymbol在Annotations中增加符號,符號類型使用Map.DefaultStyle定義;AddText在Annotations中增加文本;Remove刪除特定的標注.;Type取值為miSymbolAnnotation或miTextAnnotation。 Annotations還有一個非常重要的屬性Graphic,其定義為Graphic對象,在該對象中包含了符號或文本的樣式、位置等信息,即Graphic的Caption、Position、Style、X、Y屬性。如Annotations的Type屬性定義為miTextAnnotation,則可以定義Graphic的Caption屬性設(shè)置標注的字符串[13]。(6)可創(chuàng)建對象在MapX對象模型中,以下對象是可以被創(chuàng)建的:AffineTransform、BindLayer、BitmapSymbols、CoordSys、Datum、Feature、Fields、LayerInfo、Map、 ODBCQueryInfo、 Parts、Point、Points、Rectangle、RowValue、RowValues、Style、Variables、NotesQueryInfo、NotesViewInfo。在Delphi中創(chuàng)建這些對象需要注意一點,即在后面注明MapX的版本。如在本課題實現(xiàn)過程中,由于使用的是MapX4.0版本,因此創(chuàng)建語句要寫成如下形式:s:=CreateOleObject('MapX.Style.3');2.34MapX的顯著特征(1)專題地圖將數(shù)據(jù)庫表中的特定值賦給地圖對象的顏色、圖案或符號從而創(chuàng)建不同的專題地圖,也可創(chuàng)建范圍值、等級符號、點密度、獨立值、直方圖和餅圖6種方式的專題地圖[14];(2)可深入的地圖通過簡單的點擊方式可瀏覽與地圖對象相連的數(shù)據(jù)信息;(3)數(shù)據(jù)綁定地圖可通過嵌入OCX的容器與數(shù)據(jù)庫相連,并提供了幾種不同的數(shù)據(jù)綁定方式包括ZIPCode-level地理編碼法;(4)注解可提供方向、加亮顯示特殊數(shù)據(jù),還可加入文本、符號、表格使地圖信息更加豐富直觀;(5)圖層顯示和控制圖層的縮放、使用或創(chuàng)建無縫地圖、還可支持一些特殊的應用,比如用于實時跟蹤的活動圖層和可繪制特殊圖形的用戶自定義圖層(如logo圖案);(6)柵格圖象采用柵格圖象作為地圖的基礎(chǔ)圖層可使其它圖層有一個更細致的背景;(7)自動標記自動在地圖上加入標記,同時標記屬性和顯示;(8)選擇可在地圖上拖動鼠標以在圓、矩形或特定的點上選擇一個或多個對象或記錄以供分析;(9)對象庫可以使用FeatureFactory對象,創(chuàng)建、聯(lián)接或刪除點、線、區(qū)域圖形對象;(10)工具使用MapX的標準工具或根據(jù)需要自己創(chuàng)建的自定義工具,用戶可通過點擊或拖拽對地圖直接進行操作;(11)地圖編輯允許用戶添加、修改、刪除地圖上的文本、編輯區(qū)域、點等特殊對象;(12)投影與坐標系MapX允許用戶調(diào)整地圖的顯示、用本地坐標系處理X-Y坐標數(shù)據(jù);(13)遠程空間數(shù)據(jù)服務器可以訪問存儲在Oracle8i和MapInfoSpatialWare中的遠程地圖數(shù)據(jù)??臻g數(shù)據(jù)服務器如SpatialWare和Oracle8i等都提供了先進的查詢處理能力,提高了空間數(shù)據(jù)組織的性能。將空間數(shù)據(jù)存儲到關(guān)系型數(shù)據(jù)庫中,可以增加應用程序的靈活性,同時也要求在地圖編輯和大數(shù)據(jù)集方面做更多的工作。2.35MapX的使用程序GeoSetManager的介紹在MapX中,地圖是分層顯示的,每一層都對應一個表,即.TAB文件。我們的工作往往不是只針對某一個表,如果每次開始工作都重復性地將所用到的表一一打開,不僅麻煩,而且浪費時間,同時通過使用GeosetManager,可以將所有的工作表集中在一起,連同每一層的設(shè)置一并存儲到一個.GST文件中,下次使用時,只需打開此文件就可以了[15]。在GeosetManager中,可以瀏覽已定義的GeoSet,也可以建立新的GeoSet可以調(diào)出Layers控制對話框?qū)γ恳粓D層分別進行設(shè)置,還可以改變投影方式。另外,在tools菜單中提供了RegisterLayersinGeoDictionary項,可以將當前.GST中的某些或全部.TAB文件直接注冊到GeoDictionary中。3基于MapX的房地產(chǎn)專題信息管理系統(tǒng)的設(shè)計流程借助MapX來實現(xiàn)房地產(chǎn)專題信息管理的主要形式是基于MapX的房地產(chǎn)專題信息管理系統(tǒng)的設(shè)計與實現(xiàn)。在以上兩節(jié)中詳細介紹了MapX控件的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)組織形式、對象模型和對象的基本屬性以及對象的基本方法,本節(jié)將著重介紹利用MapX控件對房地產(chǎn)專題信息系統(tǒng)的設(shè)計過程。3.1房地產(chǎn)數(shù)據(jù)的獲取與處理通過MapX控件的數(shù)據(jù)結(jié)構(gòu)及其組織形式,我們可以了解到借助MapX控件實現(xiàn)房地產(chǎn)專題信息管理系統(tǒng)一個重要的部分是相關(guān)數(shù)據(jù)的獲取與處理,當然這也是最基本的環(huán)節(jié),只有處理好數(shù)據(jù)方面的內(nèi)容才能順利利用MapX進行房地產(chǎn)專題信息系統(tǒng)的開發(fā)。在數(shù)據(jù)的處理方面既包括了房地產(chǎn)空間數(shù)據(jù)的獲取也包括了房地產(chǎn)屬性數(shù)據(jù)的獲取。其中房地產(chǎn)空間數(shù)據(jù)的獲取主要有以下幾種方式:利用數(shù)字化儀獲取使用數(shù)字化儀,利用大比例尺數(shù)字化測圖技術(shù)獲取原始的空間數(shù)據(jù)再利用專業(yè)成圖軟件(如:南方Cass7.0)繪制平面圖。由于其存圖方式為Dwg格式,則需要進行一定格式轉(zhuǎn)換,獲得MapInfo可以識別的數(shù)據(jù)格式,進而轉(zhuǎn)換為Gst格式(實例開發(fā)的具體過程可以參考下一節(jié)中的“應用實例中實現(xiàn)房地產(chǎn)地圖的嵌入”)。對于這種方式獲取的數(shù)據(jù)比較精確,同時也是比較常用的方式。使用掃描儀獲取顧名思義就是借助掃描儀對所收集的圖紙進行掃描以便獲取一定格式的數(shù)據(jù)。由于掃描后數(shù)據(jù)結(jié)構(gòu)是以柵格的形式存儲的,所有還需利用相關(guān)的圖形整理軟件對圖像進行質(zhì)量方面的改善如圖像的細化、拼接、矢真處理等,最終是將柵格數(shù)據(jù)轉(zhuǎn)變?yōu)槭噶繑?shù)據(jù)。此中方式在空間數(shù)據(jù)的獲取方面更加自動化、智能化,對于開發(fā)者而言是一種方便可靠的方式,但是這種方法對圖紙的質(zhì)量有著較高的要求。利用計算機獲取該方式是通過人工的方式利用計算機對地圖數(shù)據(jù)的輸入,雖然減少了許多外業(yè)工作但是大大增加了內(nèi)業(yè)的工作量。通過購買的方式獲取眾所周知作為信息商品的電子地圖已經(jīng)被廣泛地應用到各個行業(yè)中,目前電子地圖主要包括地形圖、遙感影象圖以及各種專題圖等。從相關(guān)部門進行數(shù)字拷貝獲取通過相關(guān)部門提供的標準數(shù)據(jù)無文件并借助專業(yè)軟件進行數(shù)據(jù)的轉(zhuǎn)換,最終得到可以用MapInfo打開的數(shù)據(jù)格式。對于MapInfo而言并沒有向外界明確的指出MapInfo軟件的數(shù)據(jù)結(jié)構(gòu),但是它提供了可以用來格式轉(zhuǎn)換的其他數(shù)據(jù)結(jié)構(gòu)如MIF和MID格式以及AUTOCAD所支持的DXF格式的數(shù)據(jù)。在空間數(shù)據(jù)處理方面主要是借助軟件進行一定格式的轉(zhuǎn)換最終生成能夠嵌入MapX控件的Gst格式的電子圖。另外對于屬性數(shù)據(jù)的獲取主要是從相關(guān)部門收集而來或者經(jīng)過實地的調(diào)查與統(tǒng)計形成相關(guān)的統(tǒng)計文檔。在屬性數(shù)據(jù)獲取之后,對其的處理也是比較關(guān)鍵的部分。通常情況可以借助MapInfo軟件結(jié)合電子地圖對屬性數(shù)據(jù)進行錄入,但是由于屬性數(shù)據(jù)復雜繁多會導致電子圖的在加載、修改、查詢方面比較緩慢。另外從商業(yè)的角度,這些屬性數(shù)據(jù)具有一定的商業(yè)價值,其保密性是必要的,所有在屬性數(shù)據(jù)處理過程中通過建立外接數(shù)據(jù)庫并進行屬性數(shù)據(jù)的錄入是一種有效的方式。3.2房地產(chǎn)數(shù)據(jù)庫的設(shè)計房地產(chǎn)專題信息管理系統(tǒng)中其涉及的數(shù)據(jù)有兩種:一種是圖形數(shù)據(jù),另一中就是屬性數(shù)據(jù)。其中圖形數(shù)據(jù)主要是采用MapInfo軟件來存儲空間數(shù)據(jù),并依此為標準生成能夠嵌入MapX控件的Gst格式圖形數(shù)據(jù);而對于屬性數(shù)據(jù)而言,雖然MapInfo軟件也提供了一定格式的存儲表,但是由于房地產(chǎn)信息的商業(yè)性和保密性,所以在屬性數(shù)據(jù)的管理方面是通過建立外接數(shù)據(jù)庫如Access、SQLServer、Oracle等數(shù)據(jù)庫來完成的??臻g數(shù)據(jù)庫是利用MapInfo軟件并借助其內(nèi)部機制進行管理的。屬性數(shù)據(jù)則需要根據(jù)實際情況決定是否采用外接數(shù)據(jù)庫并通過一定的機制將其綁定到MapX控件中。對于房地產(chǎn)而言為了能夠高效運作所開發(fā)的程序則需要采用外接數(shù)據(jù)庫。在外接屬性數(shù)據(jù)庫的建立過程中并不是盲目的而是根據(jù)房地產(chǎn)本身的種類來實現(xiàn)其建立。一類是地產(chǎn)方面,地產(chǎn)是房地產(chǎn)的基本組成部分,所以在屬性數(shù)據(jù)建立一個地產(chǎn)屬性表是必要的。在地產(chǎn)屬性表中通過設(shè)立必要的字段來存儲與管理,比如地產(chǎn)名稱、面積、用途、權(quán)利人的等字段,另外還需要根據(jù)具體情況建立相應的索引字段,以便能夠關(guān)聯(lián)實體圖形和其他的屬性表。而另一類是房產(chǎn)方面,房產(chǎn)是房地產(chǎn)的重要組成部分也是房地產(chǎn)信息管理主要研究的方面。在外接數(shù)據(jù)庫中同樣需要建立一個房產(chǎn)信息表并在表中建立一定的字段來完成對房產(chǎn)信息的說明,如對建筑物建立一個表并設(shè)立建筑物名稱、單位、單元號、房間數(shù)、樓層數(shù)、竣工時間、建筑物面積、權(quán)屬等字段;在房產(chǎn)項目管理方面,可以建立項目信息表,并設(shè)立項目名稱、開發(fā)商、項目進度、項目坐落、開工時間、竣工時間等;在樓盤管理方面,可以建立樓盤信息表并設(shè)立樓盤名稱、房號、房價、房產(chǎn)坐落、面積、朝向、戶型等字段。3.2將房地產(chǎn)屬性數(shù)據(jù)與地圖數(shù)據(jù)綁定將房地產(chǎn)屬性數(shù)據(jù)與地圖數(shù)據(jù)綁定指的是借助MapX控件提供的方法和相關(guān)接口將其他數(shù)據(jù)庫的數(shù)據(jù)導入到MapX控件的過程。在進行房地產(chǎn)屬性數(shù)據(jù)的綁定到地圖后,便可以利用MapX控件輕松快捷的創(chuàng)建對應的應用程序。同時也可以將屬性數(shù)據(jù)作為圖元的方式進行查看以及可以基于該屬性數(shù)據(jù)創(chuàng)建一些專題圖,實現(xiàn)空間數(shù)據(jù)與屬性數(shù)據(jù)的雙向管理。數(shù)據(jù)的綁定是實現(xiàn)基于MapX的房地產(chǎn)專題信息管理系統(tǒng)的關(guān)鍵,那么在MapX控件中是如何實現(xiàn)房地產(chǎn)數(shù)據(jù)的綁定呢?對于這一問題,MapX控件提供了兩種解決辦法其中包括BindLayer數(shù)據(jù)綁定和借助MapX的Datasets集合進行數(shù)據(jù)綁定。3.2.1BindLayer數(shù)據(jù)綁定BindLayer數(shù)據(jù)綁定指的是根據(jù)數(shù)據(jù)源中的數(shù)據(jù)在MapX地圖中指定的位置創(chuàng)建點圖層。在BindLayer數(shù)據(jù)綁定過程中首先需要做的是創(chuàng)建一個BindLayer對象。創(chuàng)建BindLayer對象的具體過程是申明一個BindLayer類型數(shù)據(jù)并根據(jù)具體的數(shù)據(jù)源設(shè)置BindLayer的屬性,而BindLayer對象的屬性見表3-1。表3-1BindLayer對象的屬性屬性說明值LayerType指數(shù)據(jù)源所綁定的圖層類型MiBindLayerTypeNormalMiBindLayerTypeXYMiBindLayerTypePointRefCoordSys指數(shù)據(jù)綁定后所創(chuàng)建圖層的坐標系CoordSysFileSpec指定的文件的絕對位置用于創(chuàng)建永久圖層文本字符串KeyLength創(chuàng)建圖層中字段所需的長度,是一個正數(shù)數(shù)字型,范圍在1-255LayeerName當指定圖層類型為MiBin-dLayerTypeNormal時其值為數(shù)據(jù)綁定的圖層的名稱;當是另外兩種類型時則需要指定新的圖層名稱字符串值RefColumn1當圖層類型為MiBindLay-erTypeXY時其值是數(shù)據(jù)源中X坐標;當圖層類型是MiBindLayerTypePoint-Ref時其值為數(shù)據(jù)源中含有參考信息字段引用某個字段的名稱或其對應的索引RefColumn2當圖層類型為MiBindLay-erTypeXY時其值是數(shù)據(jù)源中Y坐標;當圖層類型是MiBindLayerTypePoint-Ref時其值為數(shù)據(jù)源中含有參考信息字段(前提是RefColumn1所指定的字段不唯一)引用某個字段的名稱或其對應的索引ReferenceLayer指的是含有參考信息的文件名稱(當圖層類型為MiBindLayerTypePointRef時需要指定該屬性)字符串在創(chuàng)建BindLayer對象后接下來就是利用該對象實現(xiàn)數(shù)據(jù)的綁定。在BindLayer對象進行數(shù)據(jù)綁定的過程中會出現(xiàn)以下兩種情況:其一源數(shù)據(jù)中存在X-Y坐標時是根據(jù)(x,y)坐標指定的位置創(chuàng)建點圖層以實現(xiàn)數(shù)據(jù)的綁定。這種情況下還必須將BindLayer對象的LayerType屬性定義為miBindLayerTypeXY以及定義其RefColumn1屬性名或者相對應索引同時也要定義其RefColumn2屬性為數(shù)據(jù)源中涉及Y坐標的字段名或者相對應索引。第二種情況則是通過數(shù)據(jù)源中包含的相關(guān)參考信息來確定點被創(chuàng)建的位置從而實現(xiàn)數(shù)據(jù)的綁定。當出現(xiàn)這種情況時,需要把BindLayer對象的LayerType屬性定義為miBindLayerTypePointRef以及定義其RefColumn1屬性為數(shù)據(jù)源中相關(guān)參考信息的字段名或者相對應索引同時也要將其ReferenceLayer屬性設(shè)置為所引用的具有參考信息文件的名稱。另外還需說明的是其RefColumn2屬性,如果其RefColumn1屬性不唯一則需要定義RefColumn2為另一個參考信息的名稱;反之則不需要設(shè)置RefColumn2。3.2.2借助MapX的Datasets集合進行數(shù)據(jù)綁定借助MapX的Datasets集合進行數(shù)據(jù)綁定的過程中是可以不用指出數(shù)據(jù)源本身所具備的的屬性,這是因為MapX具有自動分析數(shù)據(jù)的功能并會以一種最佳的方式將數(shù)據(jù)源綁定到MapX地圖上。同樣該綁定方式也有兩種方法,其一是在設(shè)計階段利用VisualBasic中的數(shù)據(jù)綁定控件并結(jié)合MapX地圖對象的Dataset屬性來完成。另一中方法使用Datasets集合的Add方法即Datasets.Add方法,這也是數(shù)據(jù)綁定時常用的方法。下面便是對Datasets.Add方法的詳細介紹。Datasets.Add方法在編程中的語法:Datasets.AddType,SourceData,[Name],[Geofield],[SecondaryGeofield],[BindLayer],[Fields],[Dynamic]說明:上述語法中[方括號]中的參數(shù)是可選參數(shù),即在其8個參數(shù)中前兩個是必選的后6個參數(shù)則可以根據(jù)具體情況適當選擇。其中Type參數(shù)是指添加到Datasets集合的數(shù)據(jù)類型,該參數(shù)所能接受的參數(shù)見表3-2。表3-2參數(shù)Type所接受的類型數(shù)據(jù)類型說明miDataserADO指的是ADO數(shù)據(jù)集miDataserDAO指的是DAO數(shù)據(jù)集miDatasetDelphi指的是BorlandBDE數(shù)據(jù)集miDatasetSafeArray指的是COM數(shù)據(jù)集miDatasetRDO指的是RDO數(shù)據(jù)集miDatasetOLEData指的是OLE數(shù)據(jù)集miDatasetODBC指的是ODBC數(shù)據(jù)集miDatasetNotesQuery/View指的是LolusNoles類型的數(shù)據(jù)表miDatasetLayer指的是MapInfo中的數(shù)據(jù)表語法中SourceData參數(shù)是取決于外接數(shù)據(jù)源的類型,實際是該參數(shù)是MapX鏈接外部數(shù)據(jù)源的一個接口,數(shù)據(jù)的綁定也就是通過該接口來完成的。Name參數(shù)是數(shù)據(jù)集合中的字符串,加入Datasets集合后該參數(shù)具有唯一的編號。作為一個可選參數(shù),如果再綁定的過程中未指定,MapX將自動為其編號。Geofield參數(shù)是包含源數(shù)據(jù)中地理信息的字段名稱或?qū)乃饕?。如果在綁定的過程中未將其指定,則MapX將自動查找各個字段以確定GeoDictionary文件中包含地理信息的字段。所匹配的字段并不一定是有關(guān)地理數(shù)據(jù)的字段,也可以是具有唯一關(guān)鍵字的字段。另外作為源數(shù)據(jù)中的GeoField字段一定要是唯一的,只有這樣才能正確的將源數(shù)據(jù)綁定的MapX地圖上進行查看,否則MapX將重復的值進行數(shù)據(jù)值上的合計。當然,如果在明確知道源數(shù)據(jù)中存在地理信息的字段的情況下應人工指定,這樣會減少MapX自動查找的過程進而提高程序的運行效率。與Geofield參數(shù)具有一定的相似性的是SecondaryGeofield參數(shù),該參數(shù)出現(xiàn)的唯一可能是數(shù)據(jù)綁定過程中圖層對應的關(guān)鍵字不具有唯一性,也只有在這中情況下該參數(shù)才是有效的。BindLayer參數(shù)將指定的數(shù)據(jù)源鏈接到MapX地圖圖層中或者MapX的BindLayer對象。同樣作為一個可選參數(shù),如果出現(xiàn)未指定的情況則MapX將自動從GeoDictionary文件中查找需要圖層。Fields參數(shù)是Field對象的集合的一種形式,該參數(shù)明確了源數(shù)據(jù)導入的字段或者在特定情況下的合計函數(shù)值所對應的字段。對應該參數(shù)如果明確指定了相應的Fields集合時,參數(shù)Geofield以及SecondaryGeofield將不會指定數(shù)據(jù)源中的字段而是Fields中的字段。Dynamic參數(shù)判斷的是數(shù)據(jù)在綁定后動態(tài)的布爾值的情況,如果未指定該參數(shù)則將默認其值為False即是靜態(tài)綁定,反之其值為Ture即動態(tài)綁定,能夠?qū)崿F(xiàn)在必要的情況下實時進行數(shù)據(jù)連接。但是在源數(shù)據(jù)不支持動態(tài)字段是而又設(shè)置該參數(shù)為Ture,那么在程序運行時出錯。上述已經(jīng)對數(shù)據(jù)綁定方法進行了詳細的介紹,但是要完成數(shù)據(jù)的綁定必須在使用這些方法前將源數(shù)據(jù)中包含地理數(shù)據(jù)的的關(guān)鍵字段編入為索引字段并且還要在GeoDictionary中指定地圖和其關(guān)鍵字段。另外需要說明的是在Datasets.Add方法中涉及的GeoDictionary文件是能夠查找與源數(shù)據(jù)綁定的相關(guān)信息。3.3基于MapX房地產(chǎn)專題信息管理系統(tǒng)的模型以及功能設(shè)計由于不同區(qū)域的房產(chǎn)和地產(chǎn)在實際生活中存在一定的差異所以基于MapX房地產(chǎn)信息管理系統(tǒng)的建立是具有較強的區(qū)域性和針對性。該系統(tǒng)是一種信息化管理的現(xiàn)代化工具,其主要用戶是房地產(chǎn)管理部門。為了更為全面的實現(xiàn)管理方面的功能,對系統(tǒng)的需求性分析是建立該系統(tǒng)的重要環(huán)節(jié)。該系統(tǒng)的建立首先是和相關(guān)的房地產(chǎn)管理部門溝通,由房地產(chǎn)管理者提出其對該系統(tǒng)在功能和運行環(huán)境等其他方面的總體要求,然后由開發(fā)者在滿足客服需求同時進行系統(tǒng)的調(diào)試,并指出初級階段的開發(fā)法案,其中包括開發(fā)所用到的編程語言、開發(fā)運行的環(huán)境、數(shù)據(jù)庫技術(shù)、系統(tǒng)總體功能設(shè)計等,并再次和相關(guān)管理部門進行多次協(xié)調(diào)和商定,以及對相關(guān)的文檔、圖形資料、數(shù)據(jù)資料等進行整理、歸納、提煉,最終確定開發(fā)方案。只有對系統(tǒng)的需求進行必要的分析才能避免在開發(fā)中出現(xiàn)頻繁的變動,影響工程周期。完成系統(tǒng)需求性分析后,接下來的工作是對系統(tǒng)總體結(jié)構(gòu)的設(shè)計。在相關(guān)部門需求的基礎(chǔ)上,系統(tǒng)的總體結(jié)構(gòu)一般會包括:MapX地圖數(shù)據(jù)的管理、系統(tǒng)形成的界面、系統(tǒng)實現(xiàn)的功能、房地產(chǎn)數(shù)據(jù)的存儲與管理、數(shù)據(jù)的顯示以及相關(guān)數(shù)據(jù)的錄入與輸出等。雖然基于MapX的房地產(chǎn)信息管理系統(tǒng)具有一定的區(qū)域性和針對性,但是其系統(tǒng)總體結(jié)構(gòu)都會涉及上述的所介紹的各個方面或者其中某幾個方面。在系統(tǒng)總體結(jié)構(gòu)設(shè)計完成后便可以根據(jù)該系統(tǒng)的總體結(jié)構(gòu)來完成系統(tǒng)功能方面的規(guī)劃和設(shè)計。在系統(tǒng)功能設(shè)計方面主要包括了以下幾個方面:其一是房地產(chǎn)地圖操作方面,其中有涉及了地圖的基本操作如放大、縮小、漫游、居中和地圖的其他操作如面積測量、距離測量、圖層控制;其二是信息查詢方面,信息的查詢是有包含了地圖信息查詢即通過從地圖上指定后顯示對應的屬性信息以及通過屬性信息來定位圖形數(shù)據(jù);同時還包含了房產(chǎn)信息查詢;另外一方面就是數(shù)據(jù)庫的管理,數(shù)據(jù)庫的管理過程主要涉及了數(shù)據(jù)的錄入、輸出、編輯、修改、刪除等方面。在數(shù)據(jù)分析方面如房地產(chǎn)專題圖的制作:此外還有一些輔助功能如實時顯示當前坐標、鷹眼視圖、常用功能的快捷設(shè)置等,輔助方面的功能是根據(jù)實際需要而選擇的,同時也是為了實現(xiàn)系統(tǒng)的便捷管理。需這里需要說明的是由于房地產(chǎn)本身具有的區(qū)域性和針對性,在系統(tǒng)功能方面的要求需要根據(jù)實際情況進行某個或者某些方面的開發(fā)。4結(jié)合實例開發(fā)深入了解基于MapX的房地產(chǎn)專題信息管理4.1開發(fā)實例的介紹該實例開發(fā)是以河南工程學院校本部1:1000地形圖為房地產(chǎn)專題信息的主要資料,并依此為依據(jù)獲取空間數(shù)據(jù)如校園內(nèi)各部分實體的坐標、平面面積、地形資料等以及相關(guān)房產(chǎn)和地產(chǎn)的數(shù)據(jù)文檔。同時該實例開發(fā)是以VisualBasic6.0作為開發(fā)環(huán)境并以Access作為數(shù)據(jù)庫平臺,最終完成基于MapX的有關(guān)河南工程學院校本部的房地產(chǎn)的信息管理系統(tǒng)。在經(jīng)過與校相關(guān)房地產(chǎn)管理部門的溝通與商定,以及對該校區(qū)相關(guān)圖形數(shù)據(jù)、房地產(chǎn)的屬性資料等文檔的分析與歸納,最終形成了對該實例系統(tǒng)的功能結(jié)構(gòu)設(shè)計的方案。該實例系統(tǒng)中其功能結(jié)構(gòu)的設(shè)計包括以下幾個方面:(1)系統(tǒng)界面的設(shè)計;(2)房地產(chǎn)地圖數(shù)據(jù)管理;(3)房地產(chǎn)屬性數(shù)據(jù)的存儲與管理;(4)房地產(chǎn)屬性信息和地圖數(shù)據(jù)的雙向聯(lián)系。同時根據(jù)該實例系統(tǒng)的功能結(jié)構(gòu)并提出了系統(tǒng)功能的設(shè)計方案,對于該系統(tǒng)要完成的功能如下:(1)地圖的操作功能,其中包括地圖放大、縮小、居中、漫游、圖層控制、面積測量、距離測量;(2)房地產(chǎn)專題地圖的制作;(3)數(shù)據(jù)庫的管理,其中涉及了數(shù)據(jù)的查詢、修改、刪除等基本管理操作;(4)房地產(chǎn)信息查詢功能,其中包括了地圖數(shù)據(jù)的點選擇并以此顯示相關(guān)的屬性信息。另外通過相關(guān)的屬性數(shù)據(jù)來查詢地圖位置;(5)實例系統(tǒng)需要的輔助功能,該功能主要鷹眼視圖、實時顯示當前坐標、文件路徑的顯示、捕捉功能、地圖的輸出。最終形成開發(fā)系統(tǒng)如圖4-1:圖4-1房地產(chǎn)專題信息管理系統(tǒng)4.2應用實例中實現(xiàn)房地產(chǎn)地圖的嵌入在房地產(chǎn)開發(fā)實例中地圖的嵌入是最基本的環(huán)節(jié),具體步驟如下:(1)底圖的制作首先通過收集已有控制點并利用全站儀進行野外數(shù)據(jù)采集,然后基于南方cass7.0繪制校園房地產(chǎn)平面地圖。(2)制作校園房地產(chǎn)電子地圖(地圖為Gst格式)由于Dwg格式的文件與Gst格式的文件在數(shù)據(jù)結(jié)構(gòu)存在差異,所有在Dwg格式的校園平面圖進行轉(zhuǎn)換前應做好以下工作:①將圖中同類地物放在同一圖層中如建筑物圖層、運動場圖層、校內(nèi)道路圖層、綠化用地圖層、其他用地圖層②刪除冗余數(shù)據(jù)如刪除多余的標注、點比較密集的線段要進行適當刪點③對圖層中線、多邊形的閉合性以及閉合圖形的線自相交性進行檢查與修正。經(jīng)過上述處理之后在借助南方Cass7.0以及MapInfoProfessional7.0SCP軟件制作Gst格式的校園房地產(chǎn)電子地圖,具體操作過程如下:首先在南方Cass7.0軟件中將打開的Dwg格式的校園平面圖另存為AutoCADR12/LT12DXF格式;其次通過MapInfoProfessional7.0SCP軟件中“表/轉(zhuǎn)入”的功能將DXF格式文件中每個圖層數(shù)據(jù)轉(zhuǎn)換為MapX所需的數(shù)據(jù)格式,并且在這個過程中設(shè)置投影為Non-Earth(meters);最后借助MapInfoProfessional7.0SCP軟件中“工具/MapXGeoset工具/另存MapXGeoset”的功能將其轉(zhuǎn)換為能夠嵌入MapX中的Gst格式的文件。(3)地圖的嵌入在地圖嵌入的過程中,需要借助可視化開發(fā)工具MicrosoftVisualBasic6.0來實現(xiàn)基于MapX的地圖的嵌入功能。首先在MicrosoftVisualBasic6.0軟件中通過新建標準EXE并借助該窗口中“部件/工程”插入MapInfoMapXV5控件(即MapX控件)。其次在代碼窗口中加入相應的代碼,以下是實例中地圖嵌入的主要代碼說明:Map1.GeoSet=App.Path&"\map\河南工程學院校本部.gst"在該句代碼中Map1指MapX控件名稱(在下文中的Map1代表相同的意義);GeoSet指MapX控件加載Gst文件的屬性;“=”右邊指的是Gst格式的校園電子圖的絕對路徑。另外地圖的嵌入并不僅僅指的是基于MapX控件將Gst格式電子地圖嵌入可視化開發(fā)環(huán)境中而且還需為該電子地圖設(shè)置對應的地圖顯示的坐標系以及處理數(shù)字坐標的坐標系如X-Y坐標的處理。在Gst格式的電子地圖中對于每一幅地圖都有其特定的坐標系,其中包括控制地圖顯示的坐標系和處理數(shù)字坐標的坐標系,無論哪一個坐標系設(shè)置出錯都會影響最終結(jié)果。地圖顯示的坐標系是在生成Gst格式的電子地圖的過程中已經(jīng)設(shè)置了相應的投影;對于處理數(shù)字坐標的坐標系則需要通過MapX控件的NumericCoordSys對象來設(shè)置,使用的方法是MapX.NumericCoordSys.Set方法來設(shè)置所需的處理X-Y坐標的坐標系或者為MapX.NumericCoordSys屬性賦予一個CoordSys對象。在本實例開發(fā)過程中其地圖顯示的坐標系已經(jīng)在格式轉(zhuǎn)換過程中設(shè)置投影為Non-Earth(meters),而處理X-Y坐標的坐標系的主要代碼如下:Map1.NumericCoordSys.Set0,,iUnits,0,,,,,,,,,RECT對于上句代碼需要說明的是:RECT是已經(jīng)申明過的用來表示坐標系中外部邊界的Rectangle對象。4.3房地產(chǎn)地圖操作功能的實現(xiàn)在4.2節(jié)中實現(xiàn)了基于MapX的房地產(chǎn)地圖數(shù)據(jù)的嵌入,但是這并不能夠完成對地圖的操作,那么在本節(jié)中將會詳細介紹地圖操作功能的實現(xiàn)。由于在MapX中對地圖操作功能具有多種,而該實例所需要完成的操作功能已經(jīng)在4.1節(jié)中作過詳細的介紹。首先我們來看看地圖的基本操作功能的實現(xiàn),該項功能主要是利用了MapX控件中自帶的標準工具來實現(xiàn)的。其代碼編寫過程中是借助Map對象的CurrentTool這一屬性的設(shè)置來完成的。該實例中相關(guān)主要代碼如下:Map1.CurrentTool=miZoomInTool‘地圖的放大Map1.CurrentTool=miZoomOutTool‘地圖的縮小Map1.CurrentTool=miPanTool‘地圖的漫游Map1.Bounds=Map1.Layers.Bounds‘地圖的居中說明:CurrentTool表示Map1的當前工具屬性,Bounds表示Map1的范圍屬性,通過給這些屬性賦予規(guī)定的值后,便可完成這些基本功能。其次是對地圖其他操作功能的實現(xiàn),如地圖圖層控制功能的實現(xiàn)是通過以下代碼實現(xiàn):Map1.Layers.LayersDlg‘圖層控制說明:LayerDlg是Map1對象中圖層的一個屬性,用以彈出圖層控制對話框,并且在該對話框中可以實現(xiàn)圖層的添加、移除、移動以及圖層的可見性的設(shè)置,同時還能夠?qū)D層中點、線、面的樣式以及標簽進行必要的設(shè)置,如圖4-2所示:圖4-2圖層控制對話框另外量測功能也是地圖的基本功能之一,由于MapX控件中并沒有包裝相對應的距離量測和面積量測,所以要想實現(xiàn)量測功能必須通過MapX控件所提供的“創(chuàng)建定制工具”的方法來完成。因為面積量測和距離量測在實現(xiàn)的過程是大同小異的,所以下面將會以距離量測為例進行主要的說明。要想實現(xiàn)距離量測功能需要以下完成三個步驟:第一步:申明定制工具常數(shù)在此步驟中首先需要我們做的是申明常數(shù)addDistance等于995來作為該實例中距離量測的自定義工具。然后就是在裝載該房地產(chǎn)地圖時加入以下代碼來實現(xiàn)自定義工具的創(chuàng)建。ConstaddDistanceAsInteger=995‘量測距離第二步:創(chuàng)建自定義的Polytool工具在申明之后便可對量測工具進行創(chuàng)建,在創(chuàng)建定制工具的過程中需要三個參數(shù)包括ToolNumber參數(shù)和Type參數(shù)以及Cursor參數(shù),其中ToolNumber參數(shù)指的是第一步中申明的常量;Type參數(shù)指定制工具在MapX地圖的行為方式;Cursor參數(shù)指當前地圖上光標的形狀。在該實例中創(chuàng)建量測工具的代碼如下:Map1.CreateCustomTooladdDistance,miToolTypePoly,miCrossCursor’創(chuàng)建測距說明:addDistance表示已經(jīng)申明的常數(shù);miToolTypePoly表示用戶可以通過多次單擊來實現(xiàn)折線的繪制;miCrossCursor表示十字光標。第三步:定義地圖的當前工具該步的操作和定義基本功能類似,也是通過Map1對象的CurrentTool屬性來設(shè)置,如:Map1.CurrentTool=995。對該句需要說明的是“=”右邊的995便是在前兩步中所創(chuàng)建的量距工具。第四步:完成定制工具的處理程序前三個步驟只是完成了量測工具在地圖上的行為方式以及對應坐標的獲取,但是并未對量距結(jié)果計算與顯示。在第二步已經(jīng)明確了所創(chuàng)建的是Polytools工具,則在編寫處理程序時應將代碼添加到PolyToolUsed事件中。只有在該事件中MapX控件才會自動調(diào)用以便使所定義的工具生效。以下便是實例開發(fā)過程中完成定制的量距工具的處理程序的主要代碼:Fori=1ToPoints.Count-1X1=Points.Item(i).XY1=Points.Item(i).YX2=Points.Item(i+1).XY2=Points.Item(i+1).Ydis=Map1.Distance(X1,Y1,X2,Y2)Nexti該段代碼說明:(1)Pointss是Map1對象的點集合,該點集合是只有在使用了PolyToolUsed事件是才有效的一個點集合,并且此集合中所存儲的點是用戶多次點擊地圖時的點坐標,量距結(jié)果的計算便是利用該集合中的點。(2).Item(i)是對Points集合中點的引用方法;同理.X和.Y分別是對點X坐標、Y坐標的引用。(3)Distance是MapX控件所封裝的計算兩點之間距離的函數(shù),量距結(jié)果的輸出便是借助該函數(shù)得以實現(xiàn)。而對于面積的量測功能雖然在實現(xiàn)過程與量距非常相似,但是在這幾個步驟中也存在一定的差異。比如:在申明常量時需要重新申明另外一個不相同并且容易區(qū)分的常數(shù);定制的面積工具在地圖的行為方式改為miToolTypePolygon,并用以表示用戶在地圖上繪制多邊形的行為方式;另外在計算過程中MapX并沒有提供相對應的函數(shù),在這里主要是通過Map1的FeatureFactory對象創(chuàng)建一個圖元,并利用該圖元的Area屬性獲取面積。在實例中面積量測的主要代碼如下:ConstaddAreaAsInteger=996‘申明測面常數(shù)Map1.CreateCustomTooladdArea,miToolTypePolygon,miCrossCursor‘創(chuàng)建工具SetArea_Fea=Form1.Map1.FeatureFactory.CreateRegion(Points)‘創(chuàng)建圖元Fea_Area=Area_Fea.Area‘面積獲取說明:Points同量距中一樣;FeatureFactory.CreateRegion是創(chuàng)建臨時圖元的一種方法。另一方面,要實現(xiàn)精確的量測功能需要做到節(jié)點的捕捉。那么接下來就是對節(jié)點捕捉、投影(坐標系)、實時顯示坐標等輔助功能的介紹,如下:節(jié)點捕捉:該功能主要利用Map1對象的SnapToNodeSupport屬性和SnapTolerance屬性。當SnapToNodeSupport屬性為Ture時表示啟用節(jié)點匹配功能而SnapTolerance屬性取1到50之間的整數(shù)指,其表示匹配節(jié)點時的允差。其主要代碼如下:Map1.SnapToNodeSupport=True‘啟用捕捉Map1.SnapTolerance=1‘允差投影(坐標系):該功能主要是通過Map1中DisplayCoordSys對象的PickCoordSys屬性來調(diào)用,投影(坐標系)的選擇對話框。其主要代碼如下:Map1.DisplayCoordSys.PickCoordSys坐標的實時顯示:該功能的實現(xiàn)主要是在Map1對象的MouseMove事件中利用Map1對象的ConvertCoord函數(shù)來將當前鼠標的屏幕坐標轉(zhuǎn)換地圖坐標并通過控件顯示。其主要代碼如下:Map1.ConvertCoordX,Y,X11,Y11,miScreenToMap‘坐標轉(zhuǎn)換4.4房地產(chǎn)專題圖的制作與其操作房地產(chǎn)專題圖指的是利用房地產(chǎn)某些特定的數(shù)據(jù)進行對房地產(chǎn)地圖的渲染過程。房地產(chǎn)專題地圖的制作可以使房地產(chǎn)的某些數(shù)據(jù)圖形化,這樣一來便可為房地產(chǎn)管理部門在地圖上更加直觀的查看,同時也為他們在數(shù)據(jù)的統(tǒng)計和分析方面提供了有力依據(jù)。在房地產(chǎn)專題的制作過程中開發(fā)者可以通過多種方式進行數(shù)據(jù)的圖解,并且能夠是這種圖解方式多樣化,最終實現(xiàn)數(shù)據(jù)的分析和可視化。作為一個強大的功能,其實現(xiàn)的方法是通過Theme對象的Add方法,該語法如下:Themes.Add

[Type]

,

[Field]

,

[Name]說明:Type指的是該語法的一個參數(shù),該參數(shù)明確了創(chuàng)建專題圖的類型,也就是說數(shù)據(jù)圖形化的表現(xiàn)形式。另外該參數(shù)是一個可選參數(shù),在不指定該參數(shù)的情況下,MapX將會自動選擇合適的一個類型,如果沒有合適的類型那么將會產(chǎn)生錯誤;Field參數(shù)指的是數(shù)據(jù)綁定過程中其Fields集合的字段名或者對于的索引,同樣這也是個可選參數(shù),在不指定的情況下,MapX會默認選擇所綁定的Dataset對象的第一個字段;Name參數(shù)指專題圖的名稱,作為一個字符串參數(shù),如果不指定其值,MapX將會自動生成。在該實例開發(fā)中,根據(jù)用戶要求對房產(chǎn)面積、房價、樓層數(shù)三方面制作了專題圖。下面是對房價專題的開發(fā)過程(以房價專題圖為例):第一:房地產(chǎn)屬性數(shù)據(jù)字典的建立這里是通過要Access軟件建立一個名為“河南工程學院校本部.MDB”的數(shù)據(jù)庫,并在其中建立張名稱為“建筑物”的表。在全面考慮到其各方面屬性的情況下,設(shè)置了相應字段,如表4-1:表4-1建筑物圖層的表結(jié)構(gòu)字段名稱ID建筑物名稱面積樓層數(shù)房間數(shù)房價備注權(quán)屬字段類型整型文本雙精度雙精度整型雙精度文本文本第二:房價信息的綁定房地產(chǎn)信息的綁定主要是借助MapX對象的Fields集合,并利用Fields集合的Add方法將源數(shù)據(jù)中”面積“、“ID”字段的數(shù)據(jù)添加到Fields集合中。同時通過給Datasets的Fields參數(shù)賦予所添加過的的Fields集合,最終實現(xiàn)房價信息的綁定。整個綁定過程的主要代碼如下:Flds.Add"ID","ID"‘添加ID字段Flds.Add"面積","面積(平方米)"‘添加面積字段SetDs=Map1.DataSets.Add(miDataSetADO,Rs,"Dss1","ID",,"建筑物",Flds)‘房價信息的綁定說明:Flds是已經(jīng)申明過的Fields類型的數(shù)據(jù)變量;Flds.Add方法中的第一個參數(shù)“ID”和“面積”是指源數(shù)據(jù)中的字段,而第二個參數(shù)“ID”和“面積(平方米)”代表的是添加到Fields中名稱;對于Datasets.Add的使用參考3.2.2節(jié);同時還需另外說明的是要想實現(xiàn)此功能還需要在借助MapInfoProfessional7.0軟件的“表\維護\表結(jié)構(gòu)”功能來創(chuàng)建“ID”的索引。第三:房價主題的創(chuàng)建房價主題的創(chuàng)建利用Themes.Add

方法實現(xiàn)的,對于該方法已經(jīng)在本節(jié)的最開始作了詳細的介紹,下面就是實例中的主要代碼:SetTheme1=Ds.Themes.Add(miThemeAuto,2,,True)說明:Theme1和Ds分別是已經(jīng)申明過的Theme變量和Dataset變量;對于Themes.Add方法的第四個參數(shù)Ture表示MapX控件自動對原始參數(shù)的計算,從而實現(xiàn)專題圖的制作。經(jīng)過上述三個步驟實現(xiàn)的房地產(chǎn)面積專題圖如圖4-3:圖4-3房產(chǎn)面積專題圖而在某些情況下,專題圖制作并不能夠嚴格滿足管理者要求,這時開發(fā)者需要實現(xiàn)對專題圖操作的功能。專題圖的操作通常有三種途徑:第一種方式式是通過Theme.ThemeDlg方法來調(diào)用MapX自帶的專題圖控制的對話框,可以使用戶更加直接的對專題圖特性作必要的修改。雖然這種方式使得對程序控件方面的難度加大,但是該方式把專題圖的全部控制權(quán)交給了用戶。第二種方式是利用更改ThemeProPerties對象的屬性來實現(xiàn)專題圖的操作,該對象主要是對專題圖的顏色、符號等方面的定義。這種方式使開發(fā)者可以制作自己的界面滿足管理者要求,同時該對象的許多屬性又具有其他對象是開發(fā)者可以進行深層次的開發(fā)與控制。第三種途徑是自定義圖例來實現(xiàn)對專題圖的操作。同樣在定義專題圖圖例的時候可以通過Legend對象的LegendDlg屬性來調(diào)用默認對話框,并在該對話框中進行相應設(shè)置以實現(xiàn)專題圖圖例修改。同時也可以對Theme對象的Legend屬性進行必要的修改與設(shè)置。在該實例開發(fā)中對專題圖操作采用了第一種方式,其主要代碼如下:Map1.DataSets("Dss1").Themes(1).ThemeDlg‘面積專題操作Map1.DataSets("Dss2").Themes(1).ThemeDlg‘樓層專題操作Map1.DataSets("Dss3").Themes(1).ThemeDlg‘房價專題操作4.5房地產(chǎn)信息查詢與編輯功能的實現(xiàn)信息的查詢的查詢主要有兩種方式:其一是在地圖上點取之后顯示其屬性信息;其二是從屬性信息表中查詢滿足條件的記錄后定位到地圖上并實現(xiàn)該實體圖元的亮顯與放大。而對于信息的編輯主要是借助了VB中提供的Adodc控件對數(shù)據(jù)的綁定和DataGrid控件對數(shù)據(jù)的顯示,并且在DataGrid控件上可以直接對顯示的數(shù)據(jù)進行編輯。該實例開發(fā)中此功能實現(xiàn)的步驟如下:第一:數(shù)據(jù)字典的建立在數(shù)據(jù)字典建立方面主要是利用Access數(shù)據(jù)庫分別對建筑物圖層、其他用地圖層、綠化用地圖層建立了對應的表數(shù)據(jù)。而對于建筑物圖層建立的“建筑物”表的具體過程在4.3節(jié)中作了詳細介紹,由于其他用地圖層和綠化用地圖層的建表過程和建筑物圖層是類似的,所以在這里就不做過多說明,對于其表結(jié)構(gòu)分別見表4-2和4-3。表4-2其他用地圖層的表結(jié)構(gòu)字段名ID名稱面積權(quán)屬備注類型整形文本雙精度型文本文本表4-3綠化用地圖層的表結(jié)構(gòu)字段名ID名稱面積權(quán)屬備注字段名ID名稱類型整形文本雙精度型文本文本類型整形文本第二:地圖數(shù)據(jù)關(guān)聯(lián)到屬性數(shù)據(jù)由于MapX中并未提供點選后顯示相應屬性信息的工具,所以在該步驟中首先是創(chuàng)建自定義工具,其主要代碼如下:ConstI_selectAsInteger=997‘點查詢變量Map1.CreateCustomToolI_select,miToolTypePoint,miCrossCursor‘工具的創(chuàng)建CurrentTool=miSelectTool‘引用當前工具在點查詢工具創(chuàng)建后便可以通過該工具實現(xiàn)地圖數(shù)據(jù)的查詢,該查詢是借助Map1對象的ToolUsed事件,其相應的代碼也是編寫在該事件中的。其主要代碼如下:pt.SetX1,Y1‘創(chuàng)建點Setf=Map1.Layers("建筑物").SearchAtPoint(pt)‘地圖數(shù)據(jù)查詢Adodc1.RecordSource="select*From建筑物whereID="&Map1.Layers("建筑物").SearchAtPoint(pt).Item(1).FeatureID‘地圖數(shù)據(jù)關(guān)聯(lián)屬性數(shù)據(jù)說明:pt指的是已經(jīng)申明過的MapXLib.Point類型變量;pt.Set指創(chuàng)建點的方法;f指的是已經(jīng)申明過的Features類型變量;Record

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論