国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

監(jiān)測數(shù)據(jù)在電子地圖顯示的實現(xiàn)

2020-09-27 23:02:21何曉東梁中義
電腦知識與技術(shù) 2020年23期
關(guān)鍵詞:電子地圖監(jiān)測數(shù)據(jù)

何曉東 梁中義

摘要:監(jiān)測數(shù)據(jù)保存在數(shù)據(jù)庫中,可以查詢顯示為列表形式,為使顯示更直觀,本文采用C/S結(jié)構(gòu),使用C#語言實現(xiàn)了監(jiān)測數(shù)據(jù)在離線電子地圖的可視化。

關(guān)鍵詞:監(jiān)測數(shù)據(jù);GPS;電子地圖

中圖分類號:TP311? ? 文獻標識碼:A

文章編號:1009-3044(2020)23-0195-02

監(jiān)測數(shù)據(jù)由無線FM監(jiān)測模塊采集,通過手機發(fā)送到數(shù)據(jù)庫保存,數(shù)據(jù)庫采用MS SQL Server2012。監(jiān)測數(shù)據(jù)包括頻率、位置(GPS坐標)、信號場強、采集時間等,將監(jiān)測數(shù)據(jù)顯示在電子地圖具有直觀、用戶體驗更好的優(yōu)點。

1 系統(tǒng)功能

設(shè)計能按時間、采集終端號查詢指定的無線采集模塊在指定時間段采集的保存在數(shù)據(jù)庫中的監(jiān)測數(shù)據(jù),讀取數(shù)據(jù)后,根據(jù)每條采集數(shù)據(jù)中GPS坐標信息,在程序窗口的電子地圖上逐一用圖標標識,當鼠標懸停某標識時,會顯示該圖標對應(yīng)的采集的完整的監(jiān)測數(shù)據(jù)。也可以以某GPS坐標為圓心,設(shè)置半徑數(shù)值,查詢顯示該圓形區(qū)域的監(jiān)測數(shù)據(jù)并顯示。電子地圖采用離線地圖,考慮實踐使用范圍,僅下載安徽省地圖。

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

2.1 系統(tǒng)結(jié)構(gòu)

采用分層設(shè)計,系統(tǒng)由表示層、業(yè)務(wù)處理層、數(shù)據(jù)接入層三層組成。表示層負責用戶交互,包括查詢功能區(qū)和監(jiān)測數(shù)據(jù)顯示功能區(qū),查詢功能區(qū)負責接收用戶輸入的查詢參數(shù),調(diào)用業(yè)務(wù)層函數(shù),并將返回的結(jié)果在顯示功能區(qū)中的電子地圖上逐一標識。數(shù)據(jù)接入層負責操作數(shù)據(jù)庫,執(zhí)行數(shù)據(jù)查詢命令,返回查詢結(jié)果給調(diào)用者。業(yè)務(wù)處理層負責實現(xiàn)表示層查詢功能區(qū)查詢請求,調(diào)用數(shù)據(jù)接入層函數(shù)進行數(shù)據(jù)查詢,并把接入層返回的查詢結(jié)果數(shù)據(jù)返回給表示層調(diào)用者。

2.2 數(shù)據(jù)庫

本方案中監(jiān)測數(shù)據(jù)保存的用數(shù)據(jù)庫是MS SQL Server2012,核心的表有table_DeviceInfor(監(jiān)測模塊信息表)、table_AcqInfor(監(jiān)測數(shù)據(jù)表)等。監(jiān)測模塊信息表用于保存監(jiān)測設(shè)備信息,包括設(shè)備ID、 設(shè)備名稱、設(shè)備SN等字段。監(jiān)測數(shù)據(jù)表存儲監(jiān)測模塊發(fā)送的監(jiān)測數(shù)據(jù),包括記錄ID、設(shè)備ID、頻率、場強、信噪比、GPS經(jīng)度、GPS緯度、采集時間等字段。

2.3 電子地圖

本方案采用高德地圖,下載安徽省地圖數(shù)據(jù)供離線使用。

3 程序設(shè)計

方案采用VS2015開發(fā),采用C#Windows桌面模式。表示層采用WindowsForm實現(xiàn),核心的地圖顯示等操作使用專用控件GMap.NET。 業(yè)務(wù)邏輯層由業(yè)務(wù)模型和業(yè)務(wù)服務(wù)組成,業(yè)務(wù)模型負責建立主要業(yè)務(wù)對應(yīng)模型(業(yè)務(wù)類),業(yè)務(wù)服務(wù)層為表示層提供服務(wù)。數(shù)據(jù)接入層負責連接數(shù)據(jù)庫,進行相關(guān)的數(shù)據(jù)查詢操作。

3.1表示層

表示層核心功能是把監(jiān)測數(shù)據(jù)在電子地圖上進行標識,涉及地圖的相關(guān)操作,考慮復(fù)雜度,本方案采用已有的電子地圖操作控件GMap.NET。GMap.NET是一個強大、免費、開源的.NET控件,可以運行在Windows Forms 和WPF環(huán)境,支持包括百度、高德、google等多種地圖, 可實現(xiàn)GEO地圖定位和地圖計算功能。下載后把相關(guān)庫導(dǎo)入到開發(fā)項目引用。關(guān)鍵代碼:在地圖上顯示監(jiān)測數(shù)據(jù)

public void ShowAcqMarkers(IEnumerable items, string overlayid) //GMapOverlay overlay)

{? ?//獲取指定顯示的overlay

GMapOverlay overlay= gMapControl1.Overlays.FirstOrDefault(x => x.Id == overlayid);

if(overlay==null)

{? ?//若無,則創(chuàng)建

overlay= new GMapOverlay(overlayid);

}

//遍歷監(jiān)測數(shù)據(jù),逐條標識到地圖

foreach (AcqDataItem item in items)

{? ?//創(chuàng)建圖標,定位

GMapMarker marker = new GMarkerGoogle(new PointLatLng(item.gpsa, item.gpsl), GMarkerGoogleType.blue_dot);

marker.Tag = item.gsId;? ? //設(shè)置圖標Tag值為監(jiān)測數(shù)據(jù)記錄Id

//設(shè)置圖標提示信息

marker.ToolTipText = string.Format("緯度:{0},經(jīng)度:{1},"+"\r\n"+"頻率:{2};場強:{3};信噪比:{4},"+"\r\n"+"時間:{5}",item.gpsa,item.gpsl, item.freq, item.ES, item.SN,item.rtime);

overlay.Markers.Add(marker);//把圖標加入overlay

}

}

3.2 業(yè)務(wù)層

業(yè)務(wù)模型包括設(shè)備類(AcqDataItem)和監(jiān)測數(shù)據(jù)類(DeviceInfor),分別表示設(shè)備和監(jiān)測數(shù)據(jù)。服務(wù)類(ACQService)為表示層提供服務(wù),例如查詢指定坐標、指定半徑、指定頻率的監(jiān)測數(shù)據(jù),由函數(shù)GetAcqDataByALAndFreq實現(xiàn)。

public IEnumerable GetAcqDataByALAndFreq(decimal gpsa, decimal gpsl, decimal radius, Int32? freq)

{? ? ? ? ? //創(chuàng)建數(shù)據(jù)接入類實例

BMDBRepository mybmdbrepository = new BMDBRepository();

//調(diào)用DAO中的函數(shù)GetAcqDataByALAndFreq

return mybmdbrepository.GetAcqDataByALAndFreq(gpsa, gpsl, radius, freq);

}

3.3 數(shù)據(jù)接入層

數(shù)據(jù)接入層由BMDBRepository類和DeviceRepository類構(gòu)成,分別對數(shù)據(jù)表table_AcqInfor、table_table_DeviceInfor進行操作。

BMDBRepository類中主要函數(shù)GetAcqDataByALAndFreq為上層提供按指定坐標、指定半徑、指定頻率的查詢監(jiān)測數(shù)據(jù)服務(wù),其通過調(diào)用存儲過程sp_GetAcqDataByALAndFreq實現(xiàn)功能。代碼如下:

public IEnumerable GetAcqDataByALAndFreq(decimal gpsa,decimal gpsl,decimal radio, Int32 freq)

{

IList acqdataitems = new List();

SqlConnection connection = new SqlConnection(_connectionString);

SqlCommand command = connection.CreateCommand();

command.Connection = connection;

SqlCommand cmd = new SqlCommand("sp_GetAcqDataByALAndFreq", connection);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter("@Altitude", SqlDbType.Decimal));

cmd.Parameters["@Altitude"].Value = gpsa;

cmd.Parameters.Add(new SqlParameter("@Logitude", SqlDbType.Decimal));

cmd.Parameters["@Logitude"].Value = gpsl;

cmd.Parameters.Add(new SqlParameter("@Radio", SqlDbType.Decimal));

cmd.Parameters["@Radio"].Value = radio;

cmd.Parameters.Add(new SqlParameter("@Freq", SqlDbType.BigInt));

cmd.Parameters["@Freq"].Value = freq;

using (connection)

{

connection.Open();

SqlDataReader myread = cmd.ExecuteReader();

if (myread.HasRows)

{? ?while (myread.Read())

{

AcqDataItem item = new AcqDataItem();

item.gsId = Guid.Parse(myread["GSID"].ToString());

item.freq = Int32.Parse(myread["Freq"].ToString());

item.ES = float.Parse(myread["ES"].ToString());

item.SN = float.Parse(myread["SN"].ToString());

item.gpsl = double.Parse(myread["gpsl"].ToString());

item.gpsa = double.Parse(myread["gpsa"].ToString());

item.rtime = DateTime.Parse(myread["rtime"].ToString());

acqdataitems.Add(item);

}

}

}

return acqdataitems;

}

4 測試

某次查詢的監(jiān)測數(shù)據(jù)在地圖顯示(圖1),一個藍色水滴標識代表一個監(jiān)測數(shù)據(jù),鼠標懸浮圖標會彈出該點監(jiān)測數(shù)據(jù)詳細信息。

5 小結(jié)

本方案采用VS2015平臺和相關(guān)控件,實現(xiàn)了監(jiān)測數(shù)據(jù)在電子地圖的顯示直觀、清晰,達到了設(shè)計目的。

參考文獻:

[1] Scott Mollett.ASP.NET設(shè)計模式[M].北京:清華大學(xué)出版社,2011.

[2] Simon Robinson,K.Scott Allen,等.著,楊浩,楊鐵男,等譯.C#高級編程[M].北京:清華大學(xué)出版社,2002.

【通聯(lián)編輯:聞翔軍】

猜你喜歡
電子地圖監(jiān)測數(shù)據(jù)
中國種豬場引種指南電子地圖
中國公豬站引種指南電子地圖
基于靈活編組的互聯(lián)互通車載電子地圖設(shè)計及動態(tài)加載
GSM-R接口監(jiān)測數(shù)據(jù)精確地理化方法及應(yīng)用
基于Mapserver的增強現(xiàn)實電子地圖的設(shè)計與實現(xiàn)
統(tǒng)計分析監(jiān)測數(shù)據(jù)采集技術(shù)要求標準研究
環(huán)評中引用大氣現(xiàn)狀監(jiān)測數(shù)據(jù)的研究
電子地圖在初中地理教學(xué)中的應(yīng)用實踐
GPS異常監(jiān)測數(shù)據(jù)的關(guān)聯(lián)負選擇分步識別算法
基于小波函數(shù)對GNSS監(jiān)測數(shù)據(jù)降噪的應(yīng)用研究
鄂温| 鹿泉市| 吉首市| 潼南县| 灵寿县| 大余县| 林甸县| 武穴市| 卢龙县| 江山市| 英山县| 福泉市| 六盘水市| 山阳县| 正蓝旗| 辛集市| 定襄县| 锡林郭勒盟| 汝州市| 政和县| 正蓝旗| 赞皇县| 延川县| 绥阳县| 长汀县| 潞城市| 五华县| 建德市| 德昌县| 寿光市| 丹凤县| 津南区| 土默特右旗| 彭水| 三门县| 龙口市| 溆浦县| 武城县| 彭泽县| 大厂| 江达县|