• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      何曉東 梁中義

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

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

      中圖分類號(hào):TP311? ? 文獻(xiàn)標(biāo)識(shí)碼:A

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

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

      1 系統(tǒng)功能

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

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

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

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

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

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

      2.3 電子地圖

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

      3 程序設(shè)計(jì)

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

      3.1表示層

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

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

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

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

      if(overlay==null)

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

      overlay= new GMapOverlay(overlayid);

      }

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

      foreach (AcqDataItem item in items)

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

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

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

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

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

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

      }

      }

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

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

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

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

      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)成,分別對(duì)數(shù)據(jù)表table_AcqInfor、table_table_DeviceInfor進(jìn)行操作。

      BMDBRepository類中主要函數(shù)GetAcqDataByALAndFreq為上層提供按指定坐標(biāo)、指定半徑、指定頻率的查詢監(jiān)測(cè)數(shù)據(jù)服務(wù),其通過(guò)調(diào)用存儲(chǔ)過(guò)程sp_GetAcqDataByALAndFreq實(shí)現(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 測(cè)試

      某次查詢的監(jiān)測(cè)數(shù)據(jù)在地圖顯示(圖1),一個(gè)藍(lán)色水滴標(biāo)識(shí)代表一個(gè)監(jiān)測(cè)數(shù)據(jù),鼠標(biāo)懸浮圖標(biāo)會(huì)彈出該點(diǎn)監(jiān)測(cè)數(shù)據(jù)詳細(xì)信息。

      5 小結(jié)

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

      參考文獻(xiàn):

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

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

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

      猜你喜歡
      電子地圖監(jiān)測(cè)數(shù)據(jù)
      中國(guó)種豬場(chǎng)引種指南電子地圖
      中國(guó)公豬站引種指南電子地圖
      基于靈活編組的互聯(lián)互通車載電子地圖設(shè)計(jì)及動(dòng)態(tài)加載
      GSM-R接口監(jiān)測(cè)數(shù)據(jù)精確地理化方法及應(yīng)用
      基于Mapserver的增強(qiáng)現(xiàn)實(shí)電子地圖的設(shè)計(jì)與實(shí)現(xiàn)
      統(tǒng)計(jì)分析監(jiān)測(cè)數(shù)據(jù)采集技術(shù)要求標(biāo)準(zhǔn)研究
      環(huán)評(píng)中引用大氣現(xiàn)狀監(jiān)測(cè)數(shù)據(jù)的研究
      電子地圖在初中地理教學(xué)中的應(yīng)用實(shí)踐
      GPS異常監(jiān)測(cè)數(shù)據(jù)的關(guān)聯(lián)負(fù)選擇分步識(shí)別算法
      基于小波函數(shù)對(duì)GNSS監(jiān)測(cè)數(shù)據(jù)降噪的應(yīng)用研究
      金华市| 万源市| 武义县| 北海市| 道孚县| 开平市| 淳化县| 铜陵市| 祁连县| 江永县| 鞍山市| 邵武市| 荥阳市| 桐柏县| 昌吉市| 余庆县| 竹溪县| 福安市| 安仁县| 庆阳市| 蓬安县| 长汀县| 北流市| 洪雅县| 广水市| 洮南市| 忻州市| 长岭县| 双柏县| 綦江县| 江津市| 林芝县| 广德县| 宣城市| 莒南县| 靖江市| 堆龙德庆县| 老河口市| 鄂温| 陆丰市| 长沙县|