日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
基于C#GIS的校園電子地圖具體實(shí)現(xiàn)方法

基于C# GIS也就是在C#平臺上進(jìn)行地理信息系統(tǒng)的校園電子地圖,主要是存儲和處理空間信息的高新技術(shù)。本系統(tǒng)一般分為兩個部分,***部分為地圖數(shù)據(jù)的設(shè)計和.GST地圖文件的生成,第二部分為具體代碼的設(shè)計。

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)慶安,十年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

1.基于C# GIS的校園電子地圖簡介

地理信息系統(tǒng)(Geographic Information System, GIS)是融計算機(jī)圖形和數(shù)據(jù)于一體,存儲和處理空間信息的高新技術(shù)。它是以地理空間數(shù)據(jù)庫為基礎(chǔ),在計算機(jī)硬、軟件環(huán)境的支持下,對空間相關(guān)數(shù)據(jù)進(jìn)行采集、管理、操作、分析、模擬和顯示,并采用地理模型分析方法,適時提供多種空間和動態(tài)的地理信息,為地理研究、綜合評價、管理、定量分析和決策服務(wù)而建立起來的一類計算機(jī)應(yīng)用系統(tǒng)。校園電子地圖是利用GIS技術(shù)實(shí)現(xiàn)對校園地物位置的實(shí)時顯示,具有漫游,鷹眼,縮放,定位,量算,查詢等功能。

本系統(tǒng)以中北大學(xué)校園地圖信息為基礎(chǔ),在.NET環(huán)境下通過C#語言對MapX控件進(jìn)行二次開發(fā)來實(shí)現(xiàn)的。MapX是MapInfo公司的地圖化的ActiveX,在利用面向?qū)ο蟪绦蛟O(shè)計語言的開發(fā)應(yīng)用中嵌入MapX,可以非常簡便的使其應(yīng)用程序具有強(qiáng)大的地圖控制功能。在應(yīng)用程序設(shè)計前期還用到了MapInfo Professional軟件。MapInfo Professional是目前世界上比較完備、功能強(qiáng)大、全面直觀的桌面地理信息系統(tǒng),是一套強(qiáng)大的基于Windows平臺的地圖化信息解決方案。MapInfo Professional主要提供地圖繪制、編輯、地理分析、網(wǎng)格影像等功能。

2.系統(tǒng)設(shè)計

本系統(tǒng)設(shè)計可分為兩個部分,***部分為地圖數(shù)據(jù)的設(shè)計和.GST地圖文件的生成,第二部分為具體代碼的設(shè)計。這樣設(shè)計有以下目的:

1)當(dāng)出現(xiàn)校園規(guī)劃地圖變更時,只需變更地圖數(shù)據(jù)并重新生成.GST文件,然后覆蓋應(yīng)用程序下maps文件夾下的地圖文件即可。

2)當(dāng)?shù)貓D軟件功能變更時,需要開發(fā)人員進(jìn)行相關(guān)功能的完善與增刪。

采用這種設(shè)計可以使程序的代碼量大大降低,便于維護(hù),提高了程序運(yùn)行性能。

2.1系統(tǒng)功能與目標(biāo)

本系統(tǒng)設(shè)計目標(biāo)是提供校園各地物的具體位置及相關(guān)地物信息閱覽,為新生以及其他***次到訪者提供便利的圖文信息查詢。為此,本系統(tǒng)功能主要如下:

1)實(shí)現(xiàn)校園電子地圖功能并實(shí)現(xiàn)對其的各種基本操作,能夠詳細(xì)直觀地表達(dá)校園各項空間信息和屬性信息;

2)實(shí)現(xiàn)地圖上的圖元定位并顯示相關(guān)屬性信息;

3)實(shí)現(xiàn)鷹眼圖功能;

4)實(shí)現(xiàn)地圖上距離測量;

2.2系統(tǒng)空間模型設(shè)計

MapInfo采用空間數(shù)據(jù)與屬性數(shù)據(jù)分開存儲模式??臻g數(shù)據(jù)是用來確定圖形和制圖特征的位置,這是以地球表面空間位置為參照的;屬性數(shù)據(jù)用來反映與幾何位置無關(guān)的屬性,它一般是經(jīng)過分類,命名,量算,統(tǒng)計等方法得到的。MapInfo根據(jù)不同專題將地圖分層,然后按照一定順序來組織地圖。每一個圖層都包含了地圖的不同部分,它存儲為若干文件。將這些圖層按一定順序疊加,就能看到整個地圖信息。

本系統(tǒng)利用MapInfo Professional軟件根據(jù)需要將校園地圖繪制為7個圖層,分別為教學(xué)區(qū)圖層、住宿區(qū)圖層、生活區(qū)圖層、體育設(shè)施圖層、道路圖層、綠化帶圖層、背景圖層。同時分別為這些圖層做了適當(dāng)?shù)膶傩詳?shù)據(jù)設(shè)計,通過屬性數(shù)據(jù)來實(shí)現(xiàn)目標(biāo)圖元的查詢與定位。 圖1為教學(xué)區(qū)圖層的屬性數(shù)據(jù)表,其它圖層數(shù)據(jù)表不再一一列出。

圖1 教學(xué)區(qū)圖層屬性數(shù)據(jù)表

2.3利用Geoset Manager集成地圖

在MapX中,地圖是分層顯示的,每一層對應(yīng)一個.Tab文件。安裝MapX5.0后,運(yùn)行Geoset Manager,將MapInfo Professional生成的7個圖層按照教學(xué)區(qū)圖層、住宿區(qū)圖層、生活區(qū)圖層、體育設(shè)施圖層、綠化帶圖層、道路圖層、背景圖層順序添加,然后存儲到一個.GST文件中,本系統(tǒng)存儲為“nuc_1.gst”。這樣在程序段Form1_Load中直接加載該.GST文件,不用依次加載各個圖層,使編程工作更加簡單。

2.4系統(tǒng)主要功能設(shè)計

2.4.1 電子地圖基本功能的實(shí)現(xiàn)

電子地圖基本功能包括放大、縮小、漫游等,MapX控件已經(jīng)集成了這些工具,因此編程時C#只需要簡單調(diào)用這些工具即可,具體代碼如下:

 
 
 
 
  1. private void toolStripButton1_Click(object sender, EventArgs e)  
  2. {  
  3. axMap2.CurrentTool = MapXLib.ToolConstants.miZoomInTool; //放大工具  

其它工具調(diào)用類似,這里不再贅述。

2.4.2 鷹眼圖實(shí)現(xiàn)

鷹眼圖是GIS系統(tǒng)的一個基本功能,它是為了方便擁護(hù)瀏覽地圖而設(shè)計的,其作用是顯示主圖中所顯示的地圖在整副地圖中的位置。用戶還可以在鷹眼圖中鼠標(biāo)單擊任意區(qū)域,則在主圖中同步顯示該區(qū)域,從而實(shí)現(xiàn)快速瀏覽。

實(shí)現(xiàn)鷹眼圖的思路為:首先在窗體上放兩個MapX控件,分別為主圖和鷹眼圖,然后在鷹眼圖上創(chuàng)建一個圖層,并在其上添加一個矩形框,該矩形的大小隨主圖邊界而變化。

C# GIS實(shí)現(xiàn)鷹眼圖的代碼如下:

 
 
 
 
  1. private void axMap2_MapViewChanged(object sender, EventArgs e)  
  2. {  
  3. MapXLib.Feature tempFea; //聲明一個圖元,用于鷹眼圖中創(chuàng)建的矩形框  
  4. MapXLib.Points tempPoints = new Points();   
  5. MapXLib.Style tempStyle = new Style();   
  6. MapXLib.Point ptMap_1 = new MapXLib.Point();  
  7. MapXLib.Point ptMap_2 = new MapXLib.Point();  
  8. MapXLib.Point ptMap_3 = new MapXLib.Point();  
  9. MapXLib.Point ptMap_4 = new MapXLib.Point();  
  10. //設(shè)置矩形框四角坐標(biāo)為主圖邊框  
  11. ptMap_1.Set(axMap2.CtlBounds.XMin, axMap2.CtlBounds.YMin);  
  12. ptMap_2.Set(axMap2.CtlBounds.XMax, axMap2.CtlBounds.YMin);  
  13. ptMap_3.Set(axMap2.CtlBounds.XMax, axMap2.CtlBounds.YMax);  
  14. ptMap_4.Set(axMap2.CtlBounds.XMin, axMap2.CtlBounds.YMax);  
  15. //添加點(diǎn)到點(diǎn)集  
  16. tempPoints.Add(ptMap_1, 1);  
  17. tempPoints.Add(ptMap_2, 2);  
  18. tempPoints.Add(ptMap_3, 3);  
  19. tempPoints.Add(ptMap_4, 4);  
  20. //////////////以下創(chuàng)建臨時圖層/////////////////////////   
  21. MapXLib.LayerInfo tempLayerInfo = new MapXLib.LayerInfoClass();  
  22. MapXLib.Fields flds = new MapXLib.FieldsClass();  
  23. flds.AddStringField("Name", 100, false);  
  24. tempLayerInfo.Type = MapXLib.LayerInfoTypeConstants.miLayerInfoTypeTemp;  
  25. tempLayerInfo.AddParameter("Name""Eagle");  
  26. tempLayerInfo.AddParameter("Fields", flds);  
  27. m_layer_Eagle = axMap1.Layers.Add(tempLayerInfo, 1); //為鷹眼圖添加圖層  
  28. //////////////以上創(chuàng)建臨時圖層//////////////////////////   
  29. //以下設(shè)置邊框樣式  
  30. tempStyle.RegionPattern = FillPatternConstants.miPatternNoFill;  
  31. tempStyle.RegionBorderColor = (uint)MapXLib.ColorConstants.miColorBlue;  
  32. tempStyle.RegionBorderWidth = 2;  
  33. //以下在臨時圖層添加大小為axMapx2的邊界的Rectangle對象   
  34. try 
  35. {  
  36. tempFea = axMap1.FeatureFactory.CreateRegion(tempPoints, tempStyle);//創(chuàng)建矩形框   
  37. m_feature_Eagle = axMap1.Layers._Item("Eagle").AddFeature(tempFea,  
  38. new MapXLib.RowValuesClass()); //添加邊框到鷹眼圖  
  39. }  
  40. catch (System.Exception ex)  
  41. {  
  42. MessageBox.Show(ex.ToString());  
  43. }  

以下為鷹眼圖導(dǎo)航功能的實(shí)現(xiàn)代碼:

 
 
 
 
  1. private void axMap1_MouseDownEvent(object sender, AxMapXLib.CMapXEvents_MouseDownEvent e)  
  2. {  
  3. double MapX = 0.0;  
  4. double MapY = 0.0;  
  5. axMap1.ConvertCoord(ref e.x, ref e.y, ref MapX, ref MapY, MapXLib.ConversionConstants.miScreenToMap); //將屏幕坐標(biāo)轉(zhuǎn)換為地圖坐標(biāo)  
  6. axMap2.CenterX = MapX; //將地圖坐標(biāo)付給主視圖  
  7. axMap2.CenterY = MapY;  

2.4.3 圖元查找及定位功能的實(shí)現(xiàn)

首先,根據(jù)comboBox1選擇圖層,然后將該圖層”Name”字段的值綁定到treeView1,雙擊treeView1中想要查找的圖元,則在主圖中心位置就會顯示要查找的圖元,并且將圖元其他信息顯示在主圖下方label中。

主圖中定位目標(biāo)圖元主要代碼如下:

 
 
 
 
  1. //查找定位Name字段為node.text的圖元,node.text為treeView1雙擊查找的圖元  
  2.  
  3. string str = "Name=" + '"' + node.Text + '"'//"Name"為圖層的一個字段  
  4.  
  5. string layer_name = comboBox1.SelectedItem.ToString(); //選定的圖層名 FoundFeatures = axMap2.Layers._Item(layer_name).Search(str, null); //返回找到的圖元  
  6.  
  7. if (FoundFeatures.Count > 0) //若找到目標(biāo)圖元  
  8.  
  9. {  
  10.  
  11. axMap2.CenterX = FoundFeatures._Item(1).CenterX;//將目標(biāo)圖元中心坐標(biāo)賦給主圖  
  12.  
  13. axMap2.CenterY = FoundFeatures._Item(1).CenterY;  
  14.  
  15. }  
  16.  
  17. Else //未找到目標(biāo)圖元,提示目標(biāo)圖元不存在  
  18.  
  19. {  
  20.  
  21. MessageBox.Show("查找信息不存在!");  
  22.  
  23. }  
  24.  
  25. 將目標(biāo)圖元”Notes”字段值顯示到label中,代碼如下:  
  26.  
  27. ///////////////////以下是在label4中顯示圖元Notes字段信息///////////  
  28.  
  29. lyr = axMap2.Layers._Item(layer_name); //comboBox1中選擇的圖層MapXLib.Fields flds = new MapXLib.FieldsClass();  
  30.  
  31. flds.Add("Name""Name", MapXLib.AggregationFunctionConstants.miAggregationSum, MapXLib.FieldTypeConstants.miTypeString);  
  32.  
  33. flds.Add("Notes""Notes", MapXLib.AggregationFunctionConstants.miAggregationSum, MapXLib.FieldTypeConstants.miTypeString);  
  34.  
  35. dts = axMap2.DataSets.Add(MapXLib.DatasetTypeConstants.miDataSetLayer, lyr, lyr.Name, 0, 0, 0, flds, false); //將flds內(nèi)容添加到數(shù)據(jù)集  
  36.  
  37. for (int i = 0; i < dts.RowCount; i++)  
  38.  
  39. {  
  40.  
  41. if (dts.get_Value(i, "Name").ToString() == node.Text) //查找“Name”字段 

圖2 中北大學(xué)電子地圖界面

系統(tǒng)可分為4部分,頂部為工具欄實(shí)現(xiàn)縮放、漫游、測距功能,左側(cè)樹視圖實(shí)現(xiàn)查找定位圖元功能,左側(cè)下部為鷹眼圖實(shí)現(xiàn)導(dǎo)航功能,右側(cè)為主圖顯示地圖信息,右側(cè)下部顯示的是樹視圖中所查找圖元其它信息。

4.結(jié)束語

本系統(tǒng)是根據(jù)校園的地理結(jié)構(gòu)設(shè)計的,精確反映了校園內(nèi)的各種地物信息,可以為新生和家長以及其他初次到訪校園人員提供出行向?qū)?。系統(tǒng)界面友好、方便,可以作為校園網(wǎng)子系統(tǒng)使用,有助于校園規(guī)劃建設(shè)和管理,為高校帶來更好的社會效益。

【編輯推薦】

  1. C# this關(guān)鍵字詳解
  2. C#調(diào)用析構(gòu)方法詳解
  3. C#釋放托管資源簡單描述
  4. C#單路代理簡單分析
  5. C#文法產(chǎn)生式概述

文章標(biāo)題:基于C#GIS的校園電子地圖具體實(shí)現(xiàn)方法
鏈接分享:http://www.5511xx.com/article/cojchsj.html