-----------------------------
script: get_maps1d_series.php
-----------------------------

Purpose
-------
Get timeseries from the Matroos maps1d database.

Usage
-----
https://noos.matroos.rws.nl/direct/get_maps1d_series.php?node=&source=&unit=&tstart=&tstop=&tinc=&timezone=&format=

The part after '?' is meant to define parameters for the script.
Each parameter should be given as <param>=<value>, the different
parameters are separated by the '&' sign.

Examples
--------
https://noos.matroos.rws.nl/direct/get_maps1d_series.php?node=Hoek van Holland&source=dcsm7_harmonie_bf&unit=waterlevel&tstart=202512170000&tstop=202512180000&timezone=gmt&format=text

wget --proxy=off -O output.txt \
'https://noos.matroos.rws.nl/direct/get_maps1d_series.php?node=Hoek van Holland&source=dcsm7_harmonie_bf&unit=waterlevel&tstart=202512170000&tstop=202512180000&timezone=gmt&format=text'

Cut and paste the above URL in the address bar of the browser, or click on the link, to get an example of the output.

Parameters
----------
- node        : The node name. See below for a list of node names. Node names can also
                be found in the OpenStreetMap portal: 'https://noos.matroos.rws.nl/leaflet/index.html'.
                Multiple nodes may be specified; these must be separated by a semi-colon (;)
                Each entry in the list of node names may contain one or more wild cards '*',
                e.g. node name 'Maas*' retrieves all locations that start with the
                word 'Maas', while node name 'Oude*Maas' retrieves all locations
                that start with the word 'Oude' and end with the word 'Maas'. Note
                that the search for node names is case insensitive if a wild card
                is used, otherwise the search is case sensitive.

- node_id     : The node id. This can be used as an alternative for the node parameter.
                Multiple node_ids may be specified; separated by a semi-colon (;).

- source      : The source (or alias thereof) as known by Matroos (see below).

- unit        : A unit as known by Matroos (see below).

- realization : Realization number. This may be a single number, a
                range (two numbers separated by two dots (..)), or a
                list containing single numbers and/or ranges
                (separated by semi-colon (;)), e.g. 0 or 0..10 or
                0;1 or 0;1;5..10. The strings 'all' and '*' (without
                quotes) return all the available realizations.

- tstart      : First time for the timeseries in format YYYYMMDDHHMM.
                Any '-', <space>, or ':' will be ignored, so a format like 
                YYYY-MM-DD HH:MM will be accepted as well.
                Default: date and time of last analysis.

- tstop       : Last time for the timeseries in the same format as tstart.
                Default: tstart + 50 days.

- tinc        : Timestep in minutes.
                Optional. Default: all available timesteps between tstart and tstop.

- timezone    : Timezone MET or GMT.
                Default: MET.

- anal_time   : Analysis time, default 'most recent'. If given, analyses
                after this time will be ignored.

- last_anal   : If last_anal=1, only returns data of the latest
                analysis at or before anal_time.

- single_anal : If single_anal=1, only returns data for one analysis,
                i.e. the result is not a combination of multiple analyses.
                Default: 0

- fc_min      : Minimum forecast lead time in minutes; default no minimum.

- fc_max      : Maximum forecast lead time in minutes; default no maximum.

- print_anal  : Add an extra column in the output containing the analysis
                time of that value (anal_time=Y or anal_time=1).
                Default: when anal_time=0 or anal_time='' analyse time is not printed.

- get_anal    : If Y(es) or 1, only the available analyse times between
                tstart and tstop are given.

- all_anal    : If Y(es) or 1, all the available analyse times between
                tstart and tstop are given.
                (w.r.t. fc_min and fc_max if given)

- zip         : Optional. If given and not '0', the NetCDF-file (in case format='netcdf')
                will be zipped before the download starts.

- format      : Output format 'text' or 'xml' or 'netcdf' or 'dd_v1.0' or 'dd_v1.9';
                'dd' without a version number redirects to the most recent version of Digital Delta.
                Default: text.

- format_date_time: Output format for date/time strings (only for format=text):
                'noos'   : YYYYMMDDhhmm
                'iso'    : YYYY-MM-DDThh:mm:ss
                '2columns: YYYY-MM-DD hh:mm:ss.
                Default: 'noos'.

- filter_missing: Flag for filtering missing values from the time series:
                '0' : Missing values are shown in the time series (see also: missing_value)
                '1' : Missing values are not shown in the time series
                Default: '1'.

- missing_value: Specify how missing values must be presented in the time series (numeric or text)
                For xml or netcdf formats, only numeric values are supported.
                For netcdf format, the default netCDF missing values are used.
                For DD (JSON) format, null is used as the missing value.
                Default: '99999999999.'.

- includeMetaData : Optional. Flag that specifies whether to write meta
                data (true) or not (false) in Digital Delta output (format=dd).
                Default: true.

- responseLocation : Optional. Rename certain location response parameters for Digital Delta output (format=dd).
                Arguments should look like: <original_attribute>:eq:<custom_response>;
                multiple attributes can be replaced by adding more of these arguments separated by a semi-colon (;).

- responseObservationType : see 'responseLocation', but for unit parameters.

- process     : Optional. If format=dd, the results are filtered for the given process. Process can be one of:
                'measurement', 'astronomical', or 'forecast'.
                Default: measurement.


Available nodes, sources and units
----------------------------------
Sources:
--------
bma2
bma2_swellwave_height_hm0
bma2_wave_height_hm0
bos_brabant_discharge
bos_brabant_discharge_eps
bos_brabant_waterlevel
bos_brabant_waterlevel_eps
dcsm6_zuno4_harmonie_prosymfo
dcsm7_ecmwf_prosymfo
dcsm_fm05nm_astro
dcsm_fm05nm_biasfilter_ecmwf
dcsm_fm05nm_ecmwf
dcsm_fm05nm_ecmwf_bias
dcsm_fm05nm_ecmwf_eps
dcsm_fm100m_astro
dcsm_fm100m_biasfilter_harmonie
dcsm_fm100m_ecmwf
dcsm_fm100m_ecmwf_bias
dcsm_fm100m_harmonie
dcsm_v6_astro
dcsm_v6_ecmwf
dcsm_v6_ecmwf_eps
dcsm_v6_ecmwf_eps_51members
dcsm_v6_ecmwf_eps_51members_bias
dcsm_v6_ecmwf_eps_bias
dcsm_v6_harmonie
dcsm_v6_hirlam
dcsm_v6_kf_harmonie
dcsm_v6_kf_hirlam
dcsm_v6_kfr_hirlam
dcsmv6_zunov4_astro
dcsmv6_zunov4_harmonie
dcsmv6_zunov4_hirlam
dcsmv6_zunov4_kf_harmonie
dcsmv6_zunov4_kf_hirlam
dcsmv6_zunov4_kfr_hirlam
fews_iwp_gm_rtctools
fews_iwp_ijg_ofp_signal
fews_iwp_ijg_rtctools
fews_iwp_kgt_rtctools
fews_iwp_lbjk_rtctools
fews_iwp_nza_rtctools
fews_iwp_nzk_chemmap
fews_iwp_tk_rtctools
fews_iwp_tk_zijkanaal_chemmap
fews_iwp_twentekanaal_chemmap
fews_iwp_vm_rtctools
fews_iwp_vzm_rtctools
fews_iwp_vzm_rtctools_tb
fews_meren_bretschneider
fews_meren_eps_ijsselmeer
fews_meren_eps_ijsselmeer_percentiles
fews_meren_eps_markermeer
fews_meren_eps_markermeer_percentiles
fews_meren_eps_veluwerandmeren
fews_meren_eps_veluwerandmeren_percentiles
fews_meren_harmonie_bretschneider
fews_meren_harmonie_pcoverslag
fews_meren_harmonie_pcoverslag_dam
fews_meren_pcoverslag
fews_meren_pcoverslag_dam
fews_riv_choozeijsd_chemmap
fews_riv_choozkeiz3_perfectmeteo
fews_riv_choozkeiz3_perfectmeteo_arma
fews_riv_dwd_cosmo_leps_hbv_maas
fews_riv_dwd_cosmo_leps_hbv_maas_bias
fews_riv_dwd_cosmo_leps_hbv_rijn
fews_riv_dwd_cosmo_leps_hbv_rijn_bias
fews_riv_dwd_cosmo_leps_sobek3_choozkeiz
fews_riv_dwd_cosmo_leps_sobek3_choozkeiz_bias
fews_riv_dwd_cosmo_leps_sobek3_choozkeiz_ens_dres
fews_riv_dwd_cosmo_leps_sobek3_maxrtk
fews_riv_dwd_cosmo_leps_sobek3_maxrtk_bias
fews_riv_dwd_icon_eu_hbv_maas
fews_riv_dwd_icon_eu_hbv_maas_bias
fews_riv_dwd_icon_eu_hbv_rijn
fews_riv_dwd_icon_eu_hbv_rijn_bias
fews_riv_dwd_icon_eu_sobek3_choozkeiz
fews_riv_dwd_icon_eu_sobek3_choozkeiz_bias
fews_riv_dwd_icon_eu_sobek3_maxrtk
fews_riv_dwd_icon_eu_sobek3_maxrtk_bias
fews_riv_dwd_icon_eu_wflow_flex_topo_meuse
fews_riv_dwd_icon_eu_wflow_hbv_rhine
fews_riv_dwd_icon_hbv_maas
fews_riv_dwd_icon_hbv_maas_bias
fews_riv_dwd_icon_hbv_rijn
fews_riv_dwd_icon_hbv_rijn_bias
fews_riv_dwd_icon_sobek3_choozkeiz
fews_riv_dwd_icon_sobek3_choozkeiz_bias
fews_riv_dwd_icon_sobek3_maxrtk
fews_riv_dwd_icon_sobek3_maxrtk_bias
fews_riv_ecmwf_ens_ext_hbv_maas
fews_riv_ecmwf_ens_ext_hbv_rijn
fews_riv_ecmwf_ens_hbv_maas
fews_riv_ecmwf_ens_hbv_maas_bias
fews_riv_ecmwf_ens_hbv_rijn
fews_riv_ecmwf_ens_hbv_rijn_bias
fews_riv_ecmwf_ens_sobek3_choozkeiz
fews_riv_ecmwf_ens_sobek3_choozkeiz_bias
fews_riv_ecmwf_ens_sobek3_choozkeiz_ens_dres
fews_riv_ecmwf_ens_sobek3_maxrtk
fews_riv_ecmwf_ens_sobek3_maxrtk_bias
fews_riv_ecmwf_ens_sobek3_maxrtk_ens_dres
fews_riv_ecmwf_hres_hbv_maas
fews_riv_ecmwf_hres_hbv_maas_bias
fews_riv_ecmwf_hres_hbv_rijn
fews_riv_ecmwf_hres_hbv_rijn_bias
fews_riv_ecmwf_hres_sobek3_choozkeiz
fews_riv_ecmwf_hres_sobek3_choozkeiz_bias
fews_riv_ecmwf_hres_sobek3_maxrtk
fews_riv_ecmwf_hres_sobek3_maxrtk_bias
fews_riv_enkf_avg_sobek3_maxrtk
fews_riv_enkf_sobek3_maxrtk
fews_riv_fm_dornrtk
fews_riv_fm_lixhekeiz
fews_riv_forecast_sobek3_eijsdkeiz
fews_riv_forecast_sobek3_eijsdkeiz_bias
fews_riv_forecast_sobek3_lobrtk
fews_riv_forecast_sobek3_lobrtk_bias
fews_riv_hindcast_hbv_maas
fews_riv_hindcast_hbv_rijn
fews_riv_hindcast_sobek3_choozkeiz
fews_riv_hindcast_sobek3_eijsdkeiz
fews_riv_hindcast_sobek3_lobrtk
fews_riv_hindcast_sobek3_maxrtk
fews_riv_hindcast_wflow_flex_topo_meuse
fews_riv_hindcast_wflow_hbv_rhine
fews_riv_ijssel
fews_riv_ijssel_chemmap
fews_riv_knmi_hirlam_hbv_maas
fews_riv_knmi_hirlam_hbv_maas_bias
fews_riv_knmi_hirlam_hbv_rijn
fews_riv_knmi_hirlam_hbv_rijn_bias
fews_riv_knmi_hirlam_sobek3_choozkeiz
fews_riv_knmi_hirlam_sobek3_choozkeiz_bias
fews_riv_knmi_hirlam_sobek3_maxrtk
fews_riv_knmi_hirlam_sobek3_maxrtk_bias
fews_riv_lek
fews_riv_lek_chemmap
fews_riv_maas_chemmap
fews_riv_maas_hbv_perfectmeteo
fews_riv_maas_hbv_perfectmeteo_arma
fews_riv_maas_km
fews_riv_maxlob_chemmap
fews_riv_maxrtk3_perfectmeteo
fews_riv_maxrtk3_perfectmeteo_arma
fews_riv_neerslag
fews_riv_no_rain_hbv_maas
fews_riv_no_rain_hbv_maas_bias
fews_riv_no_rain_hbv_rijn
fews_riv_no_rain_hbv_rijn_bias
fews_riv_no_rain_sobek3_choozkeiz
fews_riv_no_rain_sobek3_choozkeiz_bias
fews_riv_no_rain_sobek3_maxrtk
fews_riv_no_rain_sobek3_maxrtk_bias
fews_riv_rijn_hbv_perfectmeteo
fews_riv_rijn_hbv_perfectmeteo_arma
fews_riv_rijn_km
fews_riv_waal_chemmap
fews_rmm_km
fews_rmm_km_sobek3
fews_rmm_km_sobek3_bias
fews_rmm_osr
fews_rmm_sobek3_ecmwf_eps
fews_rmm_sobek3_lph2012
fews_rmm_sobek3_lph2012_bias
fews_rmm_sobek3_lph2012_ha
fews_rmm_sobek3_lph2012_ha_bias
fews_rmm_sobek3_lph2012_ha_ok
fews_rmm_sobek3_lph2012_ha_ok_bias
fews_rmm_sobek3_lph84
fews_rmm_sobek3_lph84_bias
fews_vecht_eps
fews_wv_ijsselmeer_ecmwf_ext
hatyan
hbr_observed
hmc_os7
ijmond_v3
ijsselmeer4_harmonie_meerpeilcorrectie
ijsselmeer4c_ecmwf_eps
ijsselmeer4c_ecmwf_eps_arma
ijsselmeer4c_ecmwf_eps_meerpeilcorrectie
ijsselmeer4c_harmonie
ijsselmeer4c_harmonie_meerpeilcorrectie
ijsselmeer_fm_harmonie
knmi_dcsmv5_eps
knmi_harmonie_aggregated
kwr_ecmwf
kwr_rwspred
ldhowaarschuwing_meren
ldhowaarschuwing_noordzee
ldhowaarschuwing_rivieren
ldhowaarschuwing_rmm
makkink_ecmwfext_eps
markermeer4c_ecmwf_eps
markermeer4c_ecmwf_eps_arma
markermeer4c_ecmwf_eps_meerpeilcorrectie
markermeer4c_harmonie
markermeer4c_harmonie_meerpeilcorrectie
markermeer_fm_harmonie
markermeer_meerpeilcorrectie_fm
meren_arma
nhi30_districts
nhi30_districts_ecmwf_det
nhi30_links
nhi30_links_ecmwf_det
nhi30_nodes
nhi30_nodes_ecmwf_det
noordzee_kuststrook_waves_harmonie_ml
referentiereeksen
rivieren_choozkeiz3_iconeu_eps
rivieren_choozkeiz3_iconeu_eps_arma
rivieren_maxrtk3_iconeu_eps
rivieren_maxrtk3_iconeu_eps_arma
rivieren_meusehbv_iconeu_eps
rivieren_meusehbv_iconeu_eps_arma
rivieren_rheinhbv_iconeu_eps
rivieren_rheinhbv_iconeu_eps_arma
rmm_ndb3_bos
rws_prediction
swan_dcsm
swan_dcsm_harmonie
swan_dcsm_harmonie_spec1d
swan_dcsm_spec1d
swan_kuststrook
swan_kuststrook_harmonie
swan_kuststrook_harmonie_spec1d
swan_kuststrook_harmonie_spec1d_ml
swan_kuststrook_harmonie_spec2d
swan_kuststrook_harmonie_spec2d_ml
swan_kuststrook_spec1d
swan_kuststrook_spec2d
swan_zuno
swan_zuno_harmonie
swan_zuno_harmonie_spec1d
swan_zuno_spec1d
veluwerandmeren4_ecmwf_eps
veluwerandmeren4_ecmwf_eps_arma
veluwerandmeren4_ecmwf_eps_meerpeilcorrectie
veluwerandmeren_fm_harmonie
veluwerandmeren_meerpeilcorrectie_fm
waves_gooi_eem_meer_harmonie_fews
waves_ijsselmeer_harmonie_fews
waves_ijsselmeer_ijvd_harmonie
waves_ketel_vosse_meer_harmonie_fews
waves_markermeer_harmonie_fews
waves_veluwerandmeren_harmonie_fews
waves_zwartemeer_harmonie_fews
zeedelta_v1

Units:
------
afvoerdm_takken
air_pressure
air_temperature
bedlevel
chloride
chloride_gehalte
chloridedm_knopen
dewpoint_temperature
dir
discharge
discharge_1976
discharge_2018
discharge_diurnal
discharge_highest
discharge_highest05
discharge_hourly
discharge_in
discharge_lowest
discharge_lowest05
discharge_main_channel
discharge_mean
discharge_median
discharge_net
discharge_out
district_lozingsbehoefte
district_lozingsreductie
district_onttrekkingsbehoefte
district_onttrekkingsreductie
dm_bnd_d
dm_bnd_e
dm_debiet
dm_diw_d
dm_diw_e
dm_dwcode_d
dm_dwcode_e
dm_kwel_d
dm_kwel_e
dm_neerslag_d
dm_neerslag_e
dm_neerslag_netto
dm_qin
dm_qout
dm_rwzi_d
dm_rwzi_e
dm_schut_lekverlies_d
dm_schut_lekverlies_e
dm_storage
evaporation
flow_area
flow_area_main_channel
flow_area_main_section
flow_width_main_channel
golf_oploop
golf_oploop_niveau
golf_overslag
golf_overslag_niveau
groundwater_layer1
groundwater_layer2
hsig
hswell
inflow
makkink_evapotranspiration
number_chutes
opening_height
outflow
overslag_debiet
potential_precipitation_excess
potential_precipitation_shortage
potential_precipitation_shortage_1976
potential_precipitation_shortage_dry05
potential_precipitation_shortage_median
precipitation
precipitation_aggregated
pumps_available
runoff_coefficient
sa
salinity
salinity_bottom_layer
salinity_depth_averaged
salinity_mid_layer
salinity_sensor_depth
salinity_surface_layer
sep
snow_depth_water_equivalent_surface
snow_water_equivalent
surface_solar_radiation_downwards
swellwave_height_hm0
tekort_beregening
tekort_doorspoeling
tekort_drinkwater
tekort_industrie
tekort_peilbeheer
tem
tm_10
totale_tekort
totale_watervraag
VaDens
VaDens1d
vel_dir
velocity
velocity_direction_0_10m
velocity_direction_0_15m
velocity_direction_0_20m
velocity_direction_0_5m
velocity_direction_depth_averaged
velocity_direction_sensor_depth
velocity_direction_surface_layer
velocity_magnitude
velocity_magnitude_0_10m
velocity_magnitude_0_15m
velocity_magnitude_0_20m
velocity_magnitude_0_5m
velocity_magnitude_depth_averaged
velocity_magnitude_sensor_depth
velocity_magnitude_surface_layer
velocity_main_channel
velu
veluv_abs
velv
warning_level
water_depth
water_depth_main_channel
water_direction
water_direction_0_15m
water_direction_0_5m
water_direction_depth_averaged
water_direction_sensordepth
water_speed
water_speed_0_15m
water_speed_0_5m
water_speed_depth_averaged
water_speed_sensordepth
water_velocity
waterlevel
waterlevel_astro
waterlevel_astro_max
waterlevel_astro_min
waterlevel_highest
waterlevel_highest05
waterlevel_lowest
waterlevel_lowest05
waterlevel_max
waterlevel_mean
waterlevel_median
waterlevel_min
waterlevel_model
waterlevel_model_max
waterlevel_model_min
waterlevel_surge
waterlevel_threshold_max
waterlevel_threshold_min
waterstandendm_knopen
watervraag_beregening
watervraag_doorspoeling
watervraag_drinkwater
watervraag_industrie
watervraag_peilbeheer
wave_dir_th0
wave_height_hm0
wave_period_tm10
waveangle
WaveDir
waveheight
waveperiod
WaveSpread
wind_speed_u
wind_speed_v
x_velocity
y_velocity

Nodenames will be listed after a source has been specified.