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.

【通聯編輯:聞翔軍】

主站蜘蛛池模板: 成人综合久久综合| 欧美日韩免费观看| 日本免费高清一区| 毛片卡一卡二| 19国产精品麻豆免费观看| 亚洲成在线观看| 久草国产在线观看| 一级在线毛片| 国产一在线| 亚洲欧美在线综合一区二区三区| 91久草视频| 自拍偷拍欧美日韩| 国产福利免费在线观看| 成人精品午夜福利在线播放| 国产色伊人| 成年A级毛片| 国产打屁股免费区网站| 欧美性爱精品一区二区三区| 最新日韩AV网址在线观看| 女人18毛片久久| 无码在线激情片| 欧美日韩在线第一页| 天天爽免费视频| 国产精品一区二区无码免费看片| 成人久久18免费网站| AV无码一区二区三区四区| 国产精品久久久久无码网站| 国产麻豆福利av在线播放| 99这里只有精品6| 国产精品夜夜嗨视频免费视频| 国产精品美人久久久久久AV| 久久久久久久久18禁秘| 国产亚洲精品97AA片在线播放| 91视频免费观看网站| 欧美成人aⅴ| 亚洲小视频网站| 久久久久久久久久国产精品| 亚洲欧美一区二区三区麻豆| 国产亚洲高清视频| 国产一级妓女av网站| 999国产精品永久免费视频精品久久| 国产精品真实对白精彩久久| 免费国产高清精品一区在线| 亚洲国产精品日韩欧美一区| 人妻精品久久无码区| 国产系列在线| 国产乱论视频| 伊人久久婷婷| 久久男人视频| 91精品国产情侣高潮露脸| aa级毛片毛片免费观看久| 国产乱人伦精品一区二区| 激情乱人伦| 亚洲天堂啪啪| 在线观看av永久| 亚洲国产中文精品va在线播放| 9久久伊人精品综合| 亚洲六月丁香六月婷婷蜜芽| 伊人五月丁香综合AⅤ| 热这里只有精品国产热门精品| 日本色综合网| 亚洲国产精品不卡在线| 首页亚洲国产丝袜长腿综合| 小说 亚洲 无码 精品| 丁香五月激情图片| 精品99在线观看| 国产在线98福利播放视频免费| 无套av在线| 久久久黄色片| 亚洲一欧洲中文字幕在线| 成人在线不卡| 亚洲不卡av中文在线| 欧美一级特黄aaaaaa在线看片| a天堂视频在线| 亚欧成人无码AV在线播放| 日本www在线视频| 免费毛片网站在线观看| 88av在线播放| 亚洲三级色| 欧美精品xx| 国产精品香蕉在线| 久久久精品国产SM调教网站|