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); }
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); } }
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; } }