Changed data structure for weather params and aggregating
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
package parse
|
||||
|
||||
import java.time.LocalDateTime
|
||||
import scala.reflect.runtime.universe._
|
||||
|
||||
|
||||
case class WeatherStationData(
|
||||
city: String,
|
||||
timestamp: LocalDateTime,
|
||||
weather: WeatherData,
|
||||
)
|
||||
|
||||
case class WeatherData(
|
||||
tempMax: Option[Double],
|
||||
tempMin: Option[Double],
|
||||
tempAvg: Option[Double],
|
||||
precipitation: Option[Double],
|
||||
windAvg: Option[Double],
|
||||
windMax: Option[Double],
|
||||
visibilityMin: Option[Double],
|
||||
visibilityAvg: Option[Double],
|
||||
snowAvg: Option[Double],
|
||||
atmPressure: Option[Double],
|
||||
dewPoint: Option[Double],
|
||||
humidity: Option[Double],
|
||||
sunDuration: Option[Double],
|
||||
phenomena: List[String],
|
||||
)
|
||||
|
||||
object WeatherData {
|
||||
def fromDoubles(data: List[Option[Double]], phenomena: List[String]): Option[WeatherData] = data match {
|
||||
case List(
|
||||
tempMax,
|
||||
tempMin,
|
||||
tempAvg,
|
||||
precipitation,
|
||||
windAvg,
|
||||
windMax,
|
||||
visibilityMin,
|
||||
visibilityAvg,
|
||||
snowAvg,
|
||||
atmPressure,
|
||||
dewPoint,
|
||||
humidity,
|
||||
sunDuration
|
||||
) => Some(WeatherData(
|
||||
tempMax,
|
||||
tempMin,
|
||||
tempAvg,
|
||||
precipitation,
|
||||
windAvg,
|
||||
windMax,
|
||||
visibilityMin,
|
||||
visibilityAvg,
|
||||
snowAvg,
|
||||
atmPressure,
|
||||
dewPoint,
|
||||
humidity,
|
||||
sunDuration,
|
||||
phenomena,
|
||||
))
|
||||
case _ => None
|
||||
}
|
||||
|
||||
def getParamCount: Int = {
|
||||
val constructor = typeOf[WeatherData].decl(termNames.CONSTRUCTOR).asMethod
|
||||
val paramCount = constructor.paramLists.flatten.size
|
||||
paramCount
|
||||
}
|
||||
|
||||
def getDoubleParamCount: Int = {
|
||||
getParamCount - 1 // minus one because 'phenomena' List[String] not Double
|
||||
}
|
||||
}
|
||||
|
||||
//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",
|
||||
// "windAvg" -> "Vidējais vēja ātrums novērojumu termiņā (10 min. vidējais)",
|
||||
// "windMax" -> "Stundas maksimālās vēja brāzmas",
|
||||
// "visibilityMin" -> "Stundas minimālā redzamība",
|
||||
// "visibilityAvg" -> "Stundas vidējā redzamība",
|
||||
// "snowAvg" -> "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ņā",
|
||||
// "humidity" -> "Relatīvais gaisa mitrums novērojumu termiņā",
|
||||
// "sunDuration" -> "Saules spīdēšanas ilgums",
|
||||
//// "phenomena" -> "Laika parādības",
|
||||
//)
|
||||
Reference in New Issue
Block a user