In [1]:
import hkvfewspy as hkv
from datetime import datetime
import pandas as pd
import altair as alt
from datetime import datetime
In [2]:
hkv.__version__
Out[2]:
In [3]:
# set client
# make sure your URL maps to the entry point of the fews pi service
# observed variants:
# - http://<host>:<port>/FewsPiService?wsdl
# - http://<host>:<port>/FewsWebServices/fewspiservice?wsdl
# - http://<host>:<port>/FewsPiService/fewspiservice?wsdl
pi = hkv.Pi()
pi.setClient(wsdl='localhost:8080/FewsWebServices/fewspiservice?wsdl')
In [4]:
# get filter
filters = pi.getFilters()
filter_id = filters.f_fewsPi['id']
In [5]:
# write pandas.DataFrame
df = pd.DataFrame(data=pd.np.random.randint(0, 100, size=(10,1)),
index=pd.date_range(start='2018-03-01', periods=10, freq='D'),
columns=['value'])
df['user'] = 'hoek'
df.head()
Out[5]:
In [6]:
# set some variable settings
module_instance_id = 'i_wav_streamflow'
location_id = 'awash_awash'
qualifier_id = 'q_streamflow'
parameter_id = 'Q.STAT'
In [7]:
# create pi-timeseries object
pi_ts = pi.setPiTimeSeries()
# set a header object
pi_ts.write.header.moduleInstanceId(module_instance_id)
pi_ts.write.header.locationId(location_id)
pi_ts.write.header.qualifierId(qualifier_id)
pi_ts.write.header.parameterId(parameter_id)
# set an events object (pandas.Series or pandas.DataFrame)
pi_ts.write.events(df)
pi_ts_xml = pi_ts.to.pi_xml()
In [8]:
# ingest pi-timeseries into fews
pi.putTimeSeriesForFilter(
filterId=filter_id,
piTimeSeriesXmlContent=pi_ts.to.pi_xml()
)
In [9]:
# start and end date
start_date = df.index[0]
end_date = df.index[-1]
In [10]:
# initiate query object
query = pi.setQueryParameters()
In [11]:
# fill query object
query.filterId(filter_id)
query.parameterIds(parameter_id)
query.locationIds(location_id)
query.startTime(start_date)
query.endTime(end_date)
query.clientTimeZone('Europe/Amsterdam')
In [12]:
# query timeseries
df_query = pi.getTimeSeries(queryParameters=query, setFormat='df')
In [13]:
# print first five rows
df_query.head()
Out[13]:
In [ ]: