import hkvfewspy as fewspy
from datetime import datetime
import altair as alt
alt.data_transformers.enable('json')
%matplotlib inline
# set client
pi = fewspy.Pi()
pi.setClient(wsdl='http://localhost:8100/FewsPiService?wsdl')
# get filters
filters = pi.getFilters()
filter_id = filters.f_meteo_historie['id']
# get parameters
parameters = pi.getParameters(filter_id)
parameter_ids = [parameters.P_meting['id'], parameters.E_meting['id']]
parameter_ids
# get locations
locations = pi.getLocations(filterId=filter_id, setFormat='gdf')
locations.plot()
locations.head()
# selecteer stion Schiphol en Berkhout
location_ids = locations.locationId.iloc[2:4].tolist()
location_ids
start_date = datetime(2018,1,2)
end_date = datetime(2018,9,19)
Zie beneden voor tekst en uitleg waarom we gebruik moeten maken van de 'oude' getTimeSeriesForFilter2 functie
# define object to create SOAP list
array_of_string = pi.client.get_type('ns0:ArrayOfString')
# get timeseries
df = pi.getTimeSeriesForFilter2(filterId = filter_id,
parameterIds = array_of_string(parameter_ids),
locationIds = array_of_string(location_ids),
startTime = start_date,
endTime = end_date,
setFormat = 'df')
data = df.reset_index()
data.head()
alt.Chart(data).mark_line().encode(
x='yearmonthdatehours(date):T', # aggregate from 10 minute values to hourly values
y=alt.Y('value:Q', axis=alt.Axis(title='millimeter')),
color='stationName',
column='parameterId'
).interactive(bind_y=False) # includes scroll zoom and drag on x-axis
# same data different chart
alt.Chart(data).mark_rect().encode(
x=alt.X('month(date):N', axis=alt.Axis(title='Month of the year'), scale=alt.Scale(rangeStep=50)),
y=alt.Y('value', bin=alt.Bin(maxbins=40), axis=alt.Axis(title='mm')),
color=alt.Color('average(value):Q', scale=alt.Scale(scheme='greenblue'), legend=alt.Legend(title="millimeters")),
row='parameterId',
column='stationName'
).configure_view(height=150)
De FEWS 2017.02 stand-alone versie heeft alleen een basis SOAP web-service.
De verbeterde SOAP en de gehele REST web-services zijn alleen toegankelijk
wanneer het bestand FewsPiServices.war is toegevoegd aan Tomcat met behulp van een direct-database koppeling
Dus banaf 2017.02 is het niet mogelijk om de verbeterde SOAP of REST web-interface aan te bieden in een stand-alone FEWS instantie.
Met de basis SOAP web-service kan er bijvoorbeeld niet gefilterd worden op de moduleInstanceIds en zijn sommige functies niet beschikbaar
Onderstaande kan dus niet..
# query = pi.setQueryParameters(prefill_defaults=True)
# query.parameterIds(parameter_id)
# query.moduleInstanceIds(['ImportScalarHistWiwb'])
# query.locationIds(location_ids)
# query.startTime(start_date)
# query.endTime(end_date)
# query.clientTimeZone('Europe/Amsterdam')
# query.query
# df = pi.getTimeSeries(queryParameters=query, setFormat='df', print_response=True)
# df.head()