示例#1
0
 private void onRefreshGPSData(object state)
 {
     try
     {
         if (_service != null)
         {
             string ex = string.Empty;
             using (DataTable dt = _service.GetShipDataTable(out ex))
             {
                 HZGPSData data  = null;
                 int       count = 0;
                 foreach (DataRow dr in dt.Rows)
                 {
                     data = dataRowToGPSData(dr);
                     if (data != null && !string.IsNullOrEmpty(data.Name))
                     {
                         if (judegeNewData(data))
                         {
                             fireOnDynamic(data);
                             count++;
                         }
                     }
                 }
             }
         }
     }
     catch (Exception exp)
     {
         LogService.Error(exp.ToString());
     }
     GC.Collect();
 }
示例#2
0
 private bool judegeNewData(HZGPSData obj)
 {
     if (_dicCacheData.ContainsKey(obj.Name))
     {
         var dic = _dicCacheData[obj.Name];
         if (dic != obj.Time)
         {
             dic = obj.Time;
             return(true);
         }
         else
         {
             return(false);
         }
     }
     else
     {
         _dicCacheData.Add(obj.Name, obj.Time);
         return(true);
     }
 }
示例#3
0
        private HZGPSData dataRowToGPSData(DataRow dr)
        {
            HZGPSData data = new HZGPSData();

            if (dr["name"] != DBNull.Value)
            {
                data.Id = dr["name"].ToString();
            }
            if (dr["name"] != DBNull.Value)
            {
                data.Name = dr["name"].ToString();
            }
            double lon = 0, lat = 0;

            if (dr["x"] != DBNull.Value)
            {
                double.TryParse(dr["x"].ToString(), out lon);
            }
            else
            {
                return(null);
            }
            if (dr["y"] != DBNull.Value)
            {
                double.TryParse(dr["y"].ToString(), out lat);
            }
            else
            {
                return(null);
            }
            data.Shape = new GeoPointShape(lon, lat);
            if (dr["speed"] != DBNull.Value)
            {
                double.TryParse(dr["speed"].ToString(), out data.SOG);
            }
            if (dr["direction"] != DBNull.Value)
            {
                double.TryParse(dr["direction"].ToString(), out data.COG);
            }
            data.Heading = 511;
            if (dr["gpstime"] != DBNull.Value)
            {
                DateTime time;
                DateTime.TryParse(dr["gpstime"].ToString(), out time);
                data.Time = time;
                if ((DateTime.Now - time).TotalDays > 1)
                {
                    return(null);
                }
            }
            if (dr["region"] != DBNull.Value)
            {
                string qy = dr["region"].ToString();
                if (qy == "01")
                {
                    data.SSHQ = "杭州";
                }
                if (qy == "02")
                {
                    data.SSHQ = "湖州";
                }
                if (qy == "03")
                {
                    data.SSHQ = "嘉兴";
                }
            }
            if (dr["isonline"] != DBNull.Value)
            {
                string zx = dr["isonline"].ToString();
                if (zx == "1")
                {
                    data.IsOnline = true;
                }
                else
                {
                    data.IsOnline = false;
                }
            }
            //FusionMgr.GetExtraIDs(data, out data.GID, out data.FID);
            return(data);
        }