999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

監測數據在電子地圖顯示的實現

2020-09-27 23:02:21何曉東梁中義
電腦知識與技術 2020年23期

何曉東 梁中義

摘要:監測數據保存在數據庫中,可以查詢顯示為列表形式,為使顯示更直觀,本文采用C/S結構,使用C#語言實現了監測數據在離線電子地圖的可視化。

關鍵詞:監測數據;GPS;電子地圖

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

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

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

1 系統功能

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

2 系統設計

2.1 系統結構

采用分層設計,系統由表示層、業務處理層、數據接入層三層組成。表示層負責用戶交互,包括查詢功能區和監測數據顯示功能區,查詢功能區負責接收用戶輸入的查詢參數,調用業務層函數,并將返回的結果在顯示功能區中的電子地圖上逐一標識。數據接入層負責操作數據庫,執行數據查詢命令,返回查詢結果給調用者。業務處理層負責實現表示層查詢功能區查詢請求,調用數據接入層函數進行數據查詢,并把接入層返回的查詢結果數據返回給表示層調用者。

2.2 數據庫

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

2.3 電子地圖

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

3 程序設計

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

3.1表示層

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

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

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

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

if(overlay==null)

{? ?//若無,則創建

overlay= new GMapOverlay(overlayid);

}

//遍歷監測數據,逐條標識到地圖

foreach (AcqDataItem item in items)

{? ?//創建圖標,定位

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

marker.Tag = item.gsId;? ? //設置圖標Tag值為監測數據記錄Id

//設置圖標提示信息

marker.ToolTipText = string.Format("緯度:{0},經度:{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 業務層

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

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

{? ? ? ? ? //創建數據接入類實例

BMDBRepository mybmdbrepository = new BMDBRepository();

//調用DAO中的函數GetAcqDataByALAndFreq

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

}

3.3 數據接入層

數據接入層由BMDBRepository類和DeviceRepository類構成,分別對數據表table_AcqInfor、table_table_DeviceInfor進行操作。

BMDBRepository類中主要函數GetAcqDataByALAndFreq為上層提供按指定坐標、指定半徑、指定頻率的查詢監測數據服務,其通過調用存儲過程sp_GetAcqDataByALAndFreq實現功能。代碼如下:

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 測試

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

5 小結

本方案采用VS2015平臺和相關控件,實現了監測數據在電子地圖的顯示直觀、清晰,達到了設計目的。

參考文獻:

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

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

【通聯編輯:聞翔軍】

主站蜘蛛池模板: 五月六月伊人狠狠丁香网| 亚洲综合国产一区二区三区| 毛片久久久| 一级毛片无毒不卡直接观看| 精品国产自| 国产91视频观看| 高清欧美性猛交XXXX黑人猛交| 噜噜噜久久| 久久男人资源站| 亚洲综合色在线| 久久香蕉国产线| 中文字幕天无码久久精品视频免费| 伊人丁香五月天久久综合 | 无码日韩视频| 国产人成在线视频| 无码国内精品人妻少妇蜜桃视频| 久久久噜噜噜久久中文字幕色伊伊| 亚洲人成网站在线观看播放不卡| 97se亚洲综合在线| 成AV人片一区二区三区久久| 91久久偷偷做嫩草影院免费看| 在线观看网站国产| 精品国产欧美精品v| 中文字幕乱码中文乱码51精品| 一区二区三区四区精品视频 | 亚洲精品片911| 国产亚洲日韩av在线| 狠狠亚洲婷婷综合色香| 香蕉eeww99国产在线观看| 国产成人综合网| 国产激情国语对白普通话| 亚洲首页在线观看| 久久精品国产999大香线焦| 国内精品久久久久久久久久影视| 国产丝袜一区二区三区视频免下载| 午夜少妇精品视频小电影| 国产原创演绎剧情有字幕的| 国产国语一级毛片在线视频| 久久综合色88| 国产女人在线视频| 欧美、日韩、国产综合一区| 国产成人无码久久久久毛片| 性色一区| 91精品国产麻豆国产自产在线| 麻豆国产精品视频| 一级片一区| 老熟妇喷水一区二区三区| 久久久久无码精品国产免费| 久久99国产精品成人欧美| 九色视频一区| 亚洲人免费视频| 成人夜夜嗨| 伊人成人在线视频| 日韩无码一二三区| 99色亚洲国产精品11p| 国产精品理论片| 欧美影院久久| 免费不卡在线观看av| a级毛片免费播放| 亚洲第一香蕉视频| 9999在线视频| 日韩精品一区二区深田咏美| 国产高颜值露脸在线观看| 国产91精选在线观看| 日本高清成本人视频一区| 色九九视频| 国产成人调教在线视频| 素人激情视频福利| 亚洲丝袜第一页| 国产成人免费| 国内精品久久久久久久久久影视 | 白浆视频在线观看| 国产亚洲精品资源在线26u| 日韩欧美网址| 青青操国产| 免费一看一级毛片| 国产美女无遮挡免费视频| 人妻21p大胆| 国产精品视频导航| 精品少妇三级亚洲| 免费jizz在线播放| 久久亚洲欧美综合|