The following python example will read the time series for a given location and parameter for a period of one day. The script has been tested using python 3.6 and requires the requests, matplotlib and datetime modules:

import requests
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime

url = 'http://localhost:8181/FewsWebServices/rest/fewspiservice/v1/timeseries?'
params = dict(
    documentVersion='1.24',
    documentFormat='PI_JSON',
    locationIds=['63306260000'],
    parameterIds=['T.obs.mean'],
    moduleInstanceIds=['ImportObserved'],
    startTime='2010-01-01T00:00:00Z',
    endTime='2016-01-01T00:00:00Z',
    showStatistics='true'
)

response = requests.get(url=url, params=params)
data = response.json()
timeSeries = data['timeSeries']

timeZoneValue = float(data['timeZone'])
timeZone =  f"{timeZoneValue:05.2f}"
timeZone = timeZone.replace(".", "")
if timeZoneValue >= 0:
   timeZone = "+" + timeZone
else:
    timeZone = "-" + timeZone

x = []
y = []
# we assume only one series.
for timeSerie in timeSeries:
    if 'events' in timeSerie:
        header = timeSerie['header']
        missingValue = header['missVal']
        print(missingValue)
        minValue = float(header['minValue'])
        maxValue = float(header['maxValue'])
        for event in timeSerie['events']:
            x.append(datetime.datetime.strptime(event['date'] + ' ' + event['time'] + ' ' + timeZone, '%Y-%m-%d %H:%M:%S %z'))
            if event['value'] != missingValue:
                y.append(event['value'])
            else:
                y.append(None)

dateFormatter = mdates.DateFormatter('%Y')
fig, ax = plt.subplots()
ax.xaxis.set_major_formatter(dateFormatter)
ax.xaxis.set_major_locator(plt.MaxNLocator(7))
ax.yaxis.set_major_locator(plt.MaxNLocator(8))
ax.grid(True)

ax.plot(x, y)
plt.show()


Running the python script will produce a plot like this:

 

  • No labels