Powered by AppSignal & Oban Pro

Pollution

Erlang_Elixir/notebook.livemd

Pollution

Code.append_path("/Users/mateuszstoch/Documents/AGH/Erlang_Elixir/lab4/pollution/_build/default/lib/pollution/ebin")

Application.start(:pollution)

:observer.start()

Section

defmodule Reading do
  def convert_line(""), do: :ok
  def convert_line(line) do
    [dateTime,type,value,stationId,stationName,loc] = String.split(line,";")
    [lat,lot] = String.split(loc,",") |> Enum.map(fn x-> String.to_float(x) end)
    %{
      :datetime => dateTime |> NaiveDateTime.from_iso8601!() |> NaiveDateTime.to_erl(),
      :location => {lat,lot},
      :stationId => String.to_integer(stationId),
      :stationName => stationName,
      :pollutionType => type,
      :pollutionlevel => String.to_float(value)
    }
  end
  def identify_stations(readings) do
    Enum.uniq_by(readings, fn x -> x.stationId end)
  end
end
File.read!("/Users/mateuszstoch/Downloads/AirlyData-ALL-50k.csv") 
|> String.trim()
|> String.split("\n")
|> Enum.map(& Reading.convert_line(&1))
#|> Reading.identify_stations()
#|> Enum.map(& :pollution_gen_server.add_station(&1.stationName,&1.location))
|> Enum.map(& :pollution_gen_server.add_value({:name,&1.stationName},&1.datetime,&1.pollutionType,&1.pollutionlevel))