VC++開發(fā)GIS項目程序.doc_第1頁
VC++開發(fā)GIS項目程序.doc_第2頁
VC++開發(fā)GIS項目程序.doc_第3頁
VC++開發(fā)GIS項目程序.doc_第4頁
VC++開發(fā)GIS項目程序.doc_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

武漢科技學院2005屆畢業(yè)設計(論文)11實現(xiàn)圖形系統(tǒng)的文檔和視圖1.1組織矢量圖形系統(tǒng)的圖形元素類城市的信息化為城市GIS發(fā)展帶來了機遇。實際上,城市信息化表現(xiàn)為政府管理與決策的信息化(數(shù)字政府),企業(yè)管理、決策與服務的信息化(數(shù)字企業(yè)),市民生活的信息化(數(shù)字城市生活),即“數(shù)字城市”。由此可見,城市GIS是“數(shù)字城市”最核心的部分,可以分為政府GIS、企業(yè)GIS和社會GIS?!皵?shù)字城市”的發(fā)展,要求政府、企業(yè)和社會GIS通過數(shù)據(jù)通信網(wǎng)絡將政府、企業(yè)和社會聯(lián)成一個整體,實現(xiàn)資源的共享。歷史給了我們中國人特殊的超越他人的機遇。美國人、加拿大人、西歐人在通訊基礎設施,政府、企業(yè)信息系統(tǒng)建設,信息系統(tǒng)互聯(lián)互通,以及網(wǎng)絡社會、網(wǎng)絡社區(qū)四個階段循序漸進的發(fā)展中占盡先機。但是當時的3維GIS技術、VR技術、4D數(shù)據(jù)融合集成技術、GIS三維表現(xiàn)技術都沒有像今天這樣成熟和廉價。訪遍美國、西歐、加拿大、澳洲的城市政府網(wǎng)站,基于4D數(shù)據(jù)、三維表現(xiàn)、借助虛擬現(xiàn)實技術的鳳毛麟角。時間和市場為我們創(chuàng)造了超越的重大歷史機會。這個機會就是數(shù)字城市中三維和VR技術的開發(fā)和應用。抓住機遇,我國的數(shù)字城市將大放異彩。我們認為中國的數(shù)字城市特色應該定位在:建設具有4D數(shù)據(jù)的城市基礎地理信息公共平臺;建設以3維和VR技術為主的城市規(guī)劃、建設和管理業(yè)務專業(yè)應用系統(tǒng)。集中搶占數(shù)字城市“43VR”的技術應用戰(zhàn)略制高點,形成中國數(shù)字城市“43VR”的特色,開拓中國數(shù)字城市獨特的市場空間10。面向對象的程序設計,是目前程序設計的主流方法,在本設計中,將利用面向對象的程序設計和C+類的組織方法,組織建立一個基本矢量圖形的圖形元素類。組織實現(xiàn)的矢量圖形系統(tǒng),能夠處理點類、線類、面類、網(wǎng)絡點等類別的圖形元素,其中點類圖形元素有包括直線,圓,圓弧,子圖,標注文本等圖形元素,針對每類圖形元素組織建立起對其進行管理的C+類,并把每個圖形元素作為一個獨立的對象來管理。1.1.1圖形元素基類的組織對各類圖形元素進行分析,可以發(fā)現(xiàn)各類圖形元素具有一些相同的屬性和操作功能,如圖形元素的顏色、線型線寬所在層等屬性和得到一個圖形元素是否做了刪除標志等操作。把這些圖形元素中共性的東西(屬性和操作),組織存放在一個圖形元素基類(CDraw)中,具體的圖形元素由這個基類來派生。1.1.2點類圖形元素組織5對于點類圖形元素,其基本特性是各個圖形相互獨立,且每個圖形元素具有有限個固定的特征點。直線的基類是CDraw.,在直線類的構造函數(shù)中,共有包括11個參數(shù),并利武漢科技學院2005屆畢業(yè)設計(論文)2用前7個參數(shù)調(diào)用基類CDraw的構造函數(shù),對基類的成員變量進行初始化,而在本身的構造函數(shù)中對直線類CLine自身的四個參數(shù)(直線的起點和終點)進行了初始化。對圓類的創(chuàng)建方法與直線類CLine類似,圓除了具有圖形元素的基本特征外,還有自身的幾何特性,可以用圓心和半徑作為特征參數(shù)表示圓的幾何特性。圓是圓弧的一個特例,當圓弧的弧度等于2時就是圓。所以可以從一個圓類派生得到一個圓弧類。矢量圖形中可以有大量的標注文本,標注文本除了具有圖形元素的基本特性外,還具有位置、字體及標注內(nèi)容等自身的信息。CText類也有兩個構造函數(shù),第二個構造參數(shù)有多個參數(shù),并利用多個參數(shù)對類的成員變量進行初始化。在構造函數(shù)中,調(diào)用了基類CDraw的構造函數(shù)對基類CDraw的成員變量進行初始化。子圖是各類圖形元素的集合體,是由多個圖形元素組成的整體。為了在圖形中插入子圖,必須首先建立起管理子圖所包含的圖形元素的類,形成一個子圖定義體,將選定的子圖塊以一定的橫縱比例插入到圖形中指定的位置,就形成了一個子圖塊。1.1.3線類圖形元素組織線類圖形元素包括很多種,如連續(xù)直線、混合線、樹狀線等,在本設計中,以最簡單的連續(xù)直線為例進行討論,對于其他類型線的實現(xiàn)方法,可根據(jù)連續(xù)直線的實現(xiàn)方法來開發(fā)。連續(xù)直線除了具有圖形元素基類所具有的屬性外,從圖形的幾何特征上,連續(xù)直線是由很多頂點組成的,而且頂點數(shù)目是不確定的。一條連續(xù)直線可能只有兩個頂點,也可能有幾千個頂點。所以,需要定義一個結構來存儲連續(xù)直線的一個頂點坐標。1.1.4面類圖形元素的組織10面類圖形元素一般是由閉合線圍成的區(qū)域。根據(jù)圍成面的邊界不同,有不同形式的面,如圓形區(qū)域橢圓形區(qū)域復合線區(qū)域多邊形區(qū)域等。最常用的面是多邊形區(qū)域,其邊界由一條連續(xù)直線組成。因為另外各種類型面的邊界一般都可以用連續(xù)直線來近似描述,所以,本設計只討論多邊形區(qū)域的實現(xiàn)方法。在描述多邊形區(qū)域時,最主要的是要描述邊界頂點坐標。描述面的邊界頂點坐標時,有不同的描述方法,一種方法是將邊界由幾段連續(xù)直線來描述。另外一種描述方法是直接存儲區(qū)域的邊界頂點坐標,即把區(qū)域的整個邊界作為一條連續(xù)直線來存儲。這種方法的缺點是造成坐標的重復存儲;優(yōu)點是具有較強的獨立性,不用考慮組成區(qū)域的連續(xù)直線段。在本設計中,采用直接存儲邊界坐標的方式。用這種方式組織多邊形區(qū)域時,組織方式與連續(xù)直線類似。所以,可以由連續(xù)直線類CPline派生出一個CPlineRgn類,來對多邊形區(qū)域進行管理。1.1.5網(wǎng)絡類圖形元素的組織網(wǎng)絡分析是GIS的一項非常重要的基本功能,最佳路徑分析、最佳游歷路徑分析、連通分析、資源分配等都需要有網(wǎng)絡類圖形元素對網(wǎng)絡進行描述、顯示和分析。為了能夠對網(wǎng)絡進行描述和處理,在系統(tǒng)中增加一類圖形元素來描述有方向、無轉角的網(wǎng)絡圖。這類圖形元素稱為網(wǎng)絡點。武漢科技學院2005屆畢業(yè)設計(論文)31.1.6圖形參數(shù)類在矢量圖形系統(tǒng)中,圖形參數(shù)是集中存儲的。在圖形元素基類中成員變量m_ColorPen,m_ColorBrush等存儲的是顏色列表的序列號,m_Layer中存儲的也是在圖層列表中的序列號。1.2組織矢量圖形系統(tǒng)的文檔1.2.1組織面向對象的文檔管理機制管理矢量圖形系統(tǒng)圖形數(shù)據(jù)的方法即文檔管理機制。在本設計的開發(fā)中,采用一套完全面向對象的文檔組織機制。這種機制就是通過圖形元素類創(chuàng)建很多圖形元素對象,每個圖形元素對象作為一個整體來組織存儲空間的分配、存取等各種管理功能。然后通過建立一種存儲機制,來管理指向所有圖形元素對象的指針,達到管理所有圖形元素對象的目的。這種文檔管理機制具有組織簡單結構化和移植性好,以及比較容易利用VC+程序設計語言的開發(fā)功能等優(yōu)點。缺點是需要較大的內(nèi)存空間。1.2.2利用MFC摸板創(chuàng)建管理圖形元素對象指針的對象管理一個矢量圖形系統(tǒng)文檔的思路是:每個圖形元素是圖形元素類創(chuàng)建的一個對象,在創(chuàng)建這個對象時得到指向這個對象的指針,建立一個對象指針數(shù)組來管理這些指針,以達到管理所有圖形元素對象的目的。在VC+下可以較容易地實現(xiàn)對指向圖形元素對象的指針的組織和管理。在MFC中有一個類模班CTypedPtrArray,可以用它來創(chuàng)建一個管理類指針的對象。例如,可以定義一個管理CLine類指針的對象如下:CTypedPtrArraym_LineArray;101.2.3實現(xiàn)矢量圖形系統(tǒng)的文檔在應用程序Draw中,可以派生幾個CObArray對象來分別管理基類圖形元素。在文檔類CDrawDoc中創(chuàng)建幾個管理各類圖形元素對象指針的CObArray對象如下:private:CTypedPtrArraym_LineArray;CTypedPtrArraym_CircleArray;CTypedPtrArraym_ArcArray;CTypedPtrArraym_TextArray;CTypedPtrArraym_TagArray;CTypedPtrArraym_PLineArray;CTypedPtrArraym_PLineRgnArray;CTypedPtrArraym_NetArray;1.2.4實現(xiàn)文檔的管理功能增加圖形元素在應用程序Draw中增加一個圖形元素對象(如一條直線)時,需要進行以下兩個步驟的操作:武漢科技學院2005屆畢業(yè)設計(論文)4首先需要創(chuàng)建一個圖形元素對象,并用圖形元素的實際數(shù)據(jù)初始化這個圖形元素對象。如增加一條直線時,需要創(chuàng)建一個CLine對象,并用這條直線的實際數(shù)據(jù)(起終點、所在圖層、顏色等)初始化這個CLine對象的成員變量。然后需要把指向新創(chuàng)建的圖形元素對象的指針,增加到文檔類中管理圖形元素對象指針的對象中。如增加一條CLine對象后,需要把指向這個CLine對象的指針增加到文檔類的m_LineArray對象中。為了實現(xiàn)增加各類圖形元素的功能,在文檔類CDrawDoc中定義幾個函數(shù),分別來完成增加各類圖形元素的操作功能3CLine*AddLine(shortColorPen,shortColorBrush,floatLineWide,shortLineType,shortLayer,intid_only,floatX1,floatY1,floatX2,floatY2);CCircle*AddCircle(shortColorPen,shortColorBrush,floatLineWide,shortLineType,shortLayer,intid_only,floatCircleX,floatCircleY,floatCircleR,BOOLbFill);CArc*AddArc(shortColorPen,shortColorBrush,floatLineWide,shortLineType,shortLayer,intid_only,floatCircleX,floatCircleY,floatCircleR,floatAngle1,floatAngle2);CText*AddText(shortColorPen,shortColorBrush,floatLineWide,shortLineType,shortLayer,intid_only,floatStartX,floatStartY,floatAngle1,floatAngle2,floatTextHeight,floatTextWide,floatOffWide,unsignedcharTextFont,intTextLong,CStringText);CTag*AddTag(shortColorPen,intLayer,floatxInsert,floatyInsert,floatxScale,floatyScale,floatangle,intonly_id,intidBlock);CPline*AddPLine(shortColorPen,shortColorBrush,floatLineWide,shortLineType,shortLayer,intid_only,intNumble,PointStruct*PointList);CPlineRgn*AddPLineRgn(shortColorPen,shortColorBrush,floatLineWide,shortLineType,shortLayer,intid_only,intNumble,PointStruct*PointList,BOOLbTransparent,BOOLbFill);CLinkNet*AddNetPoint(floatx,floaty,floatrRadiu,shortLayer,intid_only,shortColorPen);這8個函數(shù)分別用來實現(xiàn)增加一條直線、一個圓、一個圓弧、一個標注文本、一個子圖、一條連續(xù)直線、一個多邊形區(qū)域、一個網(wǎng)絡點的功能。函數(shù)返回指向新增圖形元素對象的指針。得到指向圖形元素對象的指針在一個矢量圖形系統(tǒng)中,有大量的圖形

溫馨提示

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

最新文檔

評論

0/150

提交評論