Files
WeatherTool/src/main/scala/parse/MeteoData.scala
T

90 lines
3.5 KiB
Scala

package parse
import java.time.LocalDateTime
import scala.reflect.runtime.universe._
case class WeatherStationData(
city: String,
timestamp: LocalDateTime,
meteo: MeteoData,
phenomena: List[String],
)
case class MeteoData(
tempMax: Option[Double],
tempMin: Option[Double],
tempAvg: Option[Double],
precipitation: Option[Double],
windSpeedAvg: Option[Double],
windGustMax: Option[Double],
visibilityMin: Option[Double],
visibilityAvg: Option[Double],
snowThicknessAvg: Option[Double],
atmPressure: Option[Double],
dewPoint: Option[Double],
airHumidity: Option[Double],
sunshineDuration: Option[Double],
)
object MeteoData {
def fromDoubles(data: List[Option[Double]]): Option[MeteoData] = data match {
case List(
tempMax,
tempMin,
tempAvg,
precipitation,
windSpeedAvg,
windGustMax,
visibilityMin,
visibilityAvg,
snowThicknessAvg,
atmPressure,
dewPoint,
airHumidity,
sunshineDuration
) => Some(MeteoData(
tempMax,
tempMin,
tempAvg,
precipitation,
windSpeedAvg,
windGustMax,
visibilityMin,
visibilityAvg,
snowThicknessAvg,
atmPressure,
dewPoint,
airHumidity,
sunshineDuration,
))
case _ => None
}
def getCount: Int = {
val constructor = typeOf[MeteoData].decl(termNames.CONSTRUCTOR).asMethod
val paramCount = constructor.paramLists.flatten.size
paramCount
}
}
//val cityList: List[String] = List("Ainaži", "Alūksne", "Bauska", "Dagda", "Daugavgrīva", "Daugavpils", "Dobele", "Gulbene", "Jelgava", "Kalnciems", "Kolka", "Kuldīga", "Lielpēči", "Liepāja", "Madona", "Mērsrags", "Pāvilosta", "Piedruja", "Priekuļi", "Rēzekne", "Rīga", "Rucava", "Rūjiena", "Saldus", "Sigulda", "Sīļi", "Skrīveri", "Skulte", "Stende", "Ventspils", "Vičaki", "Zīlāni", "Zosēni", "Ainaži", "Alūksne", "Bauska", "Dagda", "Daugavgrīva", "Daugavpils", "Dobele", "Gulbene", "Jelgava", "Kalnciems", "Kolka", "Kuldīga", "Lielpēči", "Liepāja", "Madona", "Mērsrags", "Pāvilosta", "Piedruja", "Priekuļi", "Rēzekne", "Rīga", "Rucava", "Rūjiena", "Saldus", "Sigulda", "Sīļi", "Skrīveri", "Skulte", "Stende", "Ventspils", "Vičaki", "Zīlāni", "Zosēni")
//Map(
// "tempMax" -> "Stundas maksimālā temperatūra",
// "tempMin" -> "Stundas minimālā temperatūra",
// "tempAvg" -> "Stundas vidējā temperatūra",
// "precipitation" -> "Stundas nokrišņu daudzums",
// "windSpeedAvg" -> "Vidējais vēja ātrums novērojumu termiņā (10 min. vidējais)",
// "windGustMax" -> "Stundas maksimālās vēja brāzmas",
// "visibilityMin" -> "Stundas minimālā redzamība",
// "visibilityAvg" -> "Stundas vidējā redzamība",
// "snowThicknessAvg" -> "Stundas vidējais sniega segas biezums",
// "atmPressure" -> "Atmosfēras spiediens jūras līmenī novērojuma termiņā (milibāros)",
// "dewPoint" -> "Rasas punkta temperatūra novērojuma termiņā",
// "airHumidity" -> "Relatīvais gaisa mitrums novērojumu termiņā",
// "sunshineDuration" -> "Saules spīdēšanas ilgums",
//// "weatherPhenomena" -> "Laika parādības",
//)