Пример #1
0
        public void getNOAAstationInfo()
        {
            string[] files = Directory.GetFiles(@"C:\Users\Admin\Documents\projects\IAPP\piloto\Climate\NOAA\data\");
            foreach (string file in files)
            {
                if (file.Contains("stn"))
                {
                    StreamReader sr   = new StreamReader(file);
                    string       line = sr.ReadLine();
                    //second line is ----- ------ marking the fields
                    line = sr.ReadLine();
                    string[] bits = line.Split(' ');

                    //get the next line first station
                    line = sr.ReadLine();
                    int     charsum = 0;
                    string  info    = "";
                    Station ns      = new Station();
                    while (line != null)
                    {
                        charsum   = 0;
                        ns        = new Station();
                        ns.source = "NOAA";
                        for (int i = 0; i < bits.Length; i++)
                        {
                            info = line.Substring(charsum, bits[i].Length);
                            info = info.Trim();
                            switch (i)
                            {
                            case 0:
                                //code
                                string[] parts = info.Split(' ');
                                ns.code = Convert.ToInt32(parts[0]);
                                break;

                            case 1:
                                //name
                                ns.name = info;
                                break;

                            case 2:
                                //country
                                ns.country = info;
                                break;

                            case 3:
                                //state
                                break;

                            case 4:
                                //lat
                                ns.latitude = Convert.ToDouble(info);
                                break;

                            case 5:
                                //lon
                                ns.longitude = Convert.ToDouble(info);
                                break;

                            case 6:
                                //ele
                                ns.elevation = Convert.ToDouble(info);
                                break;
                            }
                            charsum += bits[i].Length + 1;
                        }
                        stations.Add(ns);
                        line = sr.ReadLine();
                    }

                    sr.Close();
                }
            }
        }
Пример #2
0
        public static void writeGroup(List <StationGroup> groups, string file, List <Station> stations, List <City> cities)
        {
            string propname = "cities";
            //if(file.Contains("region")) propname = "regions";

            StreamWriter sw = new StreamWriter(file);

            using (JsonTextWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.Indented;
                writer.WriteStartObject();
                writer.WritePropertyName(propname);
                writer.WriteStartArray();
                foreach (StationGroup sg in groups)
                {
                    writer.WriteStartObject();
                    writer.WritePropertyName("name");
                    writer.WriteValue(sg.name);
                    if (propname == "cities")
                    {
                        var city = cities.Find(x => x.name == sg.name);
                        if (city == null)
                        {
                            city = new City();
                        }
                        writer.WritePropertyName("ele");
                        writer.WriteValue(Math.Round(city.elevation, 2));
                        writer.WritePropertyName("lat");
                        writer.WriteValue(city.location[1]);
                        writer.WritePropertyName("lon");
                        writer.WriteValue(city.location[0]);
                    }
                    writer.WritePropertyName("stations");
                    writer.WriteStartArray();
                    foreach (int scode in sg.stationcodes)
                    {
                        Station s = new Station();
                        s = stations.Find(x => x.code == scode);
                        if (s == null)
                        {
                            s = new Station();
                        }
                        writer.WriteStartObject();

                        writer.WritePropertyName("code");
                        writer.WriteValue(scode);

                        writer.WritePropertyName("name");
                        writer.WriteValue(s.name);

                        writer.WritePropertyName("ele");
                        writer.WriteValue(Math.Round(s.elevation, 2));
                        writer.WritePropertyName("lat");
                        writer.WriteValue(s.latitude);
                        writer.WritePropertyName("lon");
                        writer.WriteValue(s.longitude);
                        writer.WriteEndObject();
                    }
                    writer.WriteEndArray();
                    writer.WriteEndObject();
                }

                writer.WriteEndArray();
                writer.WriteEndObject();
            }

            sw.Close();
        }