using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Net;
|
using System.Text;
|
using IStation.Model;
|
|
namespace IStation.WinFrmUI.River
|
{
|
internal class TideFromBookHelper
|
{
|
/// <summary>
|
/// 获取潮汐数据
|
/// </summary>
|
static public List<Model.TileLevel> GetByDay1(
|
DateTime startday,
|
out string error)
|
{
|
error = null;
|
return ReadList(startday );
|
}
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="startday"></param>
|
/// <param name="error"></param>
|
/// <returns></returns>
|
static public List<Model.TimeWaterLevel> GetByDay2(DateTime startday, out string error)
|
{
|
var waterLevels长江 = new List<TimeWaterLevel>();
|
error = null;
|
var list = ReadList(startday );
|
if (list != null)
|
{
|
foreach (var h in list)
|
{
|
waterLevels长江.Add(
|
new TimeWaterLevel(
|
new DateTime(startday.Year, startday.Month, startday.Day, h.Hour, 0, 0), h.Level));
|
}
|
}
|
else
|
{
|
error = null;
|
}
|
return waterLevels长江;
|
}
|
|
|
/// <summary>
|
/// 读取
|
/// </summary>
|
/// <param name="Startday"></param>
|
/// <param name="Endday"></param>
|
/// <param name="folder"></param>
|
/// <returns></returns>
|
static public List<Model.TimeWaterLevel> GetByDayRange(DateTime Startday, DateTime Endday, out string error)
|
{
|
var waterLevels长江 = new List<TimeWaterLevel>();
|
for (DateTime currentDate = Startday; currentDate <= Endday; currentDate = currentDate.AddDays(1))
|
{
|
var list1 = ReadList(currentDate );
|
if (list1 != null && list1.Count > 0)
|
{
|
for (int h = 0; h < 24; h++)
|
{
|
waterLevels长江.Add(
|
new TimeWaterLevel(
|
new DateTime(currentDate.Year, currentDate.Month, currentDate.Day, h, 0, 0),
|
list1[h].Level));
|
}
|
}
|
}
|
error = null;
|
return waterLevels长江;
|
}
|
|
static private List<Model.TileLevel> ReadList(DateTime day )
|
{
|
var list = new List<Model.TileLevel>();
|
var folder = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(),
|
"Tide", "FromBook",
|
day.Year.ToString(),
|
day.ToString("yyyy-MM"));
|
if (!System.IO.Directory.Exists(folder))
|
{
|
System.IO.Directory.CreateDirectory(folder);
|
return null;
|
}
|
var fileName = System.IO.Path.Combine(folder,
|
string.Format("{0}.csv", day.ToString("yyyy-MM-dd")));
|
if (!System.IO.File.Exists(fileName))
|
{
|
return null;
|
}
|
//文件流读取
|
System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open);
|
System.IO.StreamReader sr = new System.IO.StreamReader(fs, Encoding.GetEncoding("gb2312"));
|
|
string tempText;
|
int line = 0;
|
while ((tempText = sr.ReadLine()) != null)
|
{
|
line++;
|
string[] arr = tempText.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
|
//一般第一行为标题,所以取出来作为标头
|
|
list.Add(new Model.TileLevel(Convert.ToInt32(arr[0]), Convert.ToDouble(arr[1])));
|
|
}
|
|
//关闭流
|
sr.Close(); fs.Close();
|
|
return list;
|
}
|
|
/// <summary>
|
/// 写
|
/// </summary>
|
/// <param name="day"></param>
|
/// <param name="list"></param>
|
static public void SaveList(DateTime day, List<Model.TileLevel> list)
|
{
|
if (list == null)
|
return;
|
try
|
{
|
var folder = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(),
|
"Tide", "FromBook",
|
day.Year.ToString(),
|
day.ToString("yyyy-MM"));
|
if (!System.IO.Directory.Exists(folder))
|
{
|
System.IO.Directory.CreateDirectory(folder);
|
|
}
|
var fileName = System.IO.Path.Combine(folder,
|
string.Format("{0}.csv", day.ToString("yyyy-MM-dd")));
|
|
|
StreamWriter streamWriter = new StreamWriter(fileName, false, System.Text.Encoding.GetEncoding("gb2312"));
|
|
StringBuilder StringBuilder = new StringBuilder();
|
|
|
|
// 写出数据
|
foreach (var m in list)
|
{
|
StringBuilder.AppendLine(); StringBuilder.AppendFormat("{0},{1}", m.Hour, m.Level);
|
}
|
streamWriter.Write(StringBuilder.ToString());
|
|
streamWriter.Flush();
|
streamWriter.Close();
|
}
|
catch (Exception ex)
|
{
|
IStation.LogHelper.WriteError("write tide file error:" + ex.Message, ex);
|
return;
|
}
|
}
|
|
}
|
}
|