/// <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); }
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); }
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); }
/// <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); }
/// <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); }