In [2]:
import requests
import json
import os
import credentials

In [3]:
baseurl = "https://www.ncdc.noaa.gov/cdo-web/api/v2/"
endpoint_stations = "stations"
dataset = "GSOM"
custom_headers = {
    "token": credentials.token
}
all_stations = ["USW00026411",
                "USW00025308",
                "USW00025309",
                "USW00025339",
                "USW00025501",
                "USW00025503",
                "USW00025507",
                "USW00025624",
                "USW00026451",
                "USW00025713",
                "USW00026415",
                "USW00026425",
                "USW00026442",
                "USW00026510",
                "USW00026528",
                "USW00026533",
                "USW00026615",
                "USW00026616",
                "USW00026617",
                "USW00027502",]

Get information for all stations in list and write out to JSON file


In [2]:
OUTFN = "AK_NCDC_FirstOrderStations.json"

In [15]:
SAVEDATA = False
stationdata = []
for station in all_stations:
    path = os.path.join(endpoint_stations, "GHCND:{}".format(station))
    fullbase = requests.compat.urljoin(baseurl, path)
    r = requests.get(
        fullbase, 
        headers=custom_headers,
    )
    stationdata.append(json.loads(r.text))
if SAVEDATA:
    with open(OUTFN, "w") as fh:
        fh.write(json.dumps(stationdata, indent=2))


[
  {
    "elevation": 131.7,
    "id": "GHCND:USW00026411",
    "elevationUnit": "METERS",
    "name": "FAIRBANKS INTERNATIONAL AIRPORT, AK US",
    "longitude": -147.8761,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 64.8039,
    "mindate": "1929-12-01"
  },
  {
    "elevation": 33.2,
    "id": "GHCND:USW00025308",
    "elevationUnit": "METERS",
    "name": "ANNETTE WEATHER SERVICE OFFICE AIRPORT, AK US",
    "longitude": -131.5787,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 55.0389,
    "mindate": "1941-01-01"
  },
  {
    "elevation": 4.9,
    "id": "GHCND:USW00025309",
    "elevationUnit": "METERS",
    "name": "JUNEAU AIRPORT, AK US",
    "longitude": -134.564,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 58.3566,
    "mindate": "1936-09-01"
  },
  {
    "elevation": 10.1,
    "id": "GHCND:USW00025339",
    "elevationUnit": "METERS",
    "name": "YAKUTAT AIRPORT, AK US",
    "longitude": -139.6712,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 59.512,
    "mindate": "1917-04-01"
  },
  {
    "elevation": 24.4,
    "id": "GHCND:USW00025501",
    "elevationUnit": "METERS",
    "name": "KODIAK AIRPORT, AK US",
    "longitude": -152.48556,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 57.75111,
    "mindate": "1945-01-01"
  },
  {
    "elevation": 20.4,
    "id": "GHCND:USW00025503",
    "elevationUnit": "METERS",
    "name": "KING SALMON AIRPORT, AK US",
    "longitude": -156.6563,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 58.6829,
    "mindate": "1942-01-01"
  },
  {
    "elevation": 19.5,
    "id": "GHCND:USW00025507",
    "elevationUnit": "METERS",
    "name": "HOMER AIRPORT, AK US",
    "longitude": -151.4908,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 59.642,
    "mindate": "1932-09-01"
  },
  {
    "elevation": 23.8,
    "id": "GHCND:USW00025624",
    "elevationUnit": "METERS",
    "name": "COLD BAY AIRPORT, AK US",
    "longitude": -162.7325,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 55.22083,
    "mindate": "1942-03-25"
  },
  {
    "elevation": 36.6,
    "id": "GHCND:USW00026451",
    "elevationUnit": "METERS",
    "name": "ANCHORAGE TED STEVENS INTERNATIONAL AIRPORT, AK US",
    "longitude": -150.0278,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 61.169,
    "mindate": "1952-04-01"
  },
  {
    "elevation": 10.7,
    "id": "GHCND:USW00025713",
    "elevationUnit": "METERS",
    "name": "ST PAUL ISLAND AIRPORT, AK US",
    "longitude": -170.22222,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 57.15528,
    "mindate": "1943-11-05"
  },
  {
    "elevation": 389.2,
    "id": "GHCND:USW00026415",
    "elevationUnit": "METERS",
    "name": "BIG DELTA AIRPORT, AK US",
    "longitude": -145.7214,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 63.9944,
    "mindate": "1917-06-01"
  },
  {
    "elevation": 476.1,
    "id": "GHCND:USW00026425",
    "elevationUnit": "METERS",
    "name": "GULKANA AIRPORT, AK US",
    "longitude": -145.4588,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 62.1591,
    "mindate": "1907-03-01"
  },
  {
    "elevation": 29,
    "id": "GHCND:USW00026442",
    "elevationUnit": "METERS",
    "name": "VALDEZ WEATHER SERVICE OFFICE, AK US",
    "longitude": -146.3517,
    "datacoverage": 1,
    "maxdate": "2015-11-13",
    "latitude": 61.1303,
    "mindate": "1917-05-01"
  },
  {
    "elevation": 101.5,
    "id": "GHCND:USW00026510",
    "elevationUnit": "METERS",
    "name": "MCGRATH AIRPORT, AK US",
    "longitude": -155.6103,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 62.9574,
    "mindate": "1939-04-01"
  },
  {
    "elevation": 106.7,
    "id": "GHCND:USW00026528",
    "elevationUnit": "METERS",
    "name": "TALKEETNA AIRPORT, AK US",
    "longitude": -150.095,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 62.32,
    "mindate": "1918-06-01"
  },
  {
    "elevation": 196,
    "id": "GHCND:USW00026533",
    "elevationUnit": "METERS",
    "name": "BETTLES AIRPORT, AK US",
    "longitude": -151.5154,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 66.9169,
    "mindate": "1945-01-01"
  },
  {
    "elevation": 31.1,
    "id": "GHCND:USW00026615",
    "elevationUnit": "METERS",
    "name": "BETHEL AIRPORT, AK US",
    "longitude": -161.8293,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 60.785,
    "mindate": "1923-08-01"
  },
  {
    "elevation": 9.1,
    "id": "GHCND:USW00026616",
    "elevationUnit": "METERS",
    "name": "KOTZEBUE RALPH WEIN MEMORIAL AIRPORT, AK ",
    "longitude": -162.63333,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 66.86667,
    "mindate": "1897-09-01"
  },
  {
    "elevation": 4,
    "id": "GHCND:USW00026617",
    "elevationUnit": "METERS",
    "name": "NOME MUNICIPAL AIRPORT, AK US",
    "longitude": -165.44,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 64.5111,
    "mindate": "1900-08-01"
  },
  {
    "elevation": 9.4,
    "id": "GHCND:USW00027502",
    "elevationUnit": "METERS",
    "name": "BARROW W POST W ROGERS AIRPORT, AK US",
    "longitude": -156.7815,
    "datacoverage": 1,
    "maxdate": "2017-08-12",
    "latitude": 71.2834,
    "mindate": "1901-09-01"
  }
]

In [16]:
with open(OUTFN, "w") as fh:
    fh.write(json.dumps(stationdata, indent=2))

Optional: Add short names and then save again


In [17]:
[item["name"] for item in stationdata]


Out[17]:
['FAIRBANKS INTERNATIONAL AIRPORT, AK US',
 'ANNETTE WEATHER SERVICE OFFICE AIRPORT, AK US',
 'JUNEAU AIRPORT, AK US',
 'YAKUTAT AIRPORT, AK US',
 'KODIAK AIRPORT, AK US',
 'KING SALMON AIRPORT, AK US',
 'HOMER AIRPORT, AK US',
 'COLD BAY AIRPORT, AK US',
 'ANCHORAGE TED STEVENS INTERNATIONAL AIRPORT, AK US',
 'ST PAUL ISLAND AIRPORT, AK US',
 'BIG DELTA AIRPORT, AK US',
 'GULKANA AIRPORT, AK US',
 'VALDEZ WEATHER SERVICE OFFICE, AK US',
 'MCGRATH AIRPORT, AK US',
 'TALKEETNA AIRPORT, AK US',
 'BETTLES AIRPORT, AK US',
 'BETHEL AIRPORT, AK US',
 'KOTZEBUE RALPH WEIN MEMORIAL AIRPORT, AK ',
 'NOME MUNICIPAL AIRPORT, AK US',
 'BARROW W POST W ROGERS AIRPORT, AK US']

In [19]:
shortnamedic = {
    'FAIRBANKS INTERNATIONAL AIRPORT, AK US': "Fairbanks",
    'ANNETTE WEATHER SERVICE OFFICE AIRPORT, AK US': "Annette",
    'JUNEAU AIRPORT, AK US': "Juneau",
    'YAKUTAT AIRPORT, AK US': "Yakutat",
    'KODIAK AIRPORT, AK US': "Kodiak",
    'KING SALMON AIRPORT, AK US': "King Salmon",
    'HOMER AIRPORT, AK US': "Homer",
    'COLD BAY AIRPORT, AK US': "Cold Bay",
    'ANCHORAGE TED STEVENS INTERNATIONAL AIRPORT, AK US': "Anchorage",
    'ST PAUL ISLAND AIRPORT, AK US': "St. Paul",
    'BIG DELTA AIRPORT, AK US': "Big Delta",
    'GULKANA AIRPORT, AK US': "Gulkana",
    'VALDEZ WEATHER SERVICE OFFICE, AK US': "Valdez",
    'MCGRATH AIRPORT, AK US': "McGrath",
    'TALKEETNA AIRPORT, AK US': "Talkeetna",
    'BETTLES AIRPORT, AK US': "Bettles",
    'BETHEL AIRPORT, AK US': "Bethel",
    'KOTZEBUE RALPH WEIN MEMORIAL AIRPORT, AK ': "Kotzebue",
    'NOME MUNICIPAL AIRPORT, AK US': "Nome",
    'BARROW W POST W ROGERS AIRPORT, AK US': "Barrow (Utqiaġvik)"}

In [21]:
for item in stationdata:
    item['shortname'] = shortnamedic[item['name']]

In [22]:
with open(OUTFN, "w") as fh:
    fh.write(json.dumps(stationdata, indent=2))