/// <summary> /// 観測点情報をcsvから読み込みます。失敗した場合は例外がスローされます。 /// </summary> /// <param name="path">読み込むcsvファイルのパス</param> /// <param name="encoding">読み込むファイル文字コード 何も指定していない場合はUTF8が使用されます。</param> /// <returns>list:読み込まれた観測点情報 success:読み込みに成功した項目のカウント error:読み込みに失敗した項目のカウント</returns> public static (ObservationPoint[] points, uint success, uint error) LoadFromCsv(string path, Encoding encoding = null) { var addedCount = 0u; var errorCount = 0u; var points = new List <ObservationPoint>(); using (var stream = File.OpenRead(path)) using (var reader = new StreamReader(stream)) while (reader.Peek() >= 0) { try { var strings = reader.ReadLine().Split(','); var point = new ObservationPoint() { Type = (ObservationPointType)int.Parse(strings[0]), Code = strings[1], IsSuspended = bool.Parse(strings[2]), Name = strings[3], Region = strings[4], Location = new Location(float.Parse(strings[5]), float.Parse(strings[6])), Point = null }; if (!string.IsNullOrWhiteSpace(strings[7]) && !string.IsNullOrWhiteSpace(strings[8])) { point.Point = new Point2(int.Parse(strings[7]), int.Parse(strings[8])); } if (strings.Length >= 11) { point.ClassificationId = int.Parse(strings[9]); point.PrefectureClassificationId = int.Parse(strings[10]); } if (strings.Length >= 13) { point.OldLocation = new Location(float.Parse(strings[11]), float.Parse(strings[12])); } points.Add(point); addedCount++; } catch { errorCount++; } } return(points.ToArray(), addedCount, errorCount); }
/// <summary> /// 観測点情報をJson形式で保存します。失敗した場合は例外がスローされます。 /// </summary> /// <param name="path">書き込むJsonファイルのパス</param> /// <param name="points">書き込む観測点情報の配列</param> public static void SaveToJson(this IEnumerable <ObservationPoint> points, string path) => ObservationPoint.SaveToJson(path, points);
/// <summary> /// 観測点情報をmpk形式で保存します。失敗した場合は例外がスローされます。 /// </summary> /// <param name="path">書き込むmpkファイルのパス</param> /// <param name="points">書き込む観測点情報の配列</param> /// <param name="usingLz4">lz4で圧縮させるかどうか(させる場合は拡張子を.mpk.lz4にすることをおすすめします)</param> public static void SaveToMpk(this IEnumerable <ObservationPoint> points, string path, bool usingLz4 = false) => ObservationPoint.SaveToMpk(path, points, usingLz4);
/// <summary> /// ObservationPointを元にImageAnalysisResultを初期化します。 /// </summary> /// <param name="point">元にするObservationPoint</param> public ImageAnalysisResult(ObservationPoint point) : base(point) { }
/// <summary> /// ObservationPointの情報をコピーした上で初期化します。 /// </summary> /// <param name="point"></param> public ObservationPoint(ObservationPoint point) : this(point.Type, point.Code, point.IsSuspended, point.Name, point.Region, point.Location, point.Point, point.ClassificationId, point.PrefectureClassificationId) { }