예제 #1
0
    public static string Statistics(NOAA_latest_observations m_stationData, DateTime m_date)
    {
        string m_dataAsString = "";

        m_dataAsString += "Station: " + m_stationData.id;
        m_dataAsString += "\n" + m_date.ToLocalTime().ToString() + " your local time";
        m_dataAsString += "\n\nWind Speed: " + m_stationData.windSpeed;
        m_dataAsString += "\nWind Gust: " + m_stationData.windGust;
        m_dataAsString += "\nWind Direction: " + m_stationData.windDirection;
        m_dataAsString += "\nWave Height: " + m_stationData.waveHeight;
        m_dataAsString += "\nAir Temperature: " + m_stationData.airTemperature;
        if (m_stationData.airIsEstimated)
        {
            m_dataAsString += "*";
        }
        m_dataAsString += "\nWater Temperature: " + m_stationData.waterTemperature;
        if (m_stationData.waterIsEstimated)
        {
            m_dataAsString += "*";
        }
        if (m_stationData.airIsEstimated || m_stationData.waterIsEstimated)
        {
            m_dataAsString += "\n\n*Estimated temperature.";
        }

        if (m_stationData.details != null)
        {
            m_dataAsString += "\n\nName: " + m_stationData.details.name;
            m_dataAsString += "\nLocation: " + m_stationData.details.location;
            m_dataAsString += "\nNote: " + m_stationData.details.note;
            m_dataAsString += "\nPayload: " + m_stationData.details.payload;
        }
        return(m_dataAsString);
    }
예제 #2
0
    public void DisplayRandomStation()
    {
        if (m_stations == null)
        {
            Debug.Log("Data has not been fetched! Nothing to see here...");
            return;
        }

        if (m_textUI != null)
        {
            NOAA_latest_observations m_stationData = m_stations[UnityEngine.Random.Range(0, m_stations.Count)];
            DateTime m_date = DateTime.Parse(m_stationData.year + "-" + m_stationData.month + "-" + m_stationData.day + " " +
                                             m_stationData.hh + ":" + m_stationData.mm);

            m_textUI.text = StationData.Statistics(m_stationData, m_date);
        }
    }
예제 #3
0
    void ParseLatestObservations()
    {
        string[] lines = m_observationRawText.Split('\n');

        m_stations = new List <NOAA_latest_observations>();

        //The text file does not seem to use tabs, so use any of these to separate the fields...
        string[] separators = { " ", "  ", "   ", "     " };

        //Skip the first two lines because they are headers
        for (int i = 2; i < lines.Length; i++)
        {
            NOAA_latest_observations n    = new NOAA_latest_observations();
            List <string>            data = lines[i].Split(separators, System.StringSplitOptions.RemoveEmptyEntries).ToList();
            if (data.Count < 1)
            {
                continue;
            }
            n.id        = data[0];
            n.latitude  = float.Parse(data[1]);
            n.longitude = float.Parse(data[2]);
            n.year      = int.Parse(data[3]);
            n.month     = int.Parse(data[4]);
            n.day       = int.Parse(data[5]);
            n.hh        = int.Parse(data[6]);
            n.mm        = int.Parse(data[7]);
            int.TryParse(data[8], out n.windDirection);
            float.TryParse(data[9], out n.windSpeed);
            float.TryParse(data[10], out n.windGust);
            float.TryParse(data[11], out n.waveHeight);
            float.TryParse(data[15], out n.pressure);
            float.TryParse(data[17], out n.airTemperature);
            float.TryParse(data[18], out n.waterTemperature);

            if (Mathf.Approximately(n.airTemperature, 0f) && Mathf.Abs(n.airTemperature - n.waterTemperature) > .1f)
            {
                n.airTemperature = n.waterTemperature + 2f;
                n.airIsEstimated = true;
            }

            if (Mathf.Approximately(n.waterTemperature, 0f) && Mathf.Abs(n.waterTemperature - n.airTemperature) > .1f)
            {
                n.waterTemperature = n.airTemperature - 2f;
                n.waterIsEstimated = true;
            }


            m_stations.Add(n);
        }

        Debug.Log("Parsed the data: " + m_stations.Count.ToString() + " stations were found in the data.");

        if (!m_getDetails)
        {
            m_dataFetchingComplete = true;
        }
        else
        {
            StartCoroutine(GetStationDetails());
        }

        if (m_textUI != null)
        {
            string s = "Nothing found";

            if (m_stations.Count > 0)
            {
                int rand = UnityEngine.Random.Range(0, m_stations.Count);
                NOAA_latest_observations _station = m_stations[rand];
                s = "Station: " + _station.id + "\nAir Temp: " + ((_station.airTemperature * 9 / 5) + 32) + "° F\nWater temp: " + ((_station.waterTemperature * 9 / 5) + 32) + "° F\nLast updated: " + _station.year + "." +
                    _station.month + "." + _station.day + " " + _station.hh + ":" + _station.mm.ToString("00") + " GMT\nLongitude: " + _station.longitude + "\nLatitude: " + _station.longitude;
            }

            m_textUI.text = "Found " + m_stations.Count + " bouy stations. \n\n" + s;
        }
    }