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