예제 #1
0
        /// <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);
        }
예제 #2
0
 /// <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);
예제 #3
0
 /// <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);
예제 #4
0
 /// <summary>
 /// ObservationPointを元にImageAnalysisResultを初期化します。
 /// </summary>
 /// <param name="point">元にするObservationPoint</param>
 public ImageAnalysisResult(ObservationPoint point) : base(point)
 {
 }
예제 #5
0
 /// <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)
 {
 }