計算機專業論文

來源:文萃谷 4.39K

計算機專業論文

一、實驗課時和類型:

學時:8

實驗類型:綜合性

二、實驗目的:

1.認識空間數據庫中數據的存放方式或存儲結構;

2.掌握空間數據庫的格網索引、標題索引的建立方法;

3.理解空間索引的功能和意義;

4.加強學生面向對象程序設計的能力。

三、適用專業:

地理信息系統專業

四、採用教材

教材:《計算機地圖製圖》艾自興,龍毅編著 武漢大學出版社

參考書:《地圖學》 祝國瑞 編著 武漢大學出版社

五、儀器與工具:

P3以上配置計算機;

VC++工具軟件;

實驗地圖數據。

六、實驗原理與內容:

本次實驗為綜合性實驗,涉及《數字地圖製圖原理》、《計算機地圖製圖原理》、《地圖數據庫》等幾門課程中所講的內容。

七、實驗數據説明

1、 地圖區域:武漢市

文件名:武漢實習數據

2、分類代碼:

代碼 名稱

30000 控制點

10000 圖廓點

10001 鐵路

10003 汽渡虛線

10004 主要道路

20001 碼頭

20002 鐵路中轉站

20003 河流、湖泊

20004 居民地

3、代碼説明:

分類代碼第一個字符為1,表示線目標;

分類代碼第二個字符為2,表示面目標。

4、控制點順序:

第一點:左上角 第二點:右上角

第三點:右下角 第四點:左下角

控制點的理論值(人為規定x,y):

第一點:12.50 37.40

第二點:62.50 37.40

第三點:62.50 82.40

採用仿射變換方法。

主要實驗內容:

1.讀取數據

2.仿射變換

3.繪圖顯示

4.建立定位索引——格網索引

5.建立定性索引——標題索引

6.將已建立的格網索引用於目標拾取功能的實現

7.運用已建立的標題索引實現對象的屬性查詢

八、實驗步驟:

第一;建立一個MapOfWuhan (MFC)工程,參數缺剩

第二;建立地圖三要素:點、線、面。點類包括對應點的X,Y座標;線類包括線號(Xcode),線分類代碼(Xflcode)以及組成線的點號數組(m_array);面類包括面號(Mcode),面分類代碼(Mflcode)以及組成面的點號數組(m_array)。

第三;在讀取數據時,要設計存儲結構。在Doc中要建立點類數組Array_dian,線類數組Array_xian,面類數組Array_mian,分別存放對應的點線面類目標。一共有655組數據,讀取的時候每組中的X,Y座標存放到預先定義的點類對象中,若每組的分類代碼為線類目標的分類代碼,則把相應的線的分類代碼存放到事先定義的`線類對象的Xflcode中,把對應的組號存放到Xcode中,把組成線的一系列點類對象存放到線類對象的m_array中,最後把線類對象存放到對應的線類數組(Array_xian)中;面類也是如此。這樣,就完成了讀取存儲,即將不同類的對象存放到不同的類數組中。

第四;對數據進行仿射變換。選擇控制點中的1,2,3點,根據這三點的理論值和規定其在屏幕上的輸出值求出仿射變換的未知係數a0,a1,a2,b0,b1,b2。然後,順序掃描線類數組Array_xian和 面類數組Array_mian,對不同的線類對象和麪類對象的座標值進行變換(X=a0*x+a1*y+a2;Y=b0*x+b1*y+b2)。

第五;當顯示數據時,為了保證面狀地物不壓蓋線狀地物,首先要對面裝地物進行顯示,即順序掃描面類數組Array_mian,根據數組中對象分類代碼(Mflcode)的不同,將不同的對象進行着色填充並顯示在屏幕上;然後再順序掃描線類數組Array_xian,同樣根據線分類代碼(Xflcode)的不同,對不同對象規定不同的畫筆並顯示在屏幕上。

第六;建立格網索引首先要建立一個索引類Csuoyin,其中包括存放經過每個格網的對象的標誌號碼(即線號(Xcode)和麪號(Mcode))的數組HLcode,然後再Doc中定義一個自己已規定行列號的格網索引類的數組HL[行號][列號]。然後對格網進行初始化,按行順序掃描每一個格網,在初始化每一個格網時,要順序掃描線類數組Array_xian和麪類數組Array_mian,判斷當前對象是否在當前格網內部,若在當前格網內部,則將當前對象的標誌碼(即線號Xcode或面號Mcode)存放到當前格網對應的HLcode中,依次進行,直到掃描完畢,格網初始化完畢。

第七;生成格網索引。首先要判斷當前鼠標點擊處所對應格網的行列號(行號=(當前點擊點.Y-20)/20;列號=(當前點擊點.X-60)/20),然後再順序掃描當前格網所存放的對象,在掃描每一個對象時,都要掃描一次線類數組Array_xian和麪類數組Array_mian,若當前格網對象的號碼與線類或者面類數組對象的Xcode或是Mcode相同,則對線類或者是面類數組中的對象進行顯示輸出。至此,格網索引完畢。

第八;建立一個定性索引的對話框,在對話框中加入一個EditBox,即文字輸入窗口,在窗口中輸入要查詢的地物名稱,點擊確定即可將窗口中的內容存放到定性索引下預先定義的一個Char類型的數組Dx_shuzu中。

第九;在Doc中定義一個定性索引類型的對象Dx_dialog,然後順序掃描線類數組Array_xian,若當前在對話框輸入的內容與對應的線類地物名稱匹配成功(即Strcmp(“對話框輸入內容”,“線類地物名稱”)==0),則根據當前線狀地物的分類代碼Xflcode,將當前地物輸出顯示在屏幕上;順序掃描面類數組Array_mian,若在對話框中輸入的內容與面狀地物的名稱匹配成功(即Strcmp(“對話框輸入內容”,“面類地物名稱”)==0),則根據面狀地物的分類代碼Mflcode,將當前面狀地物輸出顯示在屏幕上,定性索引建立完畢。

第十;求出當前點擊點所對應的格網行列號,然後將當前格網存放的對象一次取出,再求出當前點擊點與每個對象的距離d,再求出d中的最小值dmin,若dmin<規定的閥值D,則拾取顯示dmin對應的對象,否則拾取不成功。

九、注意事項

1.上機之前應先做好設計,以控制實驗進程和方向。

2.實驗中注意總結,聯繫所涉及的理論知識,解決所遇到的問題。

十、問題討論

1.格網索引建立的方法是什麼?

格網型空間索引的基本思想是將研究區域用橫豎線條劃分大小相等和不等的格網,記錄每一個格網所包含的空間實體。當用户進行空間查詢時,首先計算出用户查詢對象所在格網,然後再在該網格中快速查詢所選空間實體,這樣一來就大大地加速了空間索引的查詢速度。

建立格網索引常用的方法包括空間驅動索引和數據驅動索引,空間驅動索引包括均勻格網索引,點對象的網格文件索引,網格文件索引MBB;數據驅動索引包括R樹和R+樹索引等。

2.建立空間索引的目的是什麼?

空間索引的目的是為了在地理信息系統中快速定位到所選中的地理對象,從而提高了空間操作的速度和效率。空間技術的優劣直接影響GIS的整體性能,因而它是GIS的一項關鍵技術。建立空間索引機制的主要目的是便於空間目標的定位及各種檢索操作。在一體化結構中共有兩種不同類型的索引結構:一種是建立面向目標數據(點和線要素數據)的索引結構,以便直接明確目標與空間位置之間的二維關係;另一種是建立面向空間數據(面要素基本格網充填數據)的索引結構,以便使其部分具有面向目標的功能。

熱門標籤