mapgis二次開(kāi)發(fā)培訓(xùn)教程_第1頁(yè)
mapgis二次開(kāi)發(fā)培訓(xùn)教程_第2頁(yè)
mapgis二次開(kāi)發(fā)培訓(xùn)教程_第3頁(yè)
mapgis二次開(kāi)發(fā)培訓(xùn)教程_第4頁(yè)
mapgis二次開(kāi)發(fā)培訓(xùn)教程_第5頁(yè)
已閱讀5頁(yè),還剩400頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

201/405MAPGIS二次開(kāi)發(fā)培教程

前言MAPGIS二次開(kāi)發(fā)培教程 MAPGIS是武漢中地信息工程有限公司研制的具有自主版權(quán)的大型基礎(chǔ)地理信息系統(tǒng)平臺(tái)。它是一個(gè)集當(dāng)代最先進(jìn)的圖形、圖像、地質(zhì)、地理、遙感、測(cè)繪、人工智能、計(jì)算機(jī)科學(xué)于一體的大型智能軟件系統(tǒng),是集數(shù)字制圖、數(shù)據(jù)庫(kù)管理及空間分析為一體的空間信息系統(tǒng),是進(jìn)行現(xiàn)代化管理和決策的先進(jìn)工具。MAPGIS連續(xù)四年在全國(guó)GIS測(cè)評(píng)中名列第一,并成為唯一連續(xù)四年獲得國(guó)家科技部向社會(huì)推薦的國(guó)產(chǎn)GIS軟件平臺(tái)。 中地軟件叢書(shū)之MAPGIS二次開(kāi)發(fā)培訓(xùn)教程是根據(jù)最新推出的MAPGIS軟件平臺(tái)編寫(xiě)而成,主要介紹進(jìn)行MAPGIS二次開(kāi)發(fā)必須具備的基礎(chǔ)知識(shí)、主流開(kāi)發(fā)工具以及MAPGIS系統(tǒng)的基本概念、結(jié)構(gòu)體系和操作方法。該教程分為三個(gè)部分,共十一講。其中:第一部分(即第一講的內(nèi)容):介紹Windows編程的概念。包括類(lèi)與數(shù)據(jù)封裝、繼承、重載、虛擬函數(shù)與多態(tài)性以及內(nèi)存管理。該部分為可視化編程的基礎(chǔ),有可視化編程經(jīng)驗(yàn)的讀者可以略過(guò)此講,直接進(jìn)入下一部分的學(xué)習(xí)。 第二部分(即第二講的內(nèi)容):編程工具VC。對(duì)于在VC這樣一個(gè)編程環(huán)境中開(kāi)發(fā)應(yīng)用程序所應(yīng)熟悉的概念,術(shù)語(yǔ)和最基本的框架、構(gòu)件實(shí)現(xiàn)過(guò)程等知識(shí)做了一個(gè)簡(jiǎn)明扼要的介紹。已掌握一定VC編程基礎(chǔ)知識(shí)的讀者可以略過(guò)該部分。 第三部分(即第三講至第十一講的內(nèi)容):詳細(xì)講述了地理信息系統(tǒng)的基本概念(包括GIS原理概述、空間數(shù)據(jù)類(lèi)型、空間數(shù)據(jù)庫(kù)、空間數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)管理等內(nèi)容);MAPGIS的基本概念和體系結(jié)構(gòu)(簡(jiǎn)要描述了MAPGIS二次開(kāi)發(fā)的基本概念、術(shù)語(yǔ)、工作區(qū)、空間實(shí)體及其數(shù)據(jù)、C++類(lèi)組織和開(kāi)發(fā)環(huán)境介紹的內(nèi)容);MAPGIS空間數(shù)據(jù)存取和屬性編輯(包括工作區(qū)、空間實(shí)體和屬性的操作及其網(wǎng)絡(luò)介紹);圖形顯示輸出及窗口操作、圖形編輯、類(lèi)庫(kù)和控件開(kāi)發(fā);矢量空間分析和屬性查詢;投影變換、圖框生成和工程管理;圖庫(kù)管理和查詢系統(tǒng)(包括基于圖庫(kù)的應(yīng)用程序開(kāi)發(fā)、MAPGIS圖庫(kù)介紹、開(kāi)發(fā)的一般步驟以及結(jié)合圖庫(kù)顯示說(shuō)明圖庫(kù)主要函數(shù)的功能等方面的內(nèi)容)以及圖象分析與處理。這一部分為本教程的主要部分,能使大家從了解到熟練掌握這個(gè)部分的內(nèi)容也是我們編制本書(shū)的主要目的,同時(shí)它還可被作為MAPGIS二次開(kāi)發(fā)過(guò)程中的參考來(lái)使用。 參加本書(shū)編寫(xiě)的人員主要是本系統(tǒng)的軟件開(kāi)發(fā)人員以及長(zhǎng)期從事MAPCAD和MAPGIS培訓(xùn)的教師。由于時(shí)間倉(cāng)促,書(shū)中難免存在錯(cuò)誤和不當(dāng)之處,敬請(qǐng)廣大用戶及讀者提出寶貴意見(jiàn)和建議,以利改進(jìn)。 中地軟件叢書(shū)編委會(huì) 2001年10月目錄TOC\o"1-3"\h\z第一講基于WINDOWS編程的基礎(chǔ)知識(shí) 11.1引言 11.2類(lèi)與數(shù)據(jù)封裝 11.3繼承 21.4重載 41.5虛擬函數(shù)與多態(tài)性 5第二講編程工具VC 82.1熟悉VC開(kāi)發(fā)環(huán)境 82.2消息與命令 82.3文檔、視結(jié)構(gòu) 102.4圖形設(shè)備接口 112.5對(duì)話框和控件 122.6編程規(guī)范 13第三講地理信息系統(tǒng)基本概念 153.1GIS原理概述 153.2GIS空間數(shù)據(jù)類(lèi)型 173.3GIS數(shù)據(jù)管理 183.4空間分析 203.5地理信息系統(tǒng)發(fā)展 20第四講MAPGIS的基本概念和體系結(jié)構(gòu) 224.1MAPGIS二次開(kāi)發(fā)的基本概念 224.2MAPGIS基本術(shù)語(yǔ) 234.3MAPGIS的數(shù)據(jù)管理(工作區(qū)) 254.4MAPGIS的空間實(shí)體及其數(shù)據(jù)組織 274.5MAPGIS的C++類(lèi)組織 294.6MAPGIS的VC++開(kāi)發(fā)環(huán)境介紹 30第五講MAPGIS空間數(shù)據(jù)存取和屬性編輯 325.1工作區(qū)操作 325.2空間實(shí)體操作 345.3屬性(屬性結(jié)構(gòu))操作 375.4網(wǎng)絡(luò)介紹 44第六講圖形顯示輸出及窗口處理 456.1圖形顯示輸出 456.2窗口處理 496.3類(lèi)庫(kù)開(kāi)發(fā)中的圖形顯示和窗口處理 51第七講圖形編輯、類(lèi)庫(kù)和控件開(kāi)發(fā) 537.1圖形編輯開(kāi)發(fā)概要 537.2圖形編輯API函數(shù)開(kāi)發(fā) 537.3MAPGIS類(lèi)庫(kù)開(kāi)發(fā) 547.4MAPGIS控件開(kāi)發(fā) 60第八講矢量空間分析和屬性查詢 668.1矢量空間分析 668.2屬性查詢檢索 71第九講投影變換和圖框生成 739.1投影變換(projdll.h、cordcvt.h) 739.2圖框生成(frmdll32.h) 83第十講圖庫(kù)管理和工程管理 9110.1MAPGIS圖庫(kù)簡(jiǎn)介 9110.2基于圖庫(kù)的應(yīng)用程序的開(kāi)發(fā) 9210.3結(jié)合圖庫(kù)的顯示說(shuō)明圖庫(kù)中主要函數(shù)的功能 9210.4工程管理(prj_disp.h和map_prj.h) 96第十一講MAPGIS圖象處理和分析 10111.1遙感圖象處理的基本知識(shí) 10111.2處理方法 10111.3主要API介紹 9911.4組件介紹 10711.5在VC中的開(kāi)發(fā)過(guò)程(結(jié)合示例程序講解) 10811.6示例程序說(shuō)明 109附錄MAPGIS二次開(kāi)發(fā)問(wèn)題集錦 1101.屬性和屬性結(jié)構(gòu) 1102.空間實(shí)體操作問(wèn)題 1233.顯示、編輯問(wèn)題 1244.空間分析問(wèn)題 1315.數(shù)字高程模型 1316.安裝問(wèn)題 1347.工程問(wèn)題 1358.輸出問(wèn)題 1369.其它 138第一講基于WINDOWS編程的基礎(chǔ)知識(shí)1.1引言1.1.1過(guò)程化(proceduralprogramming):程序被認(rèn)為是在一個(gè)數(shù)據(jù)集合上進(jìn)行的一系列操作。1.1.2結(jié)構(gòu)化(structuredprogramming):主要思想是:功能分解并逐步求精。1.1.3面向?qū)ο蟮某绦蛟O(shè)計(jì)(object_orientedprogramming):實(shí)質(zhì)是把數(shù)據(jù)和處理這些數(shù)據(jù)的過(guò)程合并為一個(gè)單獨(dú)的“對(duì)象”――一個(gè)具有確定特性的自完備的實(shí)體。1.1.4面向?qū)ο蟪绦蛟O(shè)計(jì)的特征:1)封裝2)繼承3)多態(tài)1.2類(lèi)與數(shù)據(jù)封裝1.2.1什么是類(lèi)?簡(jiǎn)單的說(shuō),類(lèi)就是一種用戶定義的數(shù)據(jù)類(lèi)型,跟結(jié)構(gòu)類(lèi)似;并且,類(lèi)具有自己的成員變量和成員函數(shù)(方法),通過(guò)它們可以對(duì)類(lèi)自身進(jìn)行操作。如:汽車(chē)可以看作是發(fā)動(dòng)機(jī)、車(chē)輪、座椅等諸如此類(lèi)的集合。也可以從功能的角度來(lái)研究,譬如,能移動(dòng),加速,減速,剎車(chē)等。例如:classCMyClass1{protected: CMyClass1();public: virtual~CMyClass1();}1.2.2封裝(encapsulation)定義:指能夠把一個(gè)實(shí)體的信息、功能、響應(yīng)都裝入一個(gè)單獨(dú)的對(duì)象中的特性。封裝的優(yōu)點(diǎn)如下:1)封裝允許類(lèi)的客戶不必關(guān)心類(lèi)的工作機(jī)理就可以使用它。就象駕駛員不必了解發(fā)動(dòng)機(jī)的工作原理就可以駕駛汽車(chē)一樣,類(lèi)的客戶在使用一個(gè)類(lèi)時(shí)也不必了解它是如何工作的,而只需了解它的功能即可。2)所有對(duì)數(shù)據(jù)的訪問(wèn)和操作都必須通過(guò)特定的方法,否則便無(wú)法使用,從而達(dá)到數(shù)據(jù)隱藏的目的。1.2.3對(duì)象對(duì)象就是類(lèi)的實(shí)例。類(lèi)與對(duì)象的關(guān)系就如類(lèi)型和變量的關(guān)系,所有對(duì)類(lèi)的操作都必須通過(guò)對(duì)象來(lái)實(shí)現(xiàn)。當(dāng)一個(gè)類(lèi)定義了多個(gè)對(duì)象時(shí),每個(gè)對(duì)象擁有各自的成員數(shù)據(jù)。1.2.4類(lèi)的三種成員類(lèi)型1)私有成員(private):缺省情況下,一個(gè)類(lèi)中的所有成員都是私有的。私有成員只能被類(lèi)本身的成員函數(shù)訪問(wèn)。并且不具有繼承性。2)公有成員(public):公有成員可以被類(lèi)成員函數(shù)和外部函數(shù)使用。3)保護(hù)成員(protected):類(lèi)的保護(hù)成員能被類(lèi)及其派生類(lèi)的成員函數(shù)和友員函數(shù)使用,具有繼承性。1.2.5構(gòu)造函數(shù)與析構(gòu)函數(shù)1)構(gòu)造函數(shù)a.是特殊的成員函數(shù);在創(chuàng)建對(duì)象時(shí)首先由系統(tǒng)自動(dòng)調(diào)用。它的作用是為新創(chuàng)建的對(duì)象分配空間,或?yàn)樵搶?duì)象的成員變量賦值等;b.構(gòu)造函數(shù)名必須與其類(lèi)名稱(chēng)完全相同,并且不允許有返回值。2)析構(gòu)函數(shù)a.析構(gòu)函數(shù)是構(gòu)造函數(shù)的逆操作;b.析構(gòu)函數(shù)在類(lèi)名之前加~來(lái)命名,它不允許有返回值,也不允許帶參數(shù),并且一個(gè)類(lèi)只能有一個(gè)析構(gòu)函數(shù)。1.3繼承1.3.1傳統(tǒng)程序設(shè)計(jì)的缺點(diǎn):增加功能對(duì)程序所作的修改工作量非常大。1.3.2繼承的優(yōu)點(diǎn):繼承的方法允許在不改動(dòng)原程序的基礎(chǔ)上對(duì)其進(jìn)行擴(kuò)充,這樣使得原功能得以保存,而新功能也得以擴(kuò)展。這有利于減少重復(fù)編碼,提高軟件的開(kāi)發(fā)效率。1.3.3基類(lèi)與派生類(lèi)1)一個(gè)類(lèi)可以繼承其它類(lèi)的成員,被繼承的類(lèi)叫基類(lèi)或父類(lèi);繼承類(lèi)叫派生類(lèi)或子類(lèi)2)派生類(lèi)不但擁有自己的成員變量和成員函數(shù),還擁有父類(lèi)的成員變量和成員函數(shù)。1.3.4類(lèi)的保護(hù)成員(protected)前面介紹了類(lèi)的私有成員只能被類(lèi)的成員函數(shù)和友員函數(shù)使用;類(lèi)的保護(hù)成員能被類(lèi)及其派生類(lèi)的成員函數(shù)和友員函數(shù)使用。也就是說(shuō),類(lèi)的保護(hù)成員具有繼承性,而類(lèi)的私有成員不具有繼承性。1.3.5公用基類(lèi)和私有基類(lèi)1)公用基類(lèi)中的所有public成員在派生類(lèi)中仍是public成員,所有protected成員在派生類(lèi)中仍是protected成員。2)私有基類(lèi)中的public成員和protected成員在派生類(lèi)中均變成private成員。1.3.6多重繼承1)多重繼承的定義方法例子:classA{…public:inti;voidfunc1();…};classB{…public:inti;voidfunc1();…};classC:publicA,B{…voidShow()…};缺省情況下基類(lèi)被定義為private;因此基類(lèi)B為私有基類(lèi)。2)繼承的不確定性例子:classC:publicA,B{…voidShow(){j=i*i;func1();}…};由于基類(lèi)A和B中同時(shí)擁有數(shù)據(jù)成員i和成員函數(shù)func1,類(lèi)C引用基類(lèi)的成員時(shí),系統(tǒng)無(wú)法分辨是調(diào)用哪一基類(lèi)的成員而發(fā)生錯(cuò)誤;3)解決多重繼承的不確定性:使用域操作符指明要調(diào)用的基類(lèi),即可解決不確定性問(wèn)題。classC:publicA,B{…intj;voidShow(){ j=A::i*B::i;A::func1();}…};1.3.7多層繼承定義:所謂多層繼承指的是從一個(gè)類(lèi)派生出另一個(gè)類(lèi),然后以派生類(lèi)作為基類(lèi),派生出另一個(gè)類(lèi),直到最后生成的派生類(lèi)滿足需要為止(見(jiàn)MSDN中的HierarchyChart)。1.3.8派生類(lèi)的構(gòu)造函數(shù)與析構(gòu)函數(shù)在繼承關(guān)系下,派生類(lèi)的構(gòu)造函數(shù)負(fù)責(zé)調(diào)用基類(lèi)的構(gòu)造函數(shù)來(lái)設(shè)置基類(lèi)數(shù)據(jù)成員值。例:classbase{//基類(lèi)…public:inti;base(intj){//構(gòu)造函數(shù)i=j;}…};classderived:publicbase{//派生類(lèi)…public:doublef;derived(int,double);…};derived::derived(intk,doublel):base(k){//派生類(lèi)構(gòu)造函數(shù)…f=l;…}1.3.9構(gòu)造函數(shù)的調(diào)用順序1)在定義派生類(lèi)對(duì)象時(shí),系統(tǒng)首先調(diào)用基類(lèi)的構(gòu)造函數(shù),然后調(diào)用派生類(lèi)的構(gòu)造函數(shù);在上例中,derived類(lèi)首先調(diào)用base類(lèi)的構(gòu)造函數(shù),然后調(diào)用自身的構(gòu)造函數(shù)。2)析構(gòu)函數(shù)的調(diào)用順序與構(gòu)造函數(shù)的調(diào)用順序相反。1.4重載1.4.1函數(shù)重載1)如果函數(shù)有相同的名稱(chēng)和返回值,而有不同的參數(shù)個(gè)數(shù)或參數(shù)類(lèi)型,則這些函數(shù)就是重載函數(shù)。2)派生類(lèi)繼承了基類(lèi)的某一函數(shù),并且又自定義了一個(gè)同名函數(shù),有相同的返回值,不同的參數(shù)類(lèi)型或參數(shù)個(gè)數(shù)。這種情況不屬于重載。因?yàn)樗鼈儗儆诓煌挠颉?)例:classbase{…voidfunc(inti){ …}voidfunc(doublef){ …}voidfunc(doublef,longq){ …}…};1.4.2操作符重載重載操作符的定義:返回值類(lèi)型operatorop(參數(shù)表);其中,op為重載操作符,它必須是VC++中所定義的運(yùn)算符。然后像定義函數(shù)一樣定義重載操作符函數(shù)。例子:classperson{ …intage;voidoperator++();…};voidperson::operator++(){age++;}1.5虛擬函數(shù)與多態(tài)性多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計(jì)的精髓之所在,也是C++中最難理解和掌握的部分。在C++中,多態(tài)性是建立在虛擬函數(shù)基礎(chǔ)上的,虛擬函數(shù)的使用使類(lèi)的成員函數(shù)表現(xiàn)出多態(tài)性。1.5.1虛擬函數(shù)1)函數(shù)的定義:在定義類(lèi)時(shí)在其成員函數(shù)前加上關(guān)鍵字virtual;2)如果基類(lèi)中成員函數(shù)定義為虛函數(shù),則派生類(lèi)中與其定義完全相同的成員函數(shù),編譯器自動(dòng)將其視為虛函數(shù);3)只有類(lèi)的成員函數(shù)才能定義為虛函數(shù)。4)虛擬成員函數(shù)的存取要看首次定義它的類(lèi)中,該函數(shù)是public還是private。例:classInsect{…virtualboolCanFly();…};boolInsect::CanFly(){returnFALSE;}classButterfly:publicInsect{…boolCanFly();…};boolButterfly::CanFly(){returnTRUE;}1.5.2虛函數(shù)的調(diào)用根據(jù)對(duì)象的不同而去調(diào)用不同類(lèi)的虛擬函數(shù)可以使用基類(lèi)對(duì)象調(diào)用派生類(lèi)對(duì)象,即將派生類(lèi)對(duì)象或指針賦值給基類(lèi)對(duì)象或指針。反方向的賦值(將基類(lèi)的對(duì)象或指針賦給派生類(lèi)的對(duì)象或指針)是危險(xiǎn)的。例:bool rtn;Insect inc1,*pInc;Butterfly btfly;pInc=&inc1; //pInc指針指向Insect對(duì)象rtn=pInc->CanFly(); //返回FALSEpInc=&btfly; //pInc指針指向Butterfly對(duì)象rtn=pInc->CanFly(); //返回TRUE1.5.3虛擬函數(shù)與重載函數(shù)的區(qū)別1)形式上,重載函數(shù)要求有相同的返回值類(lèi)型和函數(shù)名,并有不同的參數(shù)序列;而虛擬函數(shù)要求三者完全相同。2)重載函數(shù)可以是成員函數(shù)或非成員函數(shù);而虛擬函數(shù)必須是成員函數(shù)。3)調(diào)用方法上,重載函數(shù)根據(jù)所傳遞的參數(shù)序列的差別作為調(diào)用的依據(jù);而虛擬函數(shù)則根據(jù)調(diào)用對(duì)象的不同而去調(diào)用不同類(lèi)的函數(shù)。4)虛擬函數(shù)在運(yùn)行時(shí)表現(xiàn)出多態(tài)功能;而重載函數(shù)不具有這一功能。1.5.4純虛函數(shù)定義:virtualtypefuncname(parameter)=0;C++中有時(shí)設(shè)計(jì)基類(lèi)就是為了被繼承,而基類(lèi)中的虛擬函數(shù)不做任何工作,這種情況下可以將基類(lèi)中的虛擬函數(shù)定義為純虛函數(shù)。包含純需函數(shù)的類(lèi)叫抽象類(lèi)。抽象類(lèi)不能定義對(duì)象,但可以定義指向它的指針。習(xí)題:1.1什么是類(lèi)?1.2理解封裝、繼承和多態(tài)。

第二講編程工具VC2.1熟悉VC開(kāi)發(fā)環(huán)境2.1.1VC向?qū)峁┑膸椭郧癢indows編程需要程序員編寫(xiě)大量的框架代碼,這對(duì)初學(xué)者來(lái)說(shuō)簡(jiǎn)直就是一個(gè)噩夢(mèng);并且這些框架代碼基本相同,因此Microsoft提供了向?qū)ppWizard幫助生成框架代碼,這極大的方便了我們編寫(xiě)程序。2.1.2VC向?qū)Э梢陨傻墓こ填?lèi)型ATLCOMAppWizardCustom AppWizardDatabase ProjectISAPIExtensionWizardMakefileMFCActiveXControWizardMFCAppWizard(DLL)MFCDatabaseWizardWin32ApplicationWin32ConsoleApplicationWin32DLLWin32StaticLibrary2.1.3建立第一個(gè)應(yīng)用程序:使用向?qū)ppWizard生成典型的應(yīng)用程序——基于多文檔的可執(zhí)行程序。2.1.4如何獲取幫助? Microsoft的MSDN提供了編程所需的絕大部分信息,使用F1鍵可以打開(kāi)MSDN幫助。2.2消息與命令2.2.1消息消息是Windows編程不同于其它編程方式的地方,如DOS環(huán)境下編程。消息就是操作系統(tǒng)通知應(yīng)用程序某事已發(fā)生的一種方式,如:用戶已輸入、已單擊或移動(dòng)鼠標(biāo)、打印機(jī)已空暇等。2.2.2消息傳遞1)盡管操作系統(tǒng)用整數(shù)來(lái)引用消息,但所有消息都通過(guò)它們的名字來(lái)引用。一個(gè)巨大的#define語(yǔ)句將消息名同數(shù)值聯(lián)系起來(lái)。不同消息由操作系統(tǒng)或應(yīng)用程序的不同部分處理。如,當(dāng)用戶在窗口上移動(dòng)鼠標(biāo)時(shí),窗口得到一個(gè)WM_MOUSEMOVE消息,它幾乎全部傳送給操作系統(tǒng)去處理。2)MFC允許程序員忽略底層消息,并使得在單獨(dú)類(lèi)級(jí)別上聲明每個(gè)類(lèi)處理哪些消息更容易。2.2.3消息循環(huán)1)任何windows程序的核心是消息循環(huán),這通常包含在WinMain()例程中。2)MFC通過(guò)消息映射來(lái)保持消息處理函數(shù)與消息處理信息的一致。2.2.4消息映射消息映射是進(jìn)行windows編程的一部分MFC方法,用來(lái)代替編寫(xiě)向用戶的WinProc()發(fā)送消息的WinMain()函數(shù),及編寫(xiě)檢查消息類(lèi)型的WinProc()函數(shù)。用戶只需編寫(xiě)處理消息的函數(shù),并且在用戶的類(lèi)中增加一個(gè)消息映射即可,其它一切由MFC處理。2.2.5消息映射宏在類(lèi)聲明的結(jié)尾部分,使用宏DECLARE_MESSAGE_MAP來(lái)聲明在類(lèi)定義部分需要消息映射。在*.CPP文件中使用宏BEGIN_MESSAGE_MAP和END_MESSAGE_MAP來(lái)聲明消息映射,在兩個(gè)宏之間聲明消息的映射函數(shù)。2.2.6常用消息映射宏ON_COMMAND用于將特定命令的處理委派給類(lèi)的一個(gè)成員函數(shù)。ON_MESSAGE用于將用戶自定義消息的處理委派給類(lèi)的一個(gè)成員函數(shù)。2.2.7使用ClassWizard幫助用戶捕獲消息1)帶標(biāo)簽的ClassWizard對(duì)話框通過(guò)選擇View,Classwizard或按Ctrl+W可以顯示主Classwizard對(duì)話框。在對(duì)話框的頂部有兩個(gè)下拉列表框,一個(gè)用于提示正在處理的工程文件(本例是),另外一個(gè)用于提示哪一個(gè)類(lèi)擁有正在進(jìn)行編輯的消息映射。在這兩個(gè)組合框下面是一個(gè)列表框。左邊的框列出了類(lèi)本身和用戶局面可以產(chǎn)生的所有命令。右邊的框列出了這個(gè)類(lèi)可以捕獲的所有Windows消息,也列出了許多捕獲常用消息的虛函數(shù)。 在這些框的右邊是一些按鈕,它們的作用分別是向工程文件增加新類(lèi)、向類(lèi)中增加一函數(shù)以捕獲被高亮顯示的消息、刪除正在捕獲消息的函數(shù),以及為捕獲高亮顯示消息的函數(shù)打開(kāi)源代碼口通常,用戶選中一個(gè)類(lèi),選中一個(gè)消息,并單擊AddFunction來(lái)捕獲消息。下面就是AddFunction按鈕所做的事情:將一個(gè)骨架函數(shù)添加到應(yīng)用程序源文件的末尾。在源文件的消息映射中增加一個(gè)入口。在包含文件中的消息映射中增加一個(gè)入口。更新對(duì)話框中的消息和成員函數(shù)列表。2)添加Windows消息處理函數(shù)對(duì)話框還有另外一種捕獲消息的方法。用戶可以右擊ClassView中的類(lèi)名,然后從出現(xiàn)的快捷菜單中選擇AddWindowsMessageHandler。這時(shí)將出現(xiàn)如下圖所示的對(duì)話框。2.2.8命令命令是一種特殊的消息類(lèi)型。用戶在任何時(shí)候選擇一個(gè)菜單項(xiàng),單擊一個(gè)按鈕或告訴系統(tǒng)做什么,windows都將產(chǎn)生一個(gè)命令。ClassWizard可幫助用戶捕獲命令。運(yùn)行界面與消息捕獲類(lèi)似。命令消息都通過(guò)被選擇的菜單或被單擊的按鈕的資源ID與相應(yīng)的處理函數(shù)進(jìn)行關(guān)聯(lián)。只有從CWnd派生的對(duì)象可以接收消息。每個(gè)資源ID僅關(guān)聯(lián)兩個(gè)消息:COMMAND和UPDATE_COMMAND_UI。第一個(gè)消息允許增加處理用戶選中菜單選項(xiàng)或單擊按鈕的函數(shù)一一也就是說(shuō),捕獲命令。第二個(gè)使用戶可增加一個(gè)設(shè)置菜單項(xiàng)、按鈕或者其他控件的狀態(tài)的函數(shù),就像操作系統(tǒng)即將顯示它們一樣一一也就是說(shuō),更新命令。單擊AddFunction來(lái)增加一個(gè)捕獲或更新包含額外步驟的命令。2.3文檔、視結(jié)構(gòu)2.3.1簡(jiǎn)介MFC的文檔/視圖結(jié)構(gòu)把應(yīng)用程序的數(shù)據(jù)從用戶實(shí)際瀏覽和操縱數(shù)據(jù)的方法中分離開(kāi)來(lái)。簡(jiǎn)單的說(shuō),文檔對(duì)象負(fù)責(zé)存儲(chǔ)、加載和保存數(shù)據(jù),而視圖對(duì)象允許用戶在屏幕上查看數(shù)據(jù),并用適合于應(yīng)用程序的方法編輯數(shù)據(jù)。2.3.2了解文檔CDocument類(lèi)一個(gè)文檔代表了一個(gè)數(shù)據(jù)集合,典型情況下一個(gè)文檔由用戶通過(guò)FileOpen命令打開(kāi)并通過(guò)FileSave命令保存。用戶通過(guò)與文檔關(guān)聯(lián)的CView對(duì)象操作文檔。一個(gè)文檔可以有多個(gè)視圖關(guān)聯(lián)。2.3.3了解視圖視圖是顯示存儲(chǔ)在文檔對(duì)象中的數(shù)據(jù),并允許用戶修改這些數(shù)據(jù)。視圖對(duì)象保持了一個(gè)文檔對(duì)象的指針。為了顯示和修改數(shù)據(jù),視圖對(duì)象可用這個(gè)指針訪問(wèn)文檔的成員變量。一個(gè)視圖對(duì)象只能與一個(gè)文檔對(duì)象關(guān)聯(lián)。調(diào)用OnUpdate()函數(shù)可以更新一個(gè)視圖。所有的屏幕顯示操作可在從CView繼承的派生類(lèi)的OnDraw成員函數(shù)中完成。CView類(lèi)的派生類(lèi):CCtrlView 實(shí)現(xiàn)常用控件的視圖CEditView 提供基本的文本編輯功能CRichEditView 提供復(fù)雜的文本編輯功能CFormView 通過(guò)使用對(duì)話框資源實(shí)現(xiàn)窗體式窗口CRecordView 提供了顯示數(shù)據(jù)庫(kù)記錄的功能CDaoRecordView 一般與DAO數(shù)據(jù)庫(kù)類(lèi)一起使用,其余與CRecordView相同。CScrollView 提供滾動(dòng)功能CListView 在窗口中顯示CListView控件CTreeView 在窗口中顯示CTreeView控件2.4圖形設(shè)備接口2.4.1理解設(shè)備環(huán)境1)戶能夠顯示任何形式的數(shù)據(jù),因?yàn)榇翱谥酗@示的所有東西,不論是文字、表格、位圖或是其它任何類(lèi)型的數(shù)據(jù),都是以圖形方式顯示的。2)MFC通過(guò)將windows的GDI函數(shù)和對(duì)象封裝到其設(shè)備環(huán)境(DC)類(lèi)中來(lái)幫助用戶顯示數(shù)據(jù)。3)一個(gè)設(shè)備環(huán)境(DC)就是一個(gè)數(shù)據(jù)結(jié)構(gòu),它對(duì)窗口的繪制表面的屬性保持跟蹤。這些屬性包括當(dāng)前選擇的畫(huà)筆、畫(huà)刷和用來(lái)在屏幕上繪制的字體。一個(gè)DC一次只能有一種畫(huà)筆一種畫(huà)刷和一種字體。設(shè)備環(huán)境對(duì)象封裝了畫(huà)線、寫(xiě)文本等API函數(shù),所有的畫(huà)圖操作都通過(guò)DC對(duì)象進(jìn)行。4)DC幫助Windows實(shí)現(xiàn)了設(shè)備無(wú)關(guān)性。DC能用來(lái)輸出到屏幕、打印機(jī)和元文件。什么是元文件(metafile)元文件就是由一系列可變長(zhǎng)度結(jié)構(gòu)組成的數(shù)組,圖片以設(shè)備無(wú)關(guān)的格式存儲(chǔ)在結(jié)構(gòu)中。當(dāng)元文件的記錄被轉(zhuǎn)換成設(shè)備命令并被合適的設(shè)備處理時(shí),元文件被顯示。5)CDC類(lèi)。CDC就是設(shè)備環(huán)境對(duì)象類(lèi)。CDC對(duì)象提供了操作DC的成員函數(shù)。可以通過(guò)CDC對(duì)象類(lèi)的成員函數(shù)來(lái)進(jìn)行所有的繪圖操作。6)CPaintDC類(lèi)a.CPaintDC類(lèi)繼承CDC類(lèi);b.CPaintDC類(lèi)的構(gòu)造函數(shù)自動(dòng)調(diào)用OnPaint函數(shù),接著就可以在DC中繪圖;類(lèi)的析構(gòu)函數(shù)自動(dòng)調(diào)用EndPaint函數(shù)。c.BeginPaint函數(shù)準(zhǔn)備繪圖的窗口;EndPaint函數(shù)表明結(jié)束窗口的繪圖。d.在視圖類(lèi)的OnDraw函數(shù)中,CPaintDC已經(jīng)由系統(tǒng)準(zhǔn)備好,可以直接在OnDraw中繪圖。并且CPaintDC由系統(tǒng)自動(dòng)釋放。7)CClientDC類(lèi)CClientDC對(duì)象封裝了所有對(duì)Windows客戶區(qū)DC的操作。CClientDC通過(guò)調(diào)用GetDC函數(shù)得到,通過(guò)ReleaseDC函數(shù)釋放。8)CWindowDC類(lèi)CWindowDC對(duì)象封裝了對(duì)整個(gè)window窗口,包括框架的操作。9)CMetaFileDC類(lèi)CMetaFileDC對(duì)象封裝了對(duì)一個(gè)Windows元文件的繪圖操作。但是必須自己調(diào)用OnPrepareDC函數(shù),來(lái)準(zhǔn)備設(shè)備環(huán)境。2.4.2圖形對(duì)象(GraphicObject)Windows提供了多種在DC中使用的圖形對(duì)象類(lèi)。這些類(lèi)與WindowsGDI的句柄類(lèi)型相對(duì)應(yīng)。圖形對(duì)象類(lèi)Windows句柄類(lèi)型CPen HPENCBrush HBRUSHCFont HFONTCBitmap HBITMAPCPalette HPALETTECRgn HRGN使用圖形對(duì)象的一般步驟:1)定義圖形對(duì)象,使用圖形對(duì)象類(lèi)的Create函數(shù)如CreatePen創(chuàng)建對(duì)應(yīng)的對(duì)象。2)將創(chuàng)建的圖形對(duì)象選進(jìn)當(dāng)前設(shè)備環(huán)境(DC)中,并保存舊的圖形對(duì)象。3)完成使用當(dāng)前圖形對(duì)象后,將原圖形對(duì)象選回DC中。4)保證分配的圖形對(duì)象在結(jié)束使用后被刪除。注意:如果要反復(fù)的使用一個(gè)圖形對(duì)象,可以只申請(qǐng)一次,然后在需要的時(shí)候?qū)⑵溥x入DC中。但是必須確保在不再需要使用圖形對(duì)象的時(shí)候,刪除它。2.5對(duì)話框和控件2.5.1對(duì)話框Windows應(yīng)用程序可能有多個(gè)對(duì)話框,對(duì)于每一個(gè)對(duì)話框,必須開(kāi)發(fā)兩個(gè)實(shí)體:對(duì)話框資源和對(duì)話框類(lèi)。對(duì)話框資源用于定義在屏幕上顯示的對(duì)話框和它的控件的大小和位置等信息。對(duì)話框類(lèi)是對(duì)話框和它的控件的對(duì)應(yīng)代碼。用戶可以用資源編輯器建立對(duì)話框資源,向其中增加控件和對(duì)它們進(jìn)行調(diào)整。對(duì)話框及在對(duì)話框上的控件都必須有一個(gè)用于標(biāo)識(shí)的ID。ClassWizard幫助用戶建立一個(gè)對(duì)話框類(lèi),通常由MFC類(lèi)CDialog派生而來(lái),并將資源和類(lèi)相連。通常對(duì)話框上的每一個(gè)控件對(duì)應(yīng)類(lèi)中的一個(gè)成員變量。要顯示對(duì)話框,可調(diào)用類(lèi)的成員函數(shù)??梢栽陲@示對(duì)話框前為控件設(shè)置缺省值,或使用控件對(duì)應(yīng)的成員變量設(shè)定控件值。使用ClassWizard中的MemberVariables可以為對(duì)話框上的控件本身或控件值建立對(duì)應(yīng)的類(lèi)成員變量。單擊上圖中的AddVariable按鈕,將彈出如下圖所示的AddMemberVariable對(duì)話框。 在這個(gè)對(duì)話框的Category和Variabletype下拉式組合框中可以選擇控件對(duì)應(yīng)成員變量的類(lèi)型:Value或Control類(lèi)型,以及它們確切對(duì)應(yīng)的類(lèi)型。然后,在程序中就可以使用定義的變量來(lái)操縱控件了。2.5.2控件1)基本控件Windows常用控件MFC對(duì)應(yīng)的類(lèi)按鈕控件CButton編輯框控件Cedit復(fù)選框控件CCheck列表框控件CListBox進(jìn)度條控件(Progressbar)CProgressCtrl滑塊控件CSliderCtrl上下控件CSpinButtonCtrl圖象列表(imagelist)CImageList列表視圖控件(listview)CListCtrl樹(shù)形控件(treeview)CTreeCtrlRichEdit控件CrichEditCtrl 2)添加自定義控件 在應(yīng)用程序中可以添加一些自己生成的或由他人提供的控件。方法如下: 首先,選擇菜單project,AddToProject,ComponentsAndControls,彈出對(duì)話框“ComponentsAndControlGalley”對(duì)話框,選擇“RegisteredActiveXControls”。 然后,選擇準(zhǔn)備插入的控件(如“GisAttEditContro”),按Insert按鈕,會(huì)在程序中生成控件對(duì)應(yīng)的類(lèi)。 接著,就可以像使用標(biāo)準(zhǔn)控件一樣使用插入的控件了。2.6編程規(guī)范2.6.1書(shū)寫(xiě)風(fēng)格大括號(hào)的對(duì)齊,鋸齒狀對(duì)齊、縮進(jìn);使用空白(空字符,空行)以增加可讀性。2.6.2命名規(guī)范匈牙利記法:變量具有一個(gè)描述性的名字,如ClassName,名字用大寫(xiě)字母開(kāi)始;如果變量是一多詞名則每個(gè)單詞詞頭需大寫(xiě)。然后,在描述性名稱(chēng)前,加上表示變量類(lèi)型的字母——如,nCount為一整型變量,bFlag為一Boolean型變量。前綴變量注釋aArraybBooleandDoublehHandleIInteger “indexinto”lLonglpLongpointertolpfnLongpointertofunctionmMembervariablenInteger“numberof”pPointertosStringszZeroterminatedstringuUnsignedintegerCClass2.6.3注釋規(guī)則1)函數(shù)注釋函數(shù)開(kāi)頭必須注明函數(shù)功能、參數(shù)、返回值2)變量注釋?xiě)?yīng)說(shuō)明變量的作用3)其它注釋每個(gè)功能模塊應(yīng)加注釋?zhuān)缫粋€(gè)循環(huán)體、一個(gè)判斷等都需要加注釋。習(xí)題:2.1建立一個(gè)基于多文檔的應(yīng)用程序,添加自己的菜單項(xiàng),使用ClassVizard進(jìn)行消息映射。2.2在上題基礎(chǔ)上,使用圖形設(shè)備接口,在窗口上繪圖。要求每按下一次鼠標(biāo)左鍵,就以鼠標(biāo)所點(diǎn)坐標(biāo)為中心,畫(huà)一個(gè)圓。2.3建立一個(gè)基于對(duì)話框的應(yīng)用程序。使用幾個(gè)基本控件,如:編輯框、按鈕、組合框等,并生成對(duì)應(yīng)的變量,然后,通過(guò)這些變量控制控件的值。

第三講地理信息系統(tǒng)基本概念3.1GIS原理概述3.1.1GIS概念地理信息系統(tǒng)(GIS)是在計(jì)算機(jī)軟硬件支持下,以采集、存貯、管理、檢索、分析和描述空間物體的地理分布數(shù)據(jù)及與之相關(guān)的屬性,并回答用戶問(wèn)題等為主要任務(wù)的技術(shù)系統(tǒng)。3.1.2GIS發(fā)展1)起始發(fā)展階段(60年代)1963年由加拿大測(cè)量學(xué)家R.F.Tomlinson提出并建立的世界上第一個(gè)地理信息系統(tǒng)是加拿大地理信息系統(tǒng)(CGIS)。1963年美國(guó)哈佛大學(xué)城市建筑和規(guī)劃師HowardT.Fisher設(shè)計(jì)和建立了SYMAP系統(tǒng)軟件。1966年美國(guó)成立了城市和區(qū)域信息系統(tǒng)協(xié)會(huì)(URISA),1968年國(guó)際地理聯(lián)合會(huì)(IGU)設(shè)立了地理數(shù)據(jù)收集委員會(huì)(CGDSP)。1969年,又建立起州信息系統(tǒng)國(guó)協(xié)會(huì)(NASIS)。2)發(fā)展鞏固階段(70年代)70年代,GIS朝實(shí)用方向發(fā)展。各國(guó)對(duì)GIS的研究均投入了大量人力、物力、財(cái)力。不同規(guī)模、不同專(zhuān)題的信息系統(tǒng)得到很大發(fā)展。從1970年到1976年美國(guó)地質(zhì)調(diào)查局發(fā)展了50多個(gè)地理信息系統(tǒng)。GIS受到政府、商業(yè)和學(xué)校的普遍重視。3)推廣應(yīng)用階段(80年代)80年代,GIS在全世界范圍內(nèi)全面推廣應(yīng)用,應(yīng)用領(lǐng)域不斷擴(kuò)大,開(kāi)始用于全球性的問(wèn)題。開(kāi)展GIS工作的國(guó)家更為廣泛,國(guó)際合作日益加強(qiáng)。GIS軟件開(kāi)發(fā)具有突破性的進(jìn)展,僅1989年市場(chǎng)上有報(bào)價(jià)的軟件達(dá)70多個(gè)。代表性的有ARC/INFO(美國(guó))、GENAMAP(澳大利亞)、SPANS(拿加大)、MAPINFO(美國(guó))、MGE(美國(guó))、System9(瑞士/美國(guó))、ERDAS(美國(guó))。4)蓬勃發(fā)展階段(90年代以后)90年代,隨著地理信息產(chǎn)生的建立和數(shù)字化信息產(chǎn)品在全世界的普及,GIA已成為確定性的產(chǎn)業(yè),投入使用的GIS系統(tǒng),每2~3年就翻一番,GIS市場(chǎng)的年增長(zhǎng)率為35%以上,從事GIS的廠家已超過(guò)300家。GIS已滲透到各行各業(yè),涉及千家萬(wàn)戶,成為人們生產(chǎn)、生活、學(xué)習(xí)和工作中不可缺少的工具和助手。3.1.3GIS組成1)數(shù)據(jù)輸入和檢驗(yàn)2)數(shù)據(jù)存儲(chǔ)和管理3)數(shù)據(jù)變換4)數(shù)據(jù)輸出和表示5)用戶接口3.1.4GIS功能1)數(shù)據(jù)采集與輸入數(shù)據(jù)采集與輸入,即在數(shù)據(jù)處理系統(tǒng)中將系統(tǒng)外部的原始數(shù)據(jù)傳輸給系統(tǒng)內(nèi)部,并將這些數(shù)據(jù)從外部格式轉(zhuǎn)換為系統(tǒng)便于處理的內(nèi)部格式的過(guò)程。主要有圖形數(shù)據(jù)輸入,如管網(wǎng)圖輸入;柵格數(shù)據(jù)輸入,如遙感圖像的輸入;測(cè)量數(shù)據(jù)輸入,如全球定位系統(tǒng)(GPS)數(shù)據(jù)的輸入;屬性數(shù)據(jù)輸入,如數(shù)字和文字的輸入。2)數(shù)據(jù)編輯與更新數(shù)據(jù)編輯主要包括圖形編輯和屬性編輯。屬性編輯主要與數(shù)據(jù)庫(kù)管理結(jié)合在一起完成,圖形編輯主要包括拓?fù)潢P(guān)系建立、圖形編輯、圖形整飾、圖幅拼接、圖形變換、投影變換、誤差校正等功能。數(shù)據(jù)更新即以新的數(shù)據(jù)項(xiàng)或記錄來(lái)替換數(shù)據(jù)文件或數(shù)據(jù)庫(kù)中相對(duì)應(yīng)的數(shù)據(jù)項(xiàng)或記錄,它是通過(guò)刪除、修改、插入等一系列操作來(lái)實(shí)現(xiàn)的。3)數(shù)據(jù)存貯與管理屬性數(shù)據(jù)管理一般直接利用商用關(guān)系數(shù)據(jù)庫(kù)軟件,如ORACLE、ACCESS、FoxBase、FoxPro等進(jìn)行管理??臻g數(shù)據(jù)管理是GIS數(shù)據(jù)管理的核心,各種圖形或圖像信息都以嚴(yán)密的邏輯結(jié)構(gòu)存放在空間數(shù)據(jù)庫(kù)中。4)空間查詢與分析空間查詢與分析是GIS核心,主要包括數(shù)據(jù)操作運(yùn)算、數(shù)據(jù)查詢檢索與數(shù)據(jù)綜合分析。包括矢量數(shù)據(jù)疊合、柵格數(shù)據(jù)迭加等操作、算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算、函數(shù)運(yùn)算等。綜合分析主要包括信息量測(cè)、屬性分析、統(tǒng)計(jì)分析、二維模型分析、三維模型分析、多要素綜合分析等。5)數(shù)據(jù)顯示與輸出數(shù)據(jù)顯示是中間處理過(guò)程和最終結(jié)果的屏幕顯示,通常以人機(jī)交互方式來(lái)選擇顯示的對(duì)象與形式,對(duì)于圖形數(shù)據(jù)根據(jù)要素的信息量和密集程度,可選擇放大或縮小顯示。GIS不僅可以輸出全要素地圖,也可以根據(jù)用戶需要,分層輸出各種專(zhuān)題圖、各類(lèi)統(tǒng)計(jì)圖、圖表及數(shù)據(jù)等。3.1.5GIS應(yīng)用1)資源清查2)城鄉(xiāng)規(guī)劃3)災(zāi)害監(jiān)測(cè)4)土地調(diào)查5)環(huán)境管理6)城市管網(wǎng)7)作戰(zhàn)指揮8)宏觀決策3.2GIS空間數(shù)據(jù)類(lèi)型3.2.1柵格數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)將工作區(qū)域的平面表象按一定分解力作行和列的規(guī)則劃分,形成許多格網(wǎng),每個(gè)網(wǎng)格單元稱(chēng)為象素,柵格數(shù)據(jù)結(jié)構(gòu)實(shí)際上就是象元陣列,即象元按矩陣形式的集合,柵格中的每個(gè)象元是柵格數(shù)據(jù)中最基本的信息存儲(chǔ)單元,其坐標(biāo)位置可以用行號(hào)和列號(hào)確定。3.2.2矢量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)矢量數(shù)據(jù)就是代表地圖圖形的各離散點(diǎn)平面坐標(biāo)(x,y)的有序集合。拓?fù)潢P(guān)系是指網(wǎng)結(jié)構(gòu)元素結(jié)點(diǎn)、弧段、面域之間的空間關(guān)系,主要表現(xiàn)為下列三種關(guān)系:拓?fù)溧徑雨P(guān)系、拓?fù)潢P(guān)聯(lián)關(guān)系、拓?fù)浒P(guān)系3.2.3矢柵一體化數(shù)據(jù)結(jié)構(gòu)用填滿線性目標(biāo)路徑和充滿面狀目標(biāo)空間的表達(dá)方法作為一體化數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ),每個(gè)線性目標(biāo)除記錄原始取樣點(diǎn)外,還記錄路徑所通過(guò)的柵格,每個(gè)面狀地物除記錄它的多邊形周邊以外,還包括中間的面域柵格。無(wú)論是點(diǎn)、線、還是面均采用面向目標(biāo)的描述方法,即直接跟隨位置描述信息并進(jìn)行拓?fù)潢P(guān)系說(shuō)明,因而它可以完全保持矢量的特點(diǎn),而原子空間充填表達(dá)建立了位置與地物的聯(lián)系,使之具有柵格的性質(zhì)。3.2.4矢量與柵格數(shù)據(jù)比較矢量數(shù)據(jù)柵格數(shù)據(jù)數(shù)據(jù)存儲(chǔ)量數(shù)據(jù)存儲(chǔ)量小數(shù)據(jù)存儲(chǔ)量大空間位置精度空間位置精度高空間位置精度低連接關(guān)系用網(wǎng)絡(luò)連接法能完整描述拓?fù)潢P(guān)系難于建立網(wǎng)絡(luò)連接關(guān)系輸出效果輸出簡(jiǎn)單容易,繪圖細(xì)膩、精確、美觀輸出速度快,但繪圖粗糙、不美觀信息處理可對(duì)圖形及其屬性進(jìn)行檢索、更新和綜合便于面狀數(shù)據(jù)處理數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)復(fù)雜數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單數(shù)據(jù)獲取獲取數(shù)據(jù)慢快速獲取大量數(shù)據(jù)數(shù)學(xué)模擬數(shù)學(xué)模擬困難數(shù)學(xué)模擬方便疊合分析多種地圖疊合分析困難多種地圖疊合分析方便數(shù)字圖像處理不能直接處理數(shù)字圖像信息能直接處理數(shù)字圖像信息空間分析空間分析不容易實(shí)現(xiàn)空間分析易于進(jìn)行模糊事物描述邊界復(fù)雜、模糊的事物難以描述容易描述邊界復(fù)雜、模糊的事物費(fèi)用數(shù)據(jù)輸出的費(fèi)用較高技術(shù)開(kāi)發(fā)費(fèi)用低 表3-1矢量數(shù)據(jù)與柵格數(shù)據(jù)比較3.3GIS數(shù)據(jù)管理3.3.1多樣性空間數(shù)據(jù)庫(kù)空間數(shù)據(jù)主要包括矢量數(shù)據(jù)和柵格數(shù)據(jù)?,F(xiàn)有GIS系統(tǒng)是基于矢量的,具有比較成熟的管理和建立矢量數(shù)據(jù)庫(kù)的能力。同時(shí),目前多數(shù)據(jù)GIS軟件都可以將數(shù)字正射影像數(shù)據(jù)、遙感數(shù)據(jù)作為背景與矢量數(shù)據(jù)、DEM數(shù)據(jù)進(jìn)行套合顯示。由于遙感影像數(shù)據(jù)不斷增長(zhǎng),現(xiàn)有GIS軟件難以組織、調(diào)度、存儲(chǔ)與管理這樣的海量數(shù)據(jù),因此開(kāi)發(fā)能對(duì)多數(shù)據(jù)源、多比例尺、多時(shí)相影像數(shù)據(jù)進(jìn)行統(tǒng)一管理和集成的大型空間數(shù)據(jù)庫(kù)管理系統(tǒng)是研究的主要方向。3.3.2空間數(shù)據(jù)的無(wú)縫組織1)以圖幅為單元建庫(kù)以圖幅為建庫(kù)單元的缺陷:查詢往往涉及到多幅圖或在不同專(zhuān)題間進(jìn)行;地理實(shí)體的完整性和一致性難以維護(hù);分幅管理對(duì)于數(shù)據(jù)共享和地理實(shí)體一級(jí)的安全管理增加了難度。2)邏輯上無(wú)縫組織Intergraph的MGE,ESRI的ARC/INFO等都能建立無(wú)縫GIS地理數(shù)據(jù)庫(kù)。能夠完成地理數(shù)據(jù)的幾何接邊和邏輯接邊,但物理上仍然按照?qǐng)D幅的概念進(jìn)行存儲(chǔ)管理,對(duì)同一地理實(shí)體的多個(gè)幾何標(biāo)識(shí)進(jìn)行后臺(tái)關(guān)聯(lián)處理,對(duì)用戶來(lái)說(shuō)是不可見(jiàn)的。3)邏輯和物理上無(wú)縫組織工程和工作區(qū):從邏輯上和物理上的無(wú)縫組織出發(fā),一個(gè)完整的無(wú)縫空間數(shù)據(jù)庫(kù)可以被看成是一個(gè)工程,在工程中地物要保持存儲(chǔ)、表達(dá)的完整性和一致性,在工程中具有唯一的幾何標(biāo)識(shí)和地物標(biāo)識(shí)。工作區(qū)是為了方便使用空間數(shù)據(jù)庫(kù),可以說(shuō)是在應(yīng)用時(shí)的工程的臨時(shí)子集,可以按規(guī)則大小劃分,也可以相互嵌套,最大可以為整個(gè)工程。工作區(qū)可以包括任何區(qū)域、任意一層或多層地物。4)數(shù)據(jù)無(wú)縫組織基于客戶/服務(wù)器結(jié)構(gòu),突破傳統(tǒng)圖幅分塊,保持地物完整性存放;空間地物的屬性數(shù)據(jù)在工程中統(tǒng)一管理,用關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行管理;為了在工程中有效地組織和表達(dá)空間實(shí)體,可以按照地物大小對(duì)其進(jìn)行分級(jí)抽取,然后對(duì)不同大小地物的幾何對(duì)象標(biāo)識(shí)進(jìn)行整理、分層,建立空間索引。3.3.3圖形數(shù)據(jù)與屬性數(shù)據(jù)的連接方式1)專(zhuān)題屬性作為圖形數(shù)據(jù)懸掛體:屬性數(shù)據(jù)是作為圖形數(shù)據(jù)記錄的一部分進(jìn)行存貯的。這種方案只有當(dāng)屬性數(shù)據(jù)量不大的個(gè)別情況下才是有用的。大量的屬性數(shù)據(jù)加載于圖形記錄上會(huì)導(dǎo)致系統(tǒng)響應(yīng)時(shí)間的普遍延長(zhǎng)。當(dāng)然,主要的缺點(diǎn)在于屬性數(shù)據(jù)的存取必須經(jīng)由圖形記錄才能進(jìn)行。2)屬性數(shù)據(jù)與圖形數(shù)據(jù)完全獨(dú)立(完全分開(kāi))可以利用現(xiàn)有的CAD技術(shù)和DBS技術(shù),維護(hù)難度大,相互操作難度大,CAD中刪除一個(gè),必須去找DBS,DBS也必須刪除。3)屬性數(shù)據(jù)與圖形數(shù)據(jù)自成體系(混合處理)圖形數(shù)據(jù)和屬性數(shù)據(jù)自成體系,屬性數(shù)據(jù)有其專(zhuān)用的數(shù)據(jù)庫(kù)系統(tǒng),很多情況下是用于事務(wù)管理的商業(yè)數(shù)據(jù)庫(kù),并且在它基礎(chǔ)上建立了能夠從屬性到圖形的反向參照功能,圖形和屬性間連接是通過(guò)關(guān)鍵字和標(biāo)識(shí)碼來(lái)連接。相互操作難度較大。例如ARC/INFO中ARC實(shí)現(xiàn)用拓?fù)潢P(guān)系定義了空間數(shù)據(jù),INFO實(shí)現(xiàn)了用關(guān)系數(shù)據(jù)模型定義屬性數(shù)據(jù),兩者通過(guò)內(nèi)部代碼和用戶標(biāo)識(shí)碼(USER—ID)作為公共數(shù)據(jù)項(xiàng)。4)屬性數(shù)據(jù)與圖形數(shù)據(jù)結(jié)構(gòu)統(tǒng)一(完全結(jié)合)此結(jié)構(gòu)中有雙向指針參照,且由一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)控制,使靈活性和應(yīng)用范圍均大為提高。這一方案能滿足許多部門(mén)在建立信息系統(tǒng)時(shí)的要求。CAD中刪除一個(gè)圖元,DBS自動(dòng)刪除。MAPGIS屬于這種類(lèi)型。3.3.4主要GIS軟件的比較ARC/INFO:美國(guó),ESRIGENAMP:澳大利亞,GENASYSIDRISI:美國(guó),克拉克大學(xué)制圖部ERDAS:美國(guó),ERDASILWIS:荷蘭,ITCSystem9:瑞士/美國(guó),PRIME/ComputersionMGE:美國(guó),intergraphSPANS:加拿大,TydeltechnologiescopTIGRIS:美國(guó),Intergraphcooparation3.4空間分析3.5地理信息系統(tǒng)發(fā)展3.5.1空間數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)管理高效的柵格與矢量互換算法;圖形空間數(shù)據(jù)壓縮技術(shù);邏輯結(jié)構(gòu)設(shè)計(jì)、物理存貯結(jié)構(gòu)的研究從理論走向?qū)嵱谩?.5.2數(shù)據(jù)自動(dòng)輸入技術(shù)屬性表格的掃描和識(shí)別;圖形掃描和跟蹤;拓?fù)潢P(guān)系自動(dòng)生成;圖例符號(hào)的自動(dòng)標(biāo)識(shí)。3.5.33S技術(shù)結(jié)合3.5.4時(shí)態(tài)GIS研究空間三維、時(shí)間維;三維地理矩陣:位置、屬性、時(shí)間作為行、列、高;十六叉樹(shù)表示:GIS空間——時(shí)間;基態(tài)修正法:不存儲(chǔ)研究區(qū)域中每個(gè)狀態(tài)的全部信息,只存貯某個(gè)時(shí)間的數(shù)據(jù)狀態(tài)(稱(chēng)為基態(tài))以及相對(duì)于基態(tài)的變化量。3.5.5三維GIS的研究三維數(shù)據(jù)結(jié)構(gòu)研究,包括數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)狀態(tài)表示、數(shù)據(jù)可視化(八叉樹(shù)、三維邊界表示法);三維數(shù)據(jù)生成和管理;三維數(shù)據(jù)顯示。3.5.6GIS軟件模式的發(fā)展經(jīng)歷功能模塊→包式模塊→核心式軟件COMGISCOMGIS的基本思想:把GIS的各大功能模塊劃分為幾個(gè)控件,每個(gè)控件完成不同的功能,各個(gè)GIS控件之間,以及GIS控件與其它非GIS控件之間可以方便地通過(guò)可視化的軟件開(kāi)發(fā)工具集成起來(lái),形成最終的GIS應(yīng)用。COMGIS的實(shí)現(xiàn)技術(shù)主要是面向?qū)ο蠹夹g(shù)、組件式對(duì)象模型(COM)及相關(guān)技術(shù)(OLE、ActiveX)。WEBGIS通用網(wǎng)關(guān)接口技術(shù)(CommonGatewayInterface,CGI)服務(wù)器應(yīng)用程序接口方法(ServerAPI)插入法(Plugins)Java語(yǔ)言開(kāi)放式GIS(OPENGIS)開(kāi)放式GIS是研究分布式環(huán)境下實(shí)現(xiàn)地理空間信息和交互操作的方法。特點(diǎn):從系統(tǒng)的信息表達(dá),到系統(tǒng)的功能都易于修改和擴(kuò)充。支持現(xiàn)有和未來(lái)的地理數(shù)據(jù)共享標(biāo)準(zhǔn)。提供地理信息應(yīng)用互操作標(biāo)準(zhǔn)接口。支持實(shí)時(shí)訪問(wèn)遠(yuǎn)程空間數(shù)據(jù)庫(kù)和空間信息處理資源的能力。OPENGIS實(shí)現(xiàn)技術(shù):面向?qū)ο蠓植际郊夹g(shù)、INTERNET技術(shù)、WWW技術(shù)。3.5.7當(dāng)代GIS發(fā)展的若干技術(shù)面向?qū)ο蠹夹g(shù)(ObjectOriented)客戶/服務(wù)器技術(shù)(client/server)部件對(duì)象模型(ComponentObjectModel,COM)對(duì)象鏈接與嵌入技術(shù)(ObjectLinkingandEmbedding,OLE)ActiveX技術(shù)超媒體技術(shù)互聯(lián)網(wǎng)技術(shù)通用網(wǎng)關(guān)接口技術(shù)(CommonGatewayInterface,CGI)服務(wù)器應(yīng)用程序接口方法(ServerAPI)插入法(Plugins)Java語(yǔ)言

第四講MAPGIS的基本概念和體系結(jié)構(gòu)4.1MAPGIS二次開(kāi)發(fā)的基本概念 成熟實(shí)用的地理信息系統(tǒng)(GIS)的重要標(biāo)志就是它提供給用戶的二次開(kāi)發(fā)能力。MAPGIS提供完整的二次開(kāi)發(fā)函數(shù)庫(kù)。用戶完全可以在MAPGIS平臺(tái)上開(kāi)發(fā)面向各自領(lǐng)域的應(yīng)用系統(tǒng)。 操作系統(tǒng)、MAPGIS開(kāi)發(fā)庫(kù)及MAPGIS應(yīng)用程序的相互關(guān)系如圖4-1所示: MAPGISMAPGIS應(yīng)用程序MAPGIS開(kāi)發(fā)庫(kù)圖形、圖象I/OMAPGIS開(kāi)發(fā)庫(kù)圖形、圖象I/O窗口操作空間分析圖庫(kù)操作…工作區(qū)管理 工作區(qū)管理Windows9Windows98、Windows2000、WindowsNT圖4-1基于MAPGIS平臺(tái)的應(yīng)用程序目前MAPGIS二次開(kāi)發(fā)庫(kù)主要以API函數(shù)、MFC(MicrosoftFoundationClass)類(lèi)庫(kù)、Com組件、ActiveX控件四種方式提供。開(kāi)發(fā)庫(kù)被封裝在若干動(dòng)態(tài)鏈接庫(kù)(DLL)中。API函數(shù)在使用方法上與Windows的API函數(shù)完全一樣,因此是獨(dú)立于開(kāi)發(fā)工具的。無(wú)論您使用VC++、VB還是BC++、Dephi…,您在這些工具中如何調(diào)用Windows的API函數(shù),您就可以怎么調(diào)用這些二次開(kāi)發(fā)函數(shù)。MAPGIS類(lèi)庫(kù)是為基于MFC類(lèi)庫(kù)的C++開(kāi)發(fā)者提供的多個(gè)可重用基類(lèi),它將應(yīng)用程序所需的常見(jiàn)基本功能作了封裝,使用便利,改動(dòng)靈活。開(kāi)發(fā)者只需從類(lèi)庫(kù)派生即可使自己的程序獲得從窗口顯示控制到圖形查詢編輯的各項(xiàng)功能。MAPGISCOM組件是MAPGIS新一代體系結(jié)構(gòu)的表現(xiàn),功能更加強(qiáng)大,使用更加便利。具有二次開(kāi)發(fā)方便、易于集成、無(wú)限擴(kuò)展等特點(diǎn)。支持多種開(kāi)發(fā)軟件,包括VisualC++、VisualBasic、Delphi、Script、InterDev、PowerBuilder等,開(kāi)發(fā)者可以多層次的訪問(wèn)MAPGIS組件的數(shù)據(jù)層、功能層和界面層。ActiveX控件是MAPGIS完成組件化改造的成果之一,它們使得二次開(kāi)發(fā)更為快捷便利,代碼的可復(fù)用性更高。上述各類(lèi)開(kāi)發(fā)接口提供了從最基本數(shù)據(jù)單元的讀取、保存、更新和維護(hù)到MAPGIS地圖庫(kù)的建立和漫游,以及空間分析,圖象處理等一系列功能。其中,API函數(shù)是基礎(chǔ),使用上最靈活,但技巧性要求也最高。所以本書(shū)大量篇幅用于介紹C++API函數(shù)。MAPGIS將不斷豐富完善各類(lèi)二次開(kāi)發(fā)接口,以多種開(kāi)發(fā)手段滿足不同層次、不同應(yīng)用的需求。這些函數(shù)所在的C++頭文件表4-1所示:函數(shù)庫(kù)名稱(chēng)C,C++說(shuō)明文件各類(lèi)頭文件集合MapGis.h工作區(qū)基礎(chǔ)函數(shù)Win_area.h圖形顯示輸出函數(shù)Map_out.h窗口操作API函數(shù)Win_oper.h圖形顯示函數(shù)Mapdisp.h圖形編輯函數(shù)Mapedit.h拓?fù)洳僮骱瘮?shù)Gistopo.h剪貼板操作函數(shù)clippaste.h數(shù)字化設(shè)備參數(shù)設(shè)置及初始化調(diào)用函數(shù)W32_Dig.h圖框生成函數(shù)frmdll32.h投影變換函數(shù)projdll.h工作區(qū)投影變換函數(shù)cordcvt.h工程管理及拼版文件操作函數(shù)Map_prj.h窗口操作類(lèi)庫(kù)CGisView.h輸入編輯類(lèi)庫(kù)CGisEdit.h工程管理類(lèi)庫(kù)CPrjEdit.h地圖庫(kù)讀取顯示函數(shù)Dbs_View.h空間分析函數(shù)Spc_anly.hTin基本操作函數(shù)TinBas32.hTin工作區(qū)函數(shù)Tin_area.h網(wǎng)絡(luò)分析函數(shù)Net_oper.h統(tǒng)計(jì)分析和統(tǒng)計(jì)圖制作函數(shù)Att_Sta.h轉(zhuǎn)換函數(shù)GisConv.h客戶化菜單函數(shù)Custom.h圖像輸入輸出函數(shù)msiio.h表4-1二次開(kāi)發(fā)頭文件4.2MAPGIS基本術(shù)語(yǔ)下面介紹MAPGIS系統(tǒng)中經(jīng)常使用的一些基本概念。地圖:是按一定的數(shù)學(xué)法則和特有的符號(hào)系統(tǒng)及制圖綜合原則將地球表面的各種自然和社會(huì)經(jīng)濟(jì)現(xiàn)象縮小表示在平面上的圖形,它反映制圖現(xiàn)象的空間分布、組合、聯(lián)系及在時(shí)空方面的變化和發(fā)展。窗口:是用戶坐標(biāo)系中的一個(gè)矩形區(qū)域。用戶可以改變這個(gè)矩形的大小、或移動(dòng)位置來(lái)選擇所要觀察的圖形。窗口就象照相機(jī)的取景框,當(dāng)我們瞄準(zhǔn)不同的地方,就選取了不同的景物。離景物越遠(yuǎn)框內(nèi)包括的景物越多而成像就??;當(dāng)我們靠近它,所包括的景物越少,成像越大。利用窗口技術(shù),我們可以有選擇的考察圖形的某一部分,觀察圖形的細(xì)致部分或全局。視區(qū):是設(shè)備坐標(biāo)系中的矩形區(qū)域,它是圖形在設(shè)備上的顯示區(qū)??梢晠^(qū)是在一定高程和一個(gè)或多個(gè)視點(diǎn)內(nèi),通過(guò)計(jì)算所得到的一個(gè)或多個(gè)視點(diǎn)的可見(jiàn)區(qū)域。圖層:用戶按照一定的需要或標(biāo)準(zhǔn)把某些相關(guān)的物體組合在一起,我們稱(chēng)之為圖層。如地圖中水系構(gòu)成一個(gè)圖層,鐵路構(gòu)成一個(gè)圖層等。我們可以把一個(gè)圖層理解為一張透明薄膜,每一層上的物體在同一張薄膜上。一張圖就是由若干層薄膜疊置而成的,圖形分層有利于提高檢索和顯示速度。靶區(qū):是屏幕上用來(lái)捕獲被編輯物體(圖形)的矩形區(qū)域,它由用戶在屏幕上形成??刂泣c(diǎn):控制點(diǎn)是指已知平面位置和地表高程的點(diǎn),它在圖形處理中能夠控制圖形形狀,反映圖形位置。點(diǎn)元:點(diǎn)元是點(diǎn)圖元的簡(jiǎn)稱(chēng),有時(shí)也簡(jiǎn)稱(chēng)點(diǎn),所謂點(diǎn)元是指由一個(gè)控制點(diǎn)決定其位置的有確定形狀的圖形單元。它包括字、字符串、文本、子圖、圓、弧、直線段等幾種類(lèi)型。它與“線上加點(diǎn)”中的點(diǎn)概念不同?;《危夯《问且幌盗杏幸?guī)則的,順序的點(diǎn)的集合,用它們可以構(gòu)成區(qū)域的輪廓線。它與曲線是兩個(gè)不同的概念,前者屬于面元,后者屬于線元。區(qū)/區(qū)域:區(qū)/區(qū)域是由同一方向或首尾相連的弧段組成的封閉圖形。拓?fù)洌和負(fù)湟嗉次幌嚓P(guān)系,是指將點(diǎn)、線、及區(qū)域等圖元的空間關(guān)系加以結(jié)構(gòu)化的一種數(shù)學(xué)方法。主要包括:區(qū)域的定義、區(qū)域的相鄰性及弧段的接序性。區(qū)域是由構(gòu)成其輪廓的弧段所組成,所有的弧段都加以編碼,再將區(qū)域看作由弧段代碼組成;區(qū)域的相鄰性是區(qū)域與區(qū)域間是否相鄰,可由它們是否具有共同的邊界弧段決定;弧段的接序性是指對(duì)于具有方向性的弧段,可定義它們的起始結(jié)點(diǎn)和終止結(jié)點(diǎn),便于在網(wǎng)絡(luò)圖層中查訊路徑或回路。拓?fù)湫再|(zhì)是變形后保持不變的屬性。透明輸出:與透明輸出相對(duì)的為覆蓋輸出。用舉例來(lái)解釋這個(gè)名詞,如果區(qū)與區(qū)、線與區(qū)或點(diǎn)圖元與區(qū)等等疊加,用透明輸出時(shí),最上面的圖元顏色發(fā)生了改變,在最終的輸出時(shí)最上面圖元顏色為它們的混合色。最終的輸出如印刷品等。數(shù)字化:數(shù)字化是指把圖形、文字等模擬信息轉(zhuǎn)換成為計(jì)算機(jī)能夠識(shí)別、處理、貯存的數(shù)字信息的過(guò)程。矢量:是具有一定方向和長(zhǎng)度的量。一個(gè)矢量在二維空間里可表示為(Dx,Dy),其中Dx表示沿x方向移動(dòng)的距離,Dy表示沿y方向移動(dòng)的距離。矢量化:矢量化是指把柵格數(shù)據(jù)轉(zhuǎn)換成矢量數(shù)據(jù)的過(guò)程。細(xì)化:細(xì)化是指將柵格數(shù)據(jù)中,具有一定寬度的圖元,抽取其中心骨架的過(guò)程。網(wǎng)格化(構(gòu)網(wǎng)):網(wǎng)格化是指將不規(guī)則的觀測(cè)點(diǎn)按照一定的網(wǎng)格結(jié)構(gòu)及某種算法轉(zhuǎn)換成有規(guī)則排列的網(wǎng)格的過(guò)程。網(wǎng)格化分為規(guī)則網(wǎng)格化和不規(guī)則網(wǎng)格化,其中規(guī)則網(wǎng)格化是指在制圖區(qū)域上構(gòu)成有小長(zhǎng)方形或正方形網(wǎng)眼排成矩陣式的網(wǎng)格的過(guò)程;不規(guī)則網(wǎng)格化是指直接由離散點(diǎn)連成的四邊形或三角形網(wǎng)的過(guò)程。網(wǎng)格化主要用于繪制等值線。光柵化:光柵化是指把矢量數(shù)據(jù)轉(zhuǎn)換成柵格數(shù)據(jù)的過(guò)程。曲線光滑:就是根據(jù)給定點(diǎn)列用插值法或曲線擬合法建立某一符合實(shí)際要求的連續(xù)光滑曲線的函數(shù),使給定點(diǎn)滿足這個(gè)函數(shù)關(guān)系,并按該函數(shù)關(guān)系用計(jì)算加密點(diǎn)列來(lái)完成光滑連接的過(guò)程。結(jié)點(diǎn):結(jié)點(diǎn)是某弧段的端點(diǎn),或者是數(shù)條弧段間的交叉點(diǎn)。結(jié)點(diǎn)平差(頂點(diǎn)匹配):本來(lái)是同一個(gè)結(jié)點(diǎn),由于數(shù)字化誤差,幾條弧段在交叉處,即結(jié)點(diǎn)處沒(méi)有閉合或吻合,留有空隙,為此將它們?cè)诮徊嫣幍亩它c(diǎn)按照一定的匹配半徑捏合起來(lái),成為一個(gè)真正結(jié)點(diǎn)的過(guò)程,稱(chēng)為結(jié)點(diǎn)平差。BUF檢索:本來(lái)是靠近某一條弧段X上的幾條弧段,由于數(shù)字化誤差,這幾條弧段在與X弧段交叉或連接處的結(jié)點(diǎn)沒(méi)有落在X弧段上,為此將X弧段按照一定的檢索深度檢索其周?chē)鷰讞l弧段的結(jié)點(diǎn),若落在該深度范圍內(nèi),就將這些結(jié)點(diǎn)落到X弧段上,從而使這些弧段靠近于X弧段,我們稱(chēng)這個(gè)過(guò)程為BUF檢索。緩沖區(qū)(Buffer):是繞點(diǎn)、線、面而建立的區(qū)域,可視為地物在一定空間范圍內(nèi)的延伸,任何目標(biāo)所產(chǎn)生的緩沖區(qū)總是一些多邊形,如建立以湖泊和河道500米寬的砍伐區(qū)。緩沖分析的應(yīng)用包括道路的噪聲緩沖區(qū)、危險(xiǎn)設(shè)施的安全區(qū)等。裁剪:裁剪是指將圖形中的某一部分或全部按照給定多邊形所圈定的邊界范圍提取出來(lái)進(jìn)行單獨(dú)處理的過(guò)程。這個(gè)給定的多邊形通常稱(chēng)作裁剪框。在裁剪實(shí)用處理程序中,裁剪方式有內(nèi)裁剪和外裁剪,其中內(nèi)裁剪是指裁剪后保留裁剪框內(nèi)的部分,外裁剪是指裁剪后保留裁剪框外面的部分。屬性:就是一個(gè)實(shí)體的特征,屬性數(shù)據(jù)是描述真實(shí)實(shí)體特征的數(shù)據(jù)集。顯示地物屬性的表通常稱(chēng)為屬性表,屬性表常用來(lái)組織屬性數(shù)據(jù)。重采樣:就是根據(jù)一類(lèi)象元的信息內(nèi)插另一類(lèi)象元信息的過(guò)程。遙感:廣義上講,遙感就是不直接接觸所測(cè)量的地物或現(xiàn)象,遠(yuǎn)距離取得測(cè)量地物或現(xiàn)象的信息的技術(shù)方法。狹義而言,主要指從遠(yuǎn)距離、高空以至外層空間的平臺(tái)上,利用可見(jiàn)光、紅外、微波等探測(cè)儀器,通過(guò)攝影和掃描、信息傳感、傳輸和處理,從而識(shí)別地面物質(zhì)的性質(zhì)和運(yùn)動(dòng)狀態(tài)的現(xiàn)代化技術(shù)系統(tǒng)。網(wǎng)絡(luò)(Network):由節(jié)點(diǎn)和邊組成的有規(guī)則的線的集合,如道路網(wǎng)絡(luò)、管道網(wǎng)絡(luò)。節(jié)點(diǎn)是線的交叉點(diǎn)或線的端點(diǎn),邊是數(shù)據(jù)庫(kù)模型中的鏈(即定義復(fù)雜的線或邊界的坐標(biāo)串),節(jié)點(diǎn)度是節(jié)點(diǎn)處邊的數(shù)目。網(wǎng)絡(luò)分析多種多樣,如交通規(guī)劃、航線安排等。TIN:是由一組不規(guī)則的具有X、Y坐標(biāo)和Z值的空間點(diǎn)建立起來(lái)的不相交的相鄰三角形,包括節(jié)點(diǎn)、線和三角形面,用來(lái)描述表面的小面區(qū)。TIN的數(shù)據(jù)結(jié)構(gòu)包括了點(diǎn)和它們最相鄰點(diǎn)的拓?fù)潢P(guān)系,所以TIN不僅能高效率地產(chǎn)生各種各樣的表面模型,而且也是十分有效的地形表示方法。TIN的模型化能力包括計(jì)算坡度、坡向、體積、表面長(zhǎng),決定河網(wǎng)和山脊線,生成泰森多邊形等。數(shù)字高程模型(DEM):即DigitalElevationModel,是數(shù)字形式的地形定量模型。數(shù)字地形模型(DTM):即DigitalTerrainModel,是數(shù)字形式表示的地表面,即區(qū)域地形的數(shù)字表示,它是由一系列地面點(diǎn)的X,Y位置及其相聯(lián)系的高程Z所組成。這種數(shù)字形式的地形模型是為適應(yīng)計(jì)算機(jī)處理而產(chǎn)生的,又為各種地形特征及專(zhuān)題屬性的定量分析和不同類(lèi)型專(zhuān)題圖的自動(dòng)繪制提供了基本數(shù)據(jù)。在專(zhuān)題地圖上,第三維Z不一定代表高程,而可代表專(zhuān)題地圖的量測(cè)值,如地震烈度、氣壓值等。地圖投影(MapProjection):地圖投影是按照一定的數(shù)學(xué)法則,將地球橢球面經(jīng)緯網(wǎng)相應(yīng)投影到平面上的方法。坡度和坡向:若輸入高程,則通過(guò)計(jì)算相鄰象元值的差異可求得坡度;斜坡傾斜的水平方向稱(chēng)為坡向。4.3MAPGIS的數(shù)據(jù)管理(工作區(qū))4.3.1工作區(qū)的概念 MAPGIS數(shù)據(jù)管理的核心就是對(duì)工作區(qū)的操作。工作區(qū)是MAPGIS提出的一個(gè)概念,簡(jiǎn)單地說(shuō),工作區(qū)就是一個(gè)數(shù)據(jù)池,存放實(shí)體的空間數(shù)據(jù)、拓?fù)鋽?shù)據(jù)、圖形數(shù)據(jù)和屬性數(shù)據(jù),每個(gè)工作區(qū)都對(duì)應(yīng)于一個(gè)MAPGIS數(shù)據(jù)文件。MAPGIS開(kāi)發(fā)函數(shù)庫(kù)提供對(duì)工作區(qū)實(shí)施操作的一系列函數(shù),如將工作區(qū)中的內(nèi)容存盤(pán),從盤(pán)上將數(shù)據(jù)裝入工作區(qū),對(duì)工作區(qū)中內(nèi)容進(jìn)行添加、修改、刪除、檢索等等。對(duì)硬盤(pán)數(shù)據(jù)的存取及虛擬內(nèi)存的管理等等復(fù)雜繁瑣的工作無(wú)需應(yīng)用程序的編寫(xiě)者去關(guān)心,而是由MAPGIS工作區(qū)管理模塊自動(dòng)完成。由此可見(jiàn),深入了解工作區(qū)的邏輯結(jié)構(gòu)和工作區(qū)操作函數(shù)的使用,是進(jìn)行成功的二次開(kāi)發(fā)的關(guān)鍵。4.3.2.工作區(qū)管理模塊的地位應(yīng)用模塊應(yīng)用模塊MAPGIS應(yīng)用程序工作區(qū)工作區(qū)API函數(shù)界面工 作 區(qū) 管 理 模 塊工 作 區(qū) 管 理 模 塊工作區(qū)(空間數(shù)據(jù)、圖形數(shù)據(jù)及屬性數(shù)據(jù))工作區(qū)(空間數(shù)據(jù)、圖形數(shù)據(jù)及屬性數(shù)據(jù))圖4-2工作區(qū)管理模塊的地位4.3.3工作區(qū)的分類(lèi) MAPGIS將工作區(qū)分為點(diǎn)、線、區(qū)、網(wǎng)、表五種類(lèi)型,它們的差別主要表現(xiàn)在其中包含的空間實(shí)體的類(lèi)型不同。詳見(jiàn)表4-2:工作區(qū)類(lèi)型實(shí)體類(lèi)型點(diǎn)工作區(qū)(.WT文件)點(diǎn)(PNT)線工作區(qū)(.WL文件)線(LIN)、結(jié)點(diǎn)(NOD)區(qū)工作區(qū)(.WP文件)線(LIN)、結(jié)點(diǎn)(NOD)、區(qū)(REG)網(wǎng)工作區(qū)(.WN文件)線(LIN)、結(jié)點(diǎn)(NOD)、網(wǎng)(NET)表工作區(qū)(.WB文件)無(wú)空間實(shí)體,僅有表格記錄表4-2各類(lèi)工作區(qū)中可以包含的實(shí)體類(lèi)型 由于不同種類(lèi)的工作區(qū)中空間實(shí)體的類(lèi)型不同,各類(lèi)型的工作區(qū)所適用的數(shù)據(jù)操作函數(shù)也就不同。例如,對(duì)點(diǎn)工作區(qū)只能使用操作點(diǎn)實(shí)體數(shù)據(jù)的函數(shù);而對(duì)區(qū)工作區(qū)則可對(duì)線、結(jié)點(diǎn)和區(qū)實(shí)體的數(shù)據(jù)進(jìn)行操作。4.4MAPGIS的空間實(shí)體及其數(shù)據(jù)組織 空間實(shí)體是MAPGIS數(shù)據(jù)操作的基本單位,在一個(gè)工作區(qū)中,一類(lèi)實(shí)體可有多達(dá)2G的個(gè)體,每個(gè)個(gè)體都有唯一的序號(hào),稱(chēng)為實(shí)體號(hào)(點(diǎn)號(hào)、線號(hào)、區(qū)號(hào)、網(wǎng)號(hào)、記錄號(hào)等)。對(duì)實(shí)體數(shù)據(jù)的存取主要依據(jù)實(shí)體號(hào)。 每個(gè)實(shí)體在工作區(qū)中都存儲(chǔ)有對(duì)應(yīng)的空間數(shù)據(jù)、拓?fù)鋽?shù)據(jù)、圖形參數(shù)及屬性記錄。當(dāng)然,實(shí)體類(lèi)型不同,上述幾方面的數(shù)據(jù)就有不同的特點(diǎn),見(jiàn)表4-3。1.實(shí)體類(lèi)型:點(diǎn),線,區(qū),節(jié)點(diǎn),網(wǎng)2.實(shí)體數(shù)據(jù):空間數(shù)據(jù),拓?fù)鋽?shù)據(jù),圖形數(shù)據(jù),屬性數(shù)據(jù)3.實(shí)體數(shù)據(jù)的邏輯組織實(shí)體類(lèi)型空間數(shù)據(jù)及拓?fù)鋽?shù)據(jù)圖形參數(shù)缺省屬性點(diǎn)PNT位置(x,y)D_DOTPNT_INFO(字符串、文本、子圖、

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論