...
How to derive/make PASTAS models is not covered on this page. Keep in mind that for 1 groundwater well location 1 PASTAS needs to be made because PASTAS is a timeseries model. Because PASTAS is a modelling framework this means a model is not set in stone and is highly flexible to what the modeller wants to achieve. Therefore it could be that when integrating it operationally in FEWS that you will encounter errors not previously encountered in deriving the model and using the model in model studies. You will have to make sure yourselves to apply correct error handling to these errors in the PASTAS Python model script.
Required external modules/binaries
- Python 3.6 or higher.
- Use 'pip install pastas' to install the main package
- Use 'pip install pastastore' to install the package that will manage the pastas project and timeseries
- To import FEWS PI xml files you will have to install hydropandas using 'pip install hydropandas'
- Optionally if you want to use PASTAS to validate groundwater data, use 'pip install traval'. The usage of traval is not covered on this page
Workflow
Below an example of a workflow to run PASTAS model(s).
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<?xml version="1.0" encoding="UTF-8"?> <workflow xmlns="http://www.wldelft.nl/fews" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.wldelft.nl/fews http://fews.wldelft.nl/schemas/version1.0/workflow.xsd" version="1.1"> <activity> <runIndependent>true</runIndependent> <moduleInstanceId>PASTAS_TRAVAL_validatie</moduleInstanceId> <moduleConfigFileName>PASTAS_prep</moduleConfigFileName> </activity> <activity> <runIndependent>true</runIndependent> <moduleInstanceId>PASTAS_TRAVAL_validatie</moduleInstanceId> <moduleConfigFileName>PASTAS_TRAVAL_validatie_Export_modellen</moduleConfigFileName> </activity> <activity> <runIndependent>true</runIndependent> <moduleInstanceId>PASTAS_TRAVAL_validatie</moduleInstanceId> <moduleConfigFileName>PASTAS_TRAVAL_validatie_Export_tijdreeksen</moduleConfigFileName> <loopLocationSetId>Grondwater_PASTAS</loopLocationSetId> </activity> <activity> <runIndependent>true</runIndependent> <moduleInstanceId>PASTAS_TRAVAL_validatie</moduleInstanceId> <moduleConfigFileName>PASTAS_TRAVAL_validatie_Run_validatie</moduleConfigFileName> </activity> <activity> <runIndependent>true</runIndependent> <moduleInstanceId>PASTAS_TRAVAL_validatie</moduleInstanceId> <moduleConfigFileName>PASTAS_TRAVAL_validatie_Import</moduleConfigFileName> </activity> </workflow> |
Prepare data for model(s)
PASTAS models typically are forced using precipitation and evaporation data and always start at some far point in the past (like since 1990) to get a correct model state for the current time period. In other cases, the model could be forced using groundwater levels from nearby groundwater wells or using river waterlevels. In this section we focus on the precipitation and evaporation.
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?xml version="1.0" encoding="UTF-8"?> <transformationModule version="1.0" xmlns="http://www.wldelft.nl/fews" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.wldelft.nl/fews http://fews.wldelft.nl/schemas/version1.0/transformationModule.xsd"> <!--VARIABELEN--> <!--Neerslag/verdamping--> <variable> <variableId>Neerslag_meting_KNMI_stations_valid</variableId> <timeSeriesSet> <moduleInstanceId>ImportWIWB</moduleInstanceId> <valueType>scalar</valueType> <parameterId>P.meting</parameterId> <qualifierId>gevalideerd</qualifierId> <locationSetId>KNMI-IRIS</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="day" multiplier="1" timeZone="GMT-8"/> <relativeViewPeriod unit="day" start="-30" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>Neerslag_meting_KNMI_stations_onvalid</variableId> <timeSeriesSet> <moduleInstanceId>ImportWIWB</moduleInstanceId> <valueType>scalar</valueType> <parameterId>P.meting</parameterId> <locationSetId>KNMI-IRIS</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="day" multiplier="1" timeZone="GMT-8"/> <relativeViewPeriod unit="day" start="-30" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>Neerslag_meting_KNMI_stations_temp</variableId> <timeSeriesSet> <moduleInstanceId>PASTAS_prep</moduleInstanceId> <valueType>scalar</valueType> <parameterId>P.meting</parameterId> <locationSetId>KNMI-IRIS</locationSetId> <timeSeriesType>temporary</timeSeriesType> <timeStep unit="day" multiplier="1" timeZone="GMT-8"/> <relativeViewPeriod unit="day" start="-30" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>Neerslag_meting_KNMI_stations</variableId> <timeSeriesSet> <moduleInstanceId>PASTAS_prep</moduleInstanceId> <valueType>scalar</valueType> <parameterId>P.meting</parameterId> <locationSetId>KNMI-IRIS</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="day" multiplier="1" timeZone="GMT-8"/> <relativeViewPeriod unit="day" start="-30" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>Neerslag_grondwater_temp_temp</variableId> <timeSeriesSet> <moduleInstanceId>PASTAS_prep</moduleInstanceId> <valueType>scalar</valueType> <parameterId>P.meting</parameterId> <qualifierId>temp</qualifierId> <locationSetId>Grondwater_PASTAS</locationSetId> <timeSeriesType>temporary</timeSeriesType> <timeStep unit="day" multiplier="1" timeZone="GMT-8"/> <relativeViewPeriod unit="day" start="-30" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>Neerslag_grondwater_temp</variableId> <timeSeriesSet> <moduleInstanceId>PASTAS_prep</moduleInstanceId> <valueType>scalar</valueType> <parameterId>P.meting</parameterId> <locationSetId>Grondwater_PASTAS</locationSetId> <timeSeriesType>temporary</timeSeriesType> <timeStep unit="day" multiplier="1" timeZone="GMT-8"/> <relativeViewPeriod unit="day" start="-30" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>Neerslag_grondwater</variableId> <timeSeriesSet> <moduleInstanceId>PASTAS_prep</moduleInstanceId> <valueType>scalar</valueType> <parameterId>P.meting</parameterId> <locationSetId>Grondwater_PASTAS</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="day" multiplier="1" timeZone="GMT-8"/> <relativeViewPeriod unit="day" start="-30" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>Verdamping_meting_KNMI_stations_valid</variableId> <timeSeriesSet> <moduleInstanceId>ImportWIWB</moduleInstanceId> <valueType>scalar</valueType> <parameterId>E.meting</parameterId> <locationSetId>KNMI-EVP</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="day" timeZone="GMT+1"/> <relativeViewPeriod unit="day" start="-30" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>Verdamping_meting_KNMI_stations_temp</variableId> <timeSeriesSet> <moduleInstanceId>PASTAS_prep</moduleInstanceId> <valueType>scalar</valueType> <parameterId>E.meting</parameterId> <locationSetId>KNMI-EVP</locationSetId> <timeSeriesType>temporary</timeSeriesType> <timeStep unit="day" timeZone="GMT+1"/> <relativeViewPeriod unit="day" start="-30" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>Verdamping_meting_KNMI_stations</variableId> <timeSeriesSet> <moduleInstanceId>PASTAS_prep</moduleInstanceId> <valueType>scalar</valueType> <parameterId>E.meting</parameterId> <locationSetId>KNMI-EVP</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="day" timeZone="GMT+1"/> <relativeViewPeriod unit="day" start="-30" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>Verdamping_grondwater_temp_temp</variableId> <timeSeriesSet> <moduleInstanceId>PASTAS_prep</moduleInstanceId> <valueType>scalar</valueType> <parameterId>E.meting</parameterId> <qualifierId>temp</qualifierId> <locationSetId>Grondwater_PASTAS</locationSetId> <timeSeriesType>temporary</timeSeriesType> <timeStep unit="day" timeZone="GMT+1"/> <relativeViewPeriod unit="day" start="-30" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>Verdamping_grondwater_temp</variableId> <timeSeriesSet> <moduleInstanceId>PASTAS_prep</moduleInstanceId> <valueType>scalar</valueType> <parameterId>E.meting</parameterId> <locationSetId>Grondwater_PASTAS</locationSetId> <timeSeriesType>temporary</timeSeriesType> <timeStep unit="day" timeZone="GMT+1"/> <relativeViewPeriod unit="day" start="-30" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> </variable> <variable> <variableId>Verdamping_grondwater</variableId> <timeSeriesSet> <moduleInstanceId>PASTAS_prep</moduleInstanceId> <valueType>scalar</valueType> <parameterId>E.meting</parameterId> <locationSetId>Grondwater_PASTAS</locationSetId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="day" timeZone="GMT+1"/> <relativeViewPeriod unit="day" start="-30" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>add originals</readWriteMode> </timeSeriesSet> </variable> <!--BEWERKINGEN--> <!--Neerslag/verdamping--> <transformation id="Merge valid, onvalid, meteo neerslag gemeten"> <merge> <simple> <inputVariable> <variableId>Neerslag_meting_KNMI_stations_valid</variableId> </inputVariable> <inputVariable> <variableId>Neerslag_meting_KNMI_stations_onvalid</variableId> </inputVariable> <outputVariable> <variableId>Neerslag_meting_KNMI_stations_temp</variableId> </outputVariable> </simple> </merge> </transformation> <transformation id="Neerslag naar grondwaterputten (closestDistance)"> <interpolationSpatial> <closestDistance> <inputVariable> <variableId>Neerslag_meting_KNMI_stations_temp</variableId> </inputVariable> <outputVariable> <variableId>Neerslag_grondwater_temp</variableId> </outputVariable> </closestDistance> </interpolationSpatial> </transformation> <transformation id="Neerslag naar grondwaterputten (IDW)"> <interpolationSpatial> <inverseDistance> <inputVariable> <variableId>Neerslag_meting_KNMI_stations_temp</variableId> </inputVariable> <includeMissingValues>false</includeMissingValues> <searchRadius>1000000000000</searchRadius> <distanceGeoDatum>Rijks Driehoekstelsel</distanceGeoDatum> <inverseDistancePower>2</inverseDistancePower> <numberOfPoints>10</numberOfPoints> <outputVariable> <variableId>Neerslag_grondwater_temp_temp</variableId> </outputVariable> </inverseDistance> </interpolationSpatial> </transformation> <transformation id="Merge neerslag closestDistance en IDW"> <merge> <simple> <inputVariable> <variableId>Neerslag_grondwater_temp</variableId> </inputVariable> <inputVariable> <variableId>Neerslag_grondwater_temp_temp</variableId> </inputVariable> <outputVariable> <variableId>Neerslag_grondwater_temp</variableId> </outputVariable> </simple> </merge> </transformation> <transformation id="Extrapoleer neerslag gemeten (default)"> <interpolationSerial> <default> <inputVariable> <variableId>Neerslag_grondwater_temp</variableId> </inputVariable> <extrapolateDirection>both</extrapolateDirection> <outputVariable> <variableId>Neerslag_grondwater_temp</variableId> </outputVariable> </default> </interpolationSerial> </transformation> <transformation id="Interpoleer neerslag gemeten (default)"> <interpolationSerial> <default> <inputVariable> <variableId>Neerslag_grondwater_temp</variableId> </inputVariable> <outputVariable> <variableId>Neerslag_grondwater</variableId> </outputVariable> </default> </interpolationSerial> </transformation> <transformation id="Verdamping naar grondwaterputten (closestDistance)"> <interpolationSpatial> <closestDistance> <inputVariable> <variableId>Verdamping_meting_KNMI_stations_valid</variableId> </inputVariable> <outputVariable> <variableId>Verdamping_grondwater_temp</variableId> </outputVariable> </closestDistance> </interpolationSpatial> </transformation> <transformation id="Verdamping naar grondwaterputten (IDW)"> <interpolationSpatial> <inverseDistance> <inputVariable> <variableId>Verdamping_meting_KNMI_stations_temp</variableId> </inputVariable> <includeMissingValues>false</includeMissingValues> <searchRadius>1000000000000</searchRadius> <distanceGeoDatum>Rijks Driehoekstelsel</distanceGeoDatum> <inverseDistancePower>2</inverseDistancePower> <numberOfPoints>10</numberOfPoints> <outputVariable> <variableId>Verdamping_grondwater_temp_temp</variableId> </outputVariable> </inverseDistance> </interpolationSpatial> </transformation> <transformation id="Merge verdamping closestDistance en IDW"> <merge> <simple> <inputVariable> <variableId>Verdamping_grondwater_temp</variableId> </inputVariable> <inputVariable> <variableId>Verdamping_grondwater_temp_temp</variableId> </inputVariable> <outputVariable> <variableId>Verdamping_grondwater_temp</variableId> </outputVariable> </simple> </merge> </transformation> <transformation id="Extrapoleer verdamping gemeten (constant)"> <interpolationSerial> <extrapolateConstant> <inputVariable> <variableId>Verdamping_grondwater_temp</variableId> </inputVariable> <extrapolateDirection>both</extrapolateDirection> <outputVariable> <variableId>Verdamping_grondwater_temp</variableId> </outputVariable> </extrapolateConstant> </interpolationSerial> </transformation> <transformation id="Interpoleer verdamping gemeten (linear)"> <interpolationSerial> <linear> <inputVariable> <variableId>Verdamping_grondwater_temp</variableId> </inputVariable> <outputVariable> <variableId>Verdamping_grondwater</variableId> </outputVariable> </linear> </interpolationSerial> </transformation> </transformationModule> |
Run model(s)
Export data to model(s)
See an example below to export the timeseries data to the model(s) using loopLocationSetId / $LOOP_LOCATION_ID$. Notice that the precipitation and evaporation data is set with a RVP using <relativeViewPeriod unit="day" start="-15000" end="0" startOverrulable="false" endOverrulable="true"/> to force FEWS to always export the data from long in the past (since 1990). The element <omitEmptyFiles>true</omitEmptyFiles> is crucial if you expect to have no data on some groundwater well locations or if groundwater well locations are time-dependent in FEWS.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<?xml version="1.0" encoding="UTF-8"?> <generalAdapterRun xmlns="http://www.wldelft.nl/fews" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.wldelft.nl/fews http://fews.wldelft.nl/schemas/version1.0/generalAdapterRun.xsd"> <general> <description>PASTAS TRAVAL validatie</description> <piVersion>1.23</piVersion> <rootDir>$PASTAS_TRAVAL_VALIDATION_MODULE_FOLDER$</rootDir> <workDir>%ROOT_DIR%</workDir> <exportDir>%ROOT_DIR%/from_fews</exportDir> <exportDataSetDir>%ROOT_DIR%</exportDataSetDir> <exportIdMap>IdExportPASTAS</exportIdMap> <importDir>%ROOT_DIR%</importDir> <importIdMap>IdImportPASTAS</importIdMap> <dumpFileDir>%REGION_HOME%/Dumpfiles</dumpFileDir> <dumpDir>%ROOT_DIR%</dumpDir> <diagnosticFile>%ROOT_DIR%/logs/diag.xml</diagnosticFile> <missVal>-9999.0</missVal> <timeZone> <timeZoneName>GMT+1</timeZoneName> </timeZone> <time0Format>yyyy-MM-dd</time0Format> <startDateTimeFormat>yyyy-MM-dd</startDateTimeFormat> <endDateTimeFormat>yyyy-MM-dd</endDateTimeFormat> </general> <activities> <exportActivities> <exportTimeSeriesActivity> <exportFile>Neerslag\$LOOP_LOCATION_ID$.xml</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PASTAS_prep</moduleInstanceId> <valueType>scalar</valueType> <parameterId>P.meting</parameterId> <locationId>$LOOP_LOCATION_ID$</locationId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="day" multiplier="1" timeZone="GMT-8"/> <relativeViewPeriod unit="day" start="-15000" end="0" startOverrulable="false" endOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> <omitMissingValues>true</omitMissingValues> <omitEmptyTimeSeries>true</omitEmptyTimeSeries> <omitEmptyFiles>true</omitEmptyFiles> </exportTimeSeriesActivity> <exportTimeSeriesActivity> <exportFile>Verdamping\$LOOP_LOCATION_ID$.xml</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>PASTAS_prep</moduleInstanceId> <valueType>scalar</valueType> <parameterId>E.meting</parameterId> <locationId>$LOOP_LOCATION_ID$</locationId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="day" timeZone="GMT+1"/> <relativeViewPeriod unit="day" start="-15000" end="0" startOverrulable="false" endOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> <omitMissingValues>true</omitMissingValues> <omitEmptyTimeSeries>true</omitEmptyTimeSeries> <omitEmptyFiles>true</omitEmptyFiles> </exportTimeSeriesActivity> <exportTimeSeriesActivity> <exportFile>Grondwaterstanden\$LOOP_LOCATION_ID$.xml</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>ImportKeller</moduleInstanceId> <valueType>scalar</valueType> <parameterId>Stijghoogte.PASTAS.ongevalideerd</parameterId> <locationId>$LOOP_LOCATION_ID$</locationId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="hour"/> <relativeViewPeriod unit="day" start="-2" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> <omitMissingValues>true</omitMissingValues> <omitEmptyTimeSeries>true</omitEmptyTimeSeries> <omitEmptyFiles>true</omitEmptyFiles> </exportTimeSeriesActivity> <exportTimeSeriesActivity> <exportFile>Referentiehoogte\$LOOP_LOCATION_ID$.xml</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>Bewerk_Grondwater</moduleInstanceId> <valueType>scalar</valueType> <parameterId>Referentie.hoogte</parameterId> <locationId>$LOOP_LOCATION_ID$</locationId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="nonequidistant"/> <relativeViewPeriod unit="day" start="-2" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> <omitMissingValues>true</omitMissingValues> <omitEmptyTimeSeries>true</omitEmptyTimeSeries> <omitEmptyFiles>true</omitEmptyFiles> </exportTimeSeriesActivity> <exportTimeSeriesActivity> <exportFile>Inhangdiepte\$LOOP_LOCATION_ID$.xml</exportFile> <timeSeriesSets> <timeSeriesSet> <moduleInstanceId>Bewerk_Grondwater</moduleInstanceId> <valueType>scalar</valueType> <parameterId>Inhang.diepte</parameterId> <locationId>$LOOP_LOCATION_ID$</locationId> <timeSeriesType>external historical</timeSeriesType> <timeStep unit="nonequidistant"/> <relativeViewPeriod unit="day" start="-2" end="0" startOverrulable="true" endOverrulable="true"/> <readWriteMode>read only</readWriteMode> </timeSeriesSet> </timeSeriesSets> <omitMissingValues>true</omitMissingValues> <omitEmptyTimeSeries>true</omitEmptyTimeSeries> <omitEmptyFiles>true</omitEmptyFiles> </exportTimeSeriesActivity> </exportActivities> </activities> </generalAdapterRun> |
Export location attributes
You can use the exportLocationAttributesCsvActivity in the General Adapter to export location attributes in a csv file to the model(s) (particular useful when using PASTAS for validation).
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<exportLocationAttributesCsvActivity> <exportFile>stijgbuis_parameters.csv</exportFile> <locationSetId>Grondwater_PASTAS</locationSetId> <locationIdColumn columnName="Location"/> <attributeColumn columnName="X" attributeId="X_number"/> <attributeColumn columnName="Y" attributeId="Y_number"/> <attributeColumn columnName="BOVENKANT_BUIS" attributeId="BOVENKANTBUIS"/> <attributeColumn columnName="MAAIVELD" attributeId="MAAIVELD"/> <attributeColumn columnName="ONDERKANT_FILTER" attributeId="HARD_MIN"/> <attributeColumn columnName="BOVENKANT_FILTER" attributeId="HARD_MAX"/> <attributeColumn columnName="HARD_MIN" attributeId="HARD_MIN"/> <attributeColumn columnName="HARD_MAX" attributeId="HARD_MAX"/> </exportLocationAttributesCsvActivity> |
Run model(s)
A possible General Adapter module configuration could look like this to run the model(s) with Python. See attached run_validation.bat
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<?xml version="1.0" encoding="UTF-8"?> <generalAdapterRun xmlns="http://www.wldelft.nl/fews" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.wldelft.nl/fews http://fews.wldelft.nl/schemas/version1.0/generalAdapterRun.xsd"> <general> <description>PASTAS TRAVAL validatie</description> <rootDir>$PASTAS_TRAVAL_VALIDATION_MODULE_FOLDER$</rootDir> <workDir>%ROOT_DIR%</workDir> <exportDir>%ROOT_DIR%</exportDir> <exportDataSetDir>%ROOT_DIR%</exportDataSetDir> <exportIdMap>IdExportPASTAS</exportIdMap> <importDir>%ROOT_DIR%</importDir> <importIdMap>IdImportPASTAS</importIdMap> <dumpFileDir>%REGION_HOME%/Dumpfiles</dumpFileDir> <dumpDir>%ROOT_DIR%</dumpDir> <diagnosticFile>%ROOT_DIR%/logs/diag.xml</diagnosticFile> <missVal>NaN</missVal> <timeZone> <timeZoneName>CET</timeZoneName> </timeZone> <time0Format>yyyy-MM-dd</time0Format> <startDateTimeFormat>yyyy-MM-dd</startDateTimeFormat> <endDateTimeFormat>yyyy-MM-dd</endDateTimeFormat> </general> <activities> <executeActivities> <executeActivity> <command> <executable>%ROOT_DIR%/bin/run_validation.bat</executable> </command> <arguments> <argument>$PYTHON_EXE$</argument> </arguments> <timeOut>12800000</timeOut> </executeActivity> </executeActivities> <shutDownActivities> <!--Purge activities to free up disk space because exported input PI xml files take up a lot of storage space--> <purgeActivity> <filter>%ROOT_DIR%/data/pastas_db/models/*.*</filter> </purgeActivity> <purgeActivity> <filter>%ROOT_DIR%/from_fews/*.*</filter> </purgeActivity> <purgeActivity> <filter>%ROOT_DIR%/from_fews/Grondwaterstanden/*.*</filter> </purgeActivity> <purgeActivity> <filter>%ROOT_DIR%/from_fews/Referentiehoogte/*.*</filter> </purgeActivity> <purgeActivity> <filter>%ROOT_DIR%/from_fews/Inhangdiepte/*.*</filter> </purgeActivity> <purgeActivity> <filter>%ROOT_DIR%/from_fews/Neerslag/*.*</filter> </purgeActivity> <purgeActivity> <filter>%ROOT_DIR%/from_fews/Verdamping/*.*</filter> </purgeActivity> </shutDownActivities> </activities> </generalAdapterRun> |
Important PASTAS Python script code blocks
To import FEWS PI xml data into the PASTAS model(s), use the following code block as inspiration. Notice that the data is imported using the 'hydropandas' package and added to a pastastore object.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
import os import hydropandas as hpd import pastastore as pst pstore2 = pst.PastaStore("online", pst.DictConnector("online")) oc_rawdir = "Grondwaterstanden" oc_raw = hpd.ObsCollection.from_fews_xml( os.path.join(settings["inputdir"], oc_rawdir), ObsClass=hpd.GroundwaterObs, name="head", to_mnap=False, remove_nan=False, verbose=False ) oc_raw.to_pastastore(pstore=pstore2, obs_column="value", kind="oseries", verbose=False, overwrite=True) |
Import model results
The PASTAS model results are typically written to csv files per groundwater well location. The location id is in the filename typically.
...