Visual Crossing provides ~50 years of historical weather data at ~1 km resolution. Requires a free API key.
MetaData(VisualCrossing())
MetaData("VISUAL_CROSSING_API_KEY", "1000 records/day (free tier)", :weather, Dict(:sunset => "Sunset time", :sunrise => "Sunrise time", :moonphase => "Moon phase (0-1)", :humidity => "Humidity (%)", :dew => "Dew point (°C)", :snow => "Snowfall (cm)", :feelslike => "Feels-like temperature (°C)", :snowdepth => "Snow depth (cm)", :winddir => "Wind direction (°)", :precip => "Precipitation (mm)"…), :raster, "1 km", "Global", :timeseries, Dates.Day(1), "~50 years of history", "Commercial (free tier available)", "https://www.visualcrossing.com/resources/documentation/weather-api/timeline-weather-api/", Dict("DataFrames" => "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"))
Setup
Sign up at visualcrossing.com and set your API key:
ENV["VISUAL_CROSSING_API_KEY"] = "your-api-key"
Example
using GeoDataAccess: DataAccessPlan, fetch, VisualCrossing
using Dates
plan = DataAccessPlan(VisualCrossing(), (-74.0, 40.7),
Date(2024, 1, 1), Date(2024, 1, 7);
variables = [:tempmax, :tempmin, :precip, :humidity],
include = "days")
files = fetch(plan)
The include parameter controls temporal resolution: "days" for daily or "hours" for hourly.
Variables
temp |
Temperature (°C) |
tempmax |
Maximum temperature (°C) |
tempmin |
Minimum temperature (°C) |
feelslike |
Feels-like temperature (°C) |
humidity |
Humidity (%) |
dew |
Dew point (°C) |
precip |
Precipitation (mm) |
snow |
Snowfall (cm) |
snowdepth |
Snow depth (cm) |
windspeed |
Wind speed (km/h) |
winddir |
Wind direction (°) |
windgust |
Wind gust (km/h) |
pressure |
Sea-level pressure (hPa) |
cloudcover |
Cloud cover (%) |
uvindex |
UV index |
visibility |
Visibility (km) |
conditions |
Weather conditions text |
sunrise |
Sunrise time |
sunset |
Sunset time |
moonphase |
Moon phase (0-1) |