Example #1
0
        /// <summary>
        /// 获取海平面气压
        /// </summary>
        /// <returns></returns>
        List <AWSFieldValue> GetP0(DateTime?date)
        {
            DateTime checkTime;

            if (date == null)
            {
                checkTime = DateTime.Now.AddMinutes(-5);
                checkTime = checkTime.AddMinutes(-checkTime.Minute % 5);
            }
            else
            {
                checkTime = date.Value;
            }
            if (checkTime.Year >= 2017 && checkTime.DayOfYear > 110)
            {
                List <AWSFieldValue> result = new List <AWSFieldValue>();
                string   dataFromWWW        = new WebClient().DownloadString("http://10.153.96.179/data/output/obtmind/" + checkTime.ToString("yyyyMMdd") + "/P0_" + checkTime.ToString("yyyyMMddHHmm") + ".csv");
                string[] lines = dataFromWWW.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                for (int i = 1; i < lines.Length; i++)
                {
                    string[]      content = lines[i].Split(',');
                    AWSFieldValue aws     = new AWSFieldValue()
                    {
                        ID = content[0],
                        V0 = double.Parse(content[1]),
                        TM = checkTime
                    };
                    result.Add(aws);
                }
                return(result);
            }
            return(null);
        }
Example #2
0
        public static List <AWSFieldValue> GetLastAWSInfo(OBTArea area, TimeMode aType, OBTField dataField)
        {
            string wdf = null, wdd = null;

            getQueryField(dataField, out wdf, out wdd);
            string               tableName = AWSItems.getTableName(DateTime.Now, area, aType, dataField);
            DataTable            lastTable = AWSItems.getLastAWStable(tableName);
            List <AWSFieldValue> result = new List <AWSFieldValue>();

            foreach (DataRow row in lastTable.Rows)
            {
                var df = row[wdf];
                if (df != DBNull.Value)
                {
                    var dd = row[wdd];
                    if (dd != DBNull.Value && (double)(decimal)df < 9999)
                    {
                        AWSFieldValue aws = new AWSFieldValue();
                        aws.TM = (DateTime)row["DDATETIME"];
                        aws.ID = row["OBTID"].ToString();
                        aws.V0 = (double)(decimal)df;
                        aws.V1 = (double)(decimal)dd;
                        result.Add(aws);
                    }
                }
            }
            return(result);
        }
Example #3
0
 static bool checkSpace(AWSFieldValue item, List <AWSFieldValue> others, int minSpace)
 {
     foreach (AWSFieldValue one in others)
     {
         double distance = Math.Sqrt(Math.Pow(one.x - item.x, 2) + Math.Pow(one.y - item.y, 2));
         if (distance < minSpace)
         {
             return(false);
         }
     }
     return(true);
 }
Example #4
0
        /// <summary>
        /// 获取自动站最新数据
        /// </summary>
        List <AWSFieldValue> GetLastAWSInfo(OBTArea area, TimeMode aType, OBTField dataField, int accuracy)
        {
            string               tableName = AWSItems.getTableName(DateTime.Now, area, aType, dataField);
            DataTable            lastTable = AWSItems.getLastAWStable(tableName);
            List <AWSFieldValue> result    = new List <AWSFieldValue>();

            foreach (DataRow row in lastTable.Rows)
            {
                var v0 = row[dataField.ToString()];
                if (v0 != DBNull.Value && (double)(decimal)v0 / accuracy < 9999)
                {
                    AWSFieldValue aws = new AWSFieldValue();
                    aws.TM = (DateTime)row["DDATETIME"];
                    aws.ID = row["OBTID"].ToString();
                    aws.V0 = (double)(decimal)v0 / accuracy;
                    result.Add(aws);
                }
            }
            return(result);
        }
Example #5
0
        /// <summary>
        /// 获取用户地图显示需要的数据
        /// </summary>
        /// <returns></returns>
        public static ClientReport GetAWSDataInfomation(AWDType type, DateTime?date, OBTArea area, TimeMode timeMode, AWSAdmin awsAdmin, string[] citys, OBTField dataField, int accuracy, double minLng, double minLat, double maxLng, double maxLat, int canvasWidth, int canvasHeight, int minSpace, bool isPlaying, bool orderbyDesc)
        {
            List <AWSFieldValue> awsFromDb    = getAwsFieldValueFromDb(type, date, area, timeMode, dataField, accuracy, isPlaying, orderbyDesc);
            List <AWSFieldValue> awsTmpResult = new List <AWSFieldValue>();
            List <AWSFieldValue> statsTarget  = new List <AWSFieldValue>();
            Mercator             myMercator   = new Mercator(minLat, maxLat, canvasHeight, minLng, maxLng, canvasWidth);

            for (int i = 0; i < awsFromDb.Count; i++)
            {
                AWSFieldValue item = awsFromDb[i];
                if (obtCodeList.ContainsKey(item.ID))
                {
                    OBTCODE aws = obtCodeList[item.ID];
                    if (awsAdmin == AWSAdmin.city)
                    {
                        if (AWSCode.ChinaAWS.ContainsKey(item.ID))
                        {
                            continue;
                        }
                    }
                    else if (awsAdmin == AWSAdmin.state)
                    {
                        if (!AWSCode.ChinaAWS.ContainsKey(item.ID))
                        {
                            continue;
                        }
                    }
                    statsTarget.Add(item);
                    if (aws.LONGITUDE > minLng && aws.LATITUDE > minLat && aws.LONGITUDE < maxLng && aws.LATITUDE < maxLat)
                    {
                        //计算CANVAS坐标
                        item.x = myMercator.Longitude2screentX(aws.LONGITUDE);
                        item.y = myMercator.Latitude2screentY(aws.LATITUDE);
                        if (checkSpace(item, awsTmpResult, minSpace))
                        {
                            if (type == AWDType.VIS && aws.AREAID == "45005" && item.V0 < 10)
                            {
                                item.V0 *= 1000;
                                item.V0  = double.Parse(item.V0.ToString("f1"));
                            }
                            awsTmpResult.Add(item);
                        }
                    }
                }
            }
            ClientReport result = new ClientReport()
            {
                aws = awsTmpResult
            };

            result.stats = Stats.getAwsStatis(type, statsTarget, citys);
            if (date == null)
            {
                if (awsTmpResult.Count > 0)
                {
                    result.time = awsTmpResult[0].TM.Value;
                }
            }
            else
            {
                result.time = date.Value;
            }
            return(result);
        }