Skip to content

urskaufmann/qgepqwat2ili

 
 

Repository files navigation

QGEP2ili / QWAT2ili

This is the toolkit to import/export between QGEP/QWAT and their counterpart SIA405 interlis model exchange files.

It can be used as a command line tool or integrated in QGIS plugins.

Note that this currently only supports up to date QGEP and QWAT (1.5.6/1.3.6 respectively at the time of writing).

Command line tool

Installation

The tool requires python (3.6 or newer) and java to be available. Then, it can be installed like any other python library:

pip install --upgrade qgepqwat2ili

Import/export QGEP

Import example

python -m qgepqwat2ili qgep import data/test_without_abwasserbauwerkref.xtf

Export example

python -m qgepqwat2ili qgep export desktop/my_export.xtf --selection "ch13p7mzRE001221,ch13p7mzWN003445,ch13p7mzWN008122"

Full usage

usage: python -m qgepqwat2ili qgep [-h] [--selection SELECTION] [--recreate_schema] [--skip_validation] [--pgservice PGSERVICE] [--log] {import,export} path

ili2QGEP entrypoint

positional arguments:
  {import,export}
  path                  path to the input/output .xtf file

optional arguments:
  -h, --help            show this help message and exit
  --selection SELECTION
                        if provided, limits the export to networkelements that are provided in the selection (comma separated list of ids)
                        (default: None)
  --recreate_schema     drops schema and reruns ili2pg importschema (default: False)
  --skip_validation     skips running ilivalidator on input/output xtf (required to import invalid files, invalid outputs are still generated)
                        (default: False)
  --pgservice PGSERVICE
                        name of the pgservice to use to connect to the database (default: pg_qgep)
  --log                 saves a log file next to the input/output file (default: False)

Import/export QWAT

Import example

# QWAT import not implemented yet

Export example

python -m qgepqwat2ili qwat export desktop/my_export.xtf

Full usage

usage: python -m qgepqwat2ili qwat [-h] [--recreate_schema] [--skip_validation] [--pgservice PGSERVICE] [--log] [--include_hydraulics] {import,export} path

ili2QWAT entrypoint

positional arguments:
  {import,export}
  path                  path to the input/output .xtf file

optional arguments:
  -h, --help            show this help message and exit
  --recreate_schema     drops schema and reruns ili2pg importschema (default: False)
  --skip_validation     skips running ilivalidator on input/output xtf (required to import invalid files, invalid outputs are still generated)
                        (default: False)
  --include_hydraulics  if provided, exports will include hydraulischer_strang and hydraulischer_node classes (these are currently likely to make the export invalid due to issues with the current ili model) (default: False)
  --pgservice PGSERVICE
                        name of the pgservice to use to connect to the database (default: qwat)
  --log                 saves a log file next to the input/output file (default: False)

Logging

Logging output to a file can be achieved by adding --log to your command. The file will be saved next to the input/output xtf.

python -m qgepqwat2ili qgep import data/test_without_abwasserbauwerkref.xtf --log

Please include this when reporting issues.

The above logs don't show full errors for ili2db and ilivalidator related outputs. Thus, you may want to look at the native ili2db and ilivalidator related logs, named qgepqwat2ili/yyyymmddhhmmss.STEP.log in your temporary directory (/tmp on linux or C:\Users\You\AppData\Local\Temp\ on Windows).

QGIS integration

This will be integrated into the official QGEP and QWAT plugin installable through the QGIS plugin manager.

Dev

Import/export scripts templates can be generated using python -m qgepqwat2ili tpl. This uses the mapping defined in datamodels/mapping.py to auto-generate import script templates, that can then be manually merged into the existing scripts.

Tests are run with

python -m unittest qgepqwat2ili.tests

Style is done with pre-commit

pip install pre-commit
pre-commit install

Releases

Releases to PyPi are made automatically via github workflows whenever a new tag matching v* is pushed.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 46.7%
  • Smarty 36.6%
  • HTML 16.7%