91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何基于C# GIS實現校園電子地圖

發布時間:2021-07-16 10:52:57 來源:億速云 閱讀:285 作者:chen 欄目:編程語言

這篇文章主要介紹“如何基于C# GIS實現校園電子地圖”,在日常操作中,相信很多人在如何基于C# GIS實現校園電子地圖問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何基于C# GIS實現校園電子地圖”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

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

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

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

本系統以中北大學校園地圖信息為基礎,在.NET環境下通過C#語言對MapX控件進行二次開發來實現的。MapX是MapInfo公司的地圖化的ActiveX,在利用面向對象程序設計語言的開發應用中嵌入MapX,可以非常簡便的使其應用程序具有強大的地圖控制功能。在應用程序設計前期還用到了MapInfo Professional軟件。MapInfo Professional是目前世界上比較完備、功能強大、全面直觀的桌面地理信息系統,是一套強大的基于Windows平臺的地圖化信息解決方案。MapInfo Professional主要提供地圖繪制、編輯、地理分析、網格影像等功能。

2.系統設計

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

1)當出現校園規劃地圖變更時,只需變更地圖數據并重新生成.GST文件,然后覆蓋應用程序下maps文件夾下的地圖文件即可。

2)當地圖軟件功能變更時,需要開發人員進行相關功能的完善與增刪。

采用這種設計可以使程序的代碼量大大降低,便于維護,提高了程序運行性能。

2.1系統功能與目標

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

1)實現校園電子地圖功能并實現對其的各種基本操作,能夠詳細直觀地表達校園各項空間信息和屬性信息;

2)實現地圖上的圖元定位并顯示相關屬性信息;

3)實現鷹眼圖功能;

4)實現地圖上距離測量;

2.2系統空間模型設計

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

本系統利用MapInfo Professional軟件根據需要將校園地圖繪制為7個圖層,分別為教學區圖層、住宿區圖層、生活區圖層、體育設施圖層、道路圖層、綠化帶圖層、背景圖層。同時分別為這些圖層做了適當的屬性數據設計,通過屬性數據來實現目標圖元的查詢與定位。 圖1為教學區圖層的屬性數據表,其它圖層數據表不再一一列出。

如何基于C# GIS實現校園電子地圖

圖1 教學區圖層屬性數據表

2.3利用Geoset Manager集成地圖

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

2.4系統主要功能設計

2.4.1 電子地圖基本功能的實現

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

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

其它工具調用類似,這里不再贅述。

2.4.2 鷹眼圖實現

鷹眼圖是GIS系統的一個基本功能,它是為了方便擁護瀏覽地圖而設計的,其作用是顯示主圖中所顯示的地圖在整副地圖中的位置。用戶還可以在鷹眼圖中鼠標單擊任意區域,則在主圖中同步顯示該區域,從而實現快速瀏覽。

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

C# GIS實現鷹眼圖的代碼如下:

private void axMap2_MapViewChanged(object sender, EventArgs e)  {  MapXLib.Feature tempFea; //聲明一個圖元,用于鷹眼圖中創建的矩形框  MapXLib.Points tempPoints = new Points();   MapXLib.Style tempStyle = new Style();   MapXLib.Point ptMap_1 = new MapXLib.Point();  MapXLib.Point ptMap_2 = new MapXLib.Point();  MapXLib.Point ptMap_3 = new MapXLib.Point();  MapXLib.Point ptMap_4 = new MapXLib.Point();  //設置矩形框四角坐標為主圖邊框  ptMap_1.Set(axMap2.CtlBounds.XMin, axMap2.CtlBounds.YMin);  ptMap_2.Set(axMap2.CtlBounds.XMax, axMap2.CtlBounds.YMin);  ptMap_3.Set(axMap2.CtlBounds.XMax, axMap2.CtlBounds.YMax);  ptMap_4.Set(axMap2.CtlBounds.XMin, axMap2.CtlBounds.YMax);  //添加點到點集  tempPoints.Add(ptMap_1, 1);  tempPoints.Add(ptMap_2, 2);  tempPoints.Add(ptMap_3, 3);  tempPoints.Add(ptMap_4, 4);  //////////////以下創建臨時圖層/////////////////////////   MapXLib.LayerInfo tempLayerInfo = new MapXLib.LayerInfoClass();  MapXLib.Fields flds = new MapXLib.FieldsClass();  flds.AddStringField("Name", 100, false);  tempLayerInfo.Type = MapXLib.LayerInfoTypeConstants.miLayerInfoTypeTemp;  tempLayerInfo.AddParameter("Name", "Eagle");  tempLayerInfo.AddParameter("Fields", flds);  m_layer_Eagle = axMap1.Layers.Add(tempLayerInfo, 1); //為鷹眼圖添加圖層  //////////////以上創建臨時圖層//////////////////////////   //以下設置邊框樣式  tempStyle.RegionPattern = FillPatternConstants.miPatternNoFill;  tempStyle.RegionBorderColor = (uint)MapXLib.ColorConstants.miColorBlue;  tempStyle.RegionBorderWidth = 2;  //以下在臨時圖層添加大小為axMapx2的邊界的Rectangle對象   try {  tempFea = axMap1.FeatureFactory.CreateRegion(tempPoints, tempStyle);//創建矩形框   m_feature_Eagle = axMap1.Layers._Item("Eagle").AddFeature(tempFea,  new MapXLib.RowValuesClass()); //添加邊框到鷹眼圖  }  catch (System.Exception ex)  {  MessageBox.Show(ex.ToString());  }  }

以下為鷹眼圖導航功能的實現代碼:

private void axMap1_MouseDownEvent(object sender, AxMapXLib.CMapXEvents_MouseDownEvent e)  {  double MapX = 0.0;  double MapY = 0.0;  axMap1.ConvertCoord(ref e.x, ref e.y, ref MapX, ref MapY, MapXLib.ConversionConstants.miScreenToMap); //將屏幕坐標轉換為地圖坐標  axMap2.CenterX = MapX; //將地圖坐標付給主視圖  axMap2.CenterY = MapY;  }

2.4.3 圖元查找及定位功能的實現

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

主圖中定位目標圖元主要代碼如下:

//查找定位Name字段為node.text的圖元,node.text為treeView1雙擊查找的圖元   string str = "Name=" + '"' + node.Text + '"'; //"Name"為圖層的一個字段   string layer_name = comboBox1.SelectedItem.ToString(); //選定的圖層名 FoundFeatures = axMap2.Layers._Item(layer_name).Search(str, null); //返回找到的圖元   if (FoundFeatures.Count > 0) //若找到目標圖元   {   axMap2.CenterX = FoundFeatures._Item(1).CenterX;//將目標圖元中心坐標賦給主圖   axMap2.CenterY = FoundFeatures._Item(1).CenterY;   }   Else //未找到目標圖元,提示目標圖元不存在   {   MessageBox.Show("查找信息不存在!");   }   將目標圖元”Notes”字段值顯示到label中,代碼如下:   ///////////////////以下是在label4中顯示圖元Notes字段信息///////////   lyr = axMap2.Layers._Item(layer_name); //comboBox1中選擇的圖層MapXLib.Fields flds = new MapXLib.FieldsClass();   flds.Add("Name", "Name", MapXLib.AggregationFunctionConstants.miAggregationSum, MapXLib.FieldTypeConstants.miTypeString);   flds.Add("Notes", "Notes", MapXLib.AggregationFunctionConstants.miAggregationSum, MapXLib.FieldTypeConstants.miTypeString);   dts = axMap2.DataSets.Add(MapXLib.DatasetTypeConstants.miDataSetLayer, lyr, lyr.Name, 0, 0, 0, flds, false); //將flds內容添加到數據集   for (int i = 0; i < dts.RowCount; i++)   {   if (dts.get_Value(i, "Name").ToString() == node.Text) //查找“Name”字段

如何基于C# GIS實現校園電子地圖

圖2 中北大學電子地圖界面

系統可分為4部分,頂部為工具欄實現縮放、漫游、測距功能,左側樹視圖實現查找定位圖元功能,左側下部為鷹眼圖實現導航功能,右側為主圖顯示地圖信息,右側下部顯示的是樹視圖中所查找圖元其它信息。

4.結束語

本系統是根據校園的地理結構設計的,精確反映了校園內的各種地物信息,可以為新生和家長以及其他初次到訪校園人員提供出行向導。系統界面友好、方便,可以作為校園網子系統使用,有助于校園規劃建設和管理,為高校帶來更好的社會效益。

到此,關于“如何基于C# GIS實現校園電子地圖”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

温宿县| 华宁县| 达孜县| 调兵山市| 乌海市| 板桥市| 盐亭县| 平果县| 莆田市| 兴安盟| 贵港市| 行唐县| 蕉岭县| 清徐县| 南城县| 静海县| 平定县| 英山县| 习水县| 陕西省| 霍城县| 延庆县| 太仆寺旗| 成武县| 耒阳市| 綦江县| 比如县| 洞口县| 界首市| 文成县| 多伦县| 沙雅县| 仁怀市| 利川市| 桐庐县| 武陟县| 揭东县| 常熟市| 体育| 连州市| 鄂伦春自治旗|