import hkvfewspy as hkv
import pandas as pd
pi = hkv.Pi(protocol='rest')
url = 'http://localhost:8080/FewsWebServices/rest/fewspiservice/v1/'
pi.setUrl(url=url)
filters = pi.getFilters()
filters
f_ruw_ongevalideerd_ADC | f_ruw_ongevalideerd_ADV | f_ruw_ongevalideerd_ALT | f_ruw_ongevalideerd_AQD | f_ruw_ongevalideerd_MPP | f_ruw_ongevalideerd_STA | f_ruw_ongevalideerd_STB | f_ruw_gevalideerd_ADC | f_ruw_gevalideerd_ADV | f_ruw_gevalideerd_ALT | f_ruw_gevalideerd_AQD | f_ruw_gevalideerd_MPP | f_ruw_gevalideerd_STB | f_meteo | f_dms | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | f_ruw_ongevalideerd.ADC | f_ruw_ongevalideerd.ADV | f_ruw_ongevalideerd.ALT | f_ruw_ongevalideerd.AQD | f_ruw_ongevalideerd.MPP | f_ruw_ongevalideerd.STA | f_ruw_ongevalideerd.STB | f_ruw_gevalideerd.ADC | f_ruw_gevalideerd.ADV | f_ruw_gevalideerd.ALT | f_ruw_gevalideerd.AQD | f_ruw_gevalideerd.MPP | f_ruw_gevalideerd.STB | f_meteo | f_dms |
name | ADC | ADV | ALT | AQD | MPP | STA | STB | ADC | ADV | ALT | AQD | MPP | STB | KNMI-meteo | DMS-data |
locations = pi.getLocations(filterId='f_ruw_gevalideerd.ADV')
locations
FL65 | FL66 | FL67 | FL68 | FL69 | FL70 | FL65_A | FL65_B | FL65_C | FL69_A | FL69_B | FL69_C | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
lat | 52.57262694703878 | 52.60351437349362 | 52.63440351394213 | 52.67941353559804 | 52.64605003559749 | 52.688348465311826 | 52.57514377528408 | 52.5750538909331 | 52.57496400639703 | 52.6444960993523 | 52.64457693986963 | 52.64469371574405 |
locationId | FL65 | FL66 | FL67 | FL68 | FL69 | FL70 | FL65_A | FL65_B | FL65_C | FL69_A | FL69_B | FL69_C |
lon | 5.37282288109573 | 5.3640595418873955 | 5.406910284297334 | 5.324480364657235 | 5.41056506735915 | 5.328238993224599 | 5.376923021876932 | 5.3767755265279416 | 5.3766280317805935 | 5.405984021292452 | 5.406250004564957 | 5.406589879488774 |
shortName | FL65 Marker Wadden Zuiderstrand | FL66 Marker Wadden Noorderstrand | FL67 Markermeer Natuurstrand | FL68 Markermeer Vooroeverdam | FL69 IJsselmeer 2 | FL70 IJsselmeer 1 | FL65_A Marker Wadden Zuiderstrand | FL65_B Marker Wadden Zuiderstrand | FL65_C Marker Wadden Zuiderstrand | FL69_A IJsselmeer 2 | FL69_B IJsselmeer 2 | FL69_C IJsselmeer 2 |
x | 154025.0 | 153432.0 | 156334.0 | 150758.0 | 156581.0 | 151013.0 | 154303.0 | 154293.0 | 154283.0 | 156271.0 | 156289.0 | 156312.0 |
y | 509448.0 | 512885.0 | 516322.0 | 521332.0 | 517618.0 | 522326.0 | 509728.0 | 509718.0 | 509708.0 | 517445.0 | 517454.0 | 517467.0 |
parameters = pi.getParameters(filterId='f_ruw_gevalideerd.ADV')
parameters
D_0_water | S_0_sound | S_0_east | S_0_north | S_0_up | T_0 | V_0_battery | ErrCode_0 | Status_0 | Amp1_0 | Amp2_0 | Amp3_0 | Corr1_0 | Corr2_0 | Corr3_0 | Heading_0 | Pitch_0 | Roll_0 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
displayUnit | hPa | m/s | m/s | m/s | m/s | oC | V | - | - | m | m | m | % | % | % | o | o | o |
id | D.0.water | S.0.sound | S.0.east | S.0.north | S.0.up | T.0 | V.0.battery | ErrCode.0 | Status.0 | Amp1.0 | Amp2.0 | Amp3.0 | Corr1.0 | Corr2.0 | Corr3.0 | Heading.0 | Pitch.0 | Roll.0 |
name | Waterdruk [hPa] - noneq | Snelheid geluid [m/s] - noneq | Snelheid east [m/s] - noneq | Snelheid north [m/s] - noneq | Snelheid up [m/s] - noneq | Temperatuur [°C] - noneq | Voltage batterij [V] - noneq | Error code [-] - noneq | Status [-] - noneq | Amp1 [m] - noneq | Amp2 [m] - noneq | Amp3 [m] - noneq | Corr1 [-] - noneq | Corr2 [-] - noneq | Corr3 [-] - noneq | Heading [-] - noneq | Pitch [-] - noneq | Roll [-] - noneq |
parameterType | instantaneous | instantaneous | instantaneous | instantaneous | instantaneous | instantaneous | instantaneous | instantaneous | instantaneous | instantaneous | instantaneous | instantaneous | instantaneous | instantaneous | instantaneous | instantaneous | instantaneous | instantaneous |
unit | hPa | m/s | m/s | m/s | m/s | oC | V | - | - | m | m | m | % | % | % | o | o | o |
usesDatum | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false |
query_parameters = pi.setQueryParameters(protocol='rest')
query_parameters.filterId('f_ruw_ongevalideerd.STB')
query_parameters.locationIds(['FL65'])
query_parameters.parameterIds(['H.w.0'])
query_parameters.startTime(pd.datetime(2019,5,18,3,38))
query_parameters.endTime(pd.datetime(2019,5,18,3,39))
query_parameters.useMilliseconds(True) # new in 2017.02
query_parameters.version('1.25')
query_parameters.query
{'convertDatum': False, 'importFromExternalDataSource': False, 'omitMissing': False, 'onlyHeaders': False, 'onlyManualEdits': False, 'showEnsembleMemberIds': False, 'documentVersion': '1.25', 'documentFormat': 'PI_XML', 'showStatistics': False, 'showThresholds': False, 'useDisplayUnits': True, 'filterId': 'f_ruw_ongevalideerd.STB', 'locationIds': ['FL65'], 'parameterIds': ['H.w.0'], 'startTime': '2019-05-18T03:38:00Z', 'endTime': '2019-05-18T03:39:00Z', 'useMilliseconds': True}
timeseries = pi.getTimeSeries(query_parameters, print_response=False)
timeseries.head()
moduleInstanceId | qualifierId | parameterId | units | locationId | stationName | flag | value | |
---|---|---|---|---|---|---|---|---|
date | ||||||||
2019-05-18 03:38:00+00:00 | ruw_ongevalideerd_STB | H.w.0 | mNAP | FL65 | FL65 Marker Wadden Zuiderstrand | 0 | -0.147 | |
2019-05-18 03:38:00.010000+00:00 | ruw_ongevalideerd_STB | H.w.0 | mNAP | FL65 | FL65 Marker Wadden Zuiderstrand | 0 | 2 | |
2019-05-18 03:38:00.175000+00:00 | ruw_ongevalideerd_STB | H.w.0 | mNAP | FL65 | FL65 Marker Wadden Zuiderstrand | 0 | 1 | |
2019-05-18 03:38:00.208000+00:00 | ruw_ongevalideerd_STB | H.w.0 | mNAP | FL65 | FL65 Marker Wadden Zuiderstrand | 0 | 1 | |
2019-05-18 03:38:00.226000+00:00 | ruw_ongevalideerd_STB | H.w.0 | mNAP | FL65 | FL65 Marker Wadden Zuiderstrand | 0 | 1 |
# set some variable settings
module_instance_id = 'ruw_ongevalideerd_STB '
location_id = 'FL65'
parameter_id = 'H.w.0'
#timeseries['user'] = 'hoek'
import random
new_index = []
for ts in timeseries.index:
new_index.append(ts.replace(microsecond=random.randint(0, 999)*1000))
timeseries.index = pd.DatetimeIndex(new_index)
timeseries.value = 1
timeseries.head()
moduleInstanceId | qualifierId | parameterId | units | locationId | stationName | flag | value | |
---|---|---|---|---|---|---|---|---|
2019-05-18 03:38:00.568000+00:00 | ruw_ongevalideerd_STB | H.w.0 | mNAP | FL65 | FL65 Marker Wadden Zuiderstrand | 0 | 1 | |
2019-05-18 03:38:00.654000+00:00 | ruw_ongevalideerd_STB | H.w.0 | mNAP | FL65 | FL65 Marker Wadden Zuiderstrand | 0 | 1 | |
2019-05-18 03:38:00.765000+00:00 | ruw_ongevalideerd_STB | H.w.0 | mNAP | FL65 | FL65 Marker Wadden Zuiderstrand | 0 | 1 | |
2019-05-18 03:38:00.430000+00:00 | ruw_ongevalideerd_STB | H.w.0 | mNAP | FL65 | FL65 Marker Wadden Zuiderstrand | 0 | 1 | |
2019-05-18 03:38:00.835000+00:00 | ruw_ongevalideerd_STB | H.w.0 | mNAP | FL65 | FL65 Marker Wadden Zuiderstrand | 0 | 1 |
# create pi-timeseries object
pi_ts = pi.setPiTimeSeries()
# set the root version
pi_ts.write.root.version('1.25')
# set a header object
pi_ts.write.header.moduleInstanceId(module_instance_id)
pi_ts.write.header.locationId(location_id)
pi_ts.write.header.parameterId(parameter_id)
# set an events object (pandas.Series or pandas.DataFrame)
pi_ts.write.events(timeseries)
pi_ts_xml = pi_ts.to.pi_xml()
WARNING:root: The following column names are ignored: 'locationId', 'qualifierId', 'units', 'parameterId', 'moduleInstanceId', 'stationName'. Only the following column names are accepted: 'value', 'minValue', 'maxValue', 'flag', 'flagSource', 'comment', 'user''
filterId='f_ruw_ongevalideerd.STB'
convertDatum=True
pi.postTimeSeries(filterId=filterId, piTimeSeriesXmlContent=pi_ts_xml, convertDatum=convertDatum)
External time series successfully mapped to FEWS time series FL65 H.w.0 nonequidistant 1 time series imported, 0 time series rejected The following locations-parameter combination imported FL65:H.w.0