Skip to main content

Generate a 3Di simulation grid from a model schematisation.

Project description

threedigrid-builder

Github Actions status PyPI

Generate a 3Di simulation grid from a model schematisation.

Usage

This library converts a model schematisation to a 3Di simulation grid. This can be done using a single function that reads data from an SQLite and TIFF and then outputs the generated grid into a Geopackage or HDF5 file:

>>> from threedigrid_builder import make_gridadmin
>>> sqlite_path = "/path/to/model.sqlite"
>>> dem_path = "/path/to/dem.tiff"
>>> out_path = "grid.gpkg"  # or "something.h5" for HDF5 output
>>> make_gridadmin(sqlite_path, dem_path, out_path)

Alternatively, the generated grid can be output in-memory:

>>> make_gridadmin(sqlite_path, dem_path)
{'nodes': {'id': array([   1,    2,    3, ..., 7903, 7904, 7905], dtype=int32), ...}

Installation

This package is distributed as binary only, because its (Fortran) source code is proprietary. The currently supported platforms are Windows, Linux, and OSX, all 64 bit versions only.

First install sqlite and spatialite libraries, e.g. on Ubuntu:

$ sudo apt-get install sqlite3 libsqlite3-mod-spatialite

For raster input, there are two options: GDAL and rasterio. If you do not have GDAL (and its Python bindings) present, be sure to include the [rasters] extra dependency while installing threedigrid-builder. If you have GDAL present, this can be omitted.

Install the threedigrid-builder:

$ pip install threedigrid-builder[rasters]

For output into a file for the 3Di calculationcore, enable gridadmin output:

$ pip install threedigrid-builder[rasters,gridadmin]

For output into Geopackage for display in e.g. QGis, enable gpkg output:

$ pip install threedigrid-builder[rasters,gpkg]

Changelog of threedigrid-builder

0.8.3 (2021-12-09)

  • Only process cross section definitions that are actually used.

  • Removed cross1 & cross2 in the in-memory or geopackage output and added cross_id1 and cross_id2.

  • Fixed bug where writing a single line geometry or geometries of equal size would result in an incorrect cast to a numpy object dtype.

  • Fixed bug with zero-d administration cci (index needs to be 1-based), removed cid field.

0.8.2 (2021-12-05)

  • Fixed the Linux wheel distribution. These are now built with manylinux2014 instead of manylinux2010.

0.8.1 (2021-12-05)

  • Added support for zero-d administration including surfaces and impervious surfaces.

  • Dropped support for Python 3.6.

  • Fixed __version__ attribute and “threedigrid_builder_version” HDF5 attribute.

  • Set the dpumax of a 1D line (channel, pipe, culvert, weir, orifice) always to the largest of its two invert levels. Previously, it was set to the largest of the two bottom_levels of the two adjacent nodes, which gave wrong results for lines attached to manholes.

  • Disable extrapolation for channel node/line attributes that are derived from crosssection locations.

  • Disable the SchematisationError when a Manhole has a bottom_level above a level of a connected object. Instead, emit a warning through the logger.

0.8.0 (2021-11-30)

  • Added has_max_infiltration_capacity flag.

  • Added breaches and levees.

  • Implement GDAL as an alternative to RasterIO.

  • Check the raster EPSG code and use it if the model does not have one.

  • Removed ‘model_area_path’ feature from application.

  • Added an in-memory output interface. Supply out_path=None to instead of writing the grid to a file, receive the grid as dictionaries of 1D ndarrays.

  • Removed the “sqlalchemy<1.4” constraint, this library is compatible with SQLAlchemy 1.4

0.7.0 (2021-11-25)

  • Raise SchematisationError on invalid settings.

  • Removed SchematisationError on tabulated rectangle cross section definition with zero first “width” value.

  • Add calculation_type for nodes to be Dem averaged.

0.6.1 (2021-11-10)

  • Fixed l1dtot (exclude 1D boundaries).

0.6.0 (2021-11-09)

  • Raise SchematisationError on embedding linear objects that begin/end outside of 2D domain. Added tests for edge cases.

  • Fixed exchange_level (dpumax) for 1D2D lines attached to non-manhole connection nodes. The exchange_level is now derived from the bank_levels of attached channels.

  • Add discharge_coefficients for structures.

  • Swap the order in lines.line for 1D2D lines. The order is now (2D, 1D).

  • Fixed kcu for lines attached to 1D boundary conditions.

  • Copy crest_level from v2_levee if a v2_connected_point refers to one.

0.5.2 (2021-11-02)

  • Consistently write NaN (and not -9999.0) in gridadmin float datasets.

  • Fix tests with GEOS 3.10.0

  • Make ‘meta’ group complete.

0.5.1 (2021-11-01)

  • Add storage_area to calculation nodes.

  • Added ds1d_half to nodes.

  • Added has_embedded to attrs.

0.5.0 (2021-10-21)

  • Fixed nodes.is_manhole in the gridadmin output.

  • Handle user-supplied 1D-2D lines (connected point / calculation point).

  • Write initial_waterlevel for 1D nodes and add ‘has_initial_waterlevels’ to meta.

0.4.0 (2021-09-23)

  • Added 1D boundary conditions.

  • Added 2D boundary conditions.

  • Enable compression in HDF5 output.

  • Fixed 2D lines that connect a larger to a smaller cell in south east direction.

0.3.1 (2021-08-16)

  • Handle embedded connection nodes. These are removed from the grid and written to a new dataset “nodes_embedded”.

  • Fixed bug with cross sections tables being None in Grid instance

  • Handle embedded channels, pipes and culverts. Embedded objects result in embedded nodes and and lines with kcu LINE_1D_EMBEDDED between between 2D cells.

  • Fixed a bug with lines that connect nodes to themselves in quadtree generation.

  • Fixed a bug with wrong usage of lines.ds1d in bottom level and cross section weights computation. The added attribute lines.s1d is now used, and for clarity nodes.ds1d was renamed to nodes.s1d.

  • Added invert_level_start_point and invert_level_end_point attributes to lines.

  • Fixed coordinate order in lines.line_geometries field in gridadmin.h5.

0.3.0 (2021-07-28)

  • Read and convert cross section definitions.

  • Solve gridadmin off-by-one errors for pumps.

  • Add ‘dmax’ to nodes output.

  • Changed external API function name to “make_gridadmin”.

0.2.1 (2021-07-20)

  • Fixed issue when reprojecting 0 grid refinements with pyproj 2.*

  • Fixed issue when writing 0 pumps with h5py 2.*

  • Fixed missing transpose when writing pumps.coordinates to HDF5.

  • Added obstacles.

0.2.0 (2021-07-15)

  • Added threedigrid_builder.grid.geo_utils with segmentize and line_substring functions. These are used to compute the Lines.line_geometries for channel lines.

  • Fixed a bug in the refinement areas code (Fortran) on Ubuntu 20.04.

  • Added the Pipes model that is able to compute Nodes & Lines from Pipes. Pipes are also included in the calculation_type and bottom_level computations.

  • Added 1D-2D lines for connection nodes, manholes, and channels.

  • Added culverts, orifices, and weirs.

  • Added pumps (pumpstations).

  • Settings and metadata are read from the SQLite. Some metadata (like model_slug) can also be provided via the main (make_grid) function. The metadata is written to the root ‘attrs’ of the output gridadmin.h5. The settings are written into datasets inside newly addres groups “grid_settings” and “tables_settings”.

  • Fixes for models with no channels.

  • Add an optional progress callback.

0.1.2 (2021-04-28)

  • Added public API with 1 function: threedigrid_builder.make_grid.

0.1.1 (2021-04-20)

  • Fixed automatic PyPI upload.

0.1.0 (2021-04-20)

  • Partially ported functionality from inpy (generate 3di files, makegrid): 1D channel grid (including calculation_type and bottom_level), and 2D open water grid.

  • Added gridadmin and geopackage output.

  • Breaking change: the interpolation between cross section locations (channels) now also extrapolates for lines and nodes that are not in between two connection nodes. This happens only if the channel has at least 2 cross section locations. When extrapolatic, the line.cross_weight is less than 0 or greater than 1.

  • Breaking change: missing or empty values in float datasets in the output gridadmin are now denoted by NaN (not-a-number) instead of -9999.0.

  • Breaking change: integers in the output gridadmin are now always 32-bit (instead of sometimes 32-bit and sometimes 64-bit).

Project details


Release history Release notifications | RSS feed

This version

0.8.3

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

threedigrid_builder-0.8.3-cp310-cp310-win_amd64.whl (887.4 kB view details)

Uploaded CPython 3.10 Windows x86-64

threedigrid_builder-0.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

threedigrid_builder-0.8.3-cp310-cp310-macosx_10_9_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

threedigrid_builder-0.8.3-cp39-cp39-win_amd64.whl (885.0 kB view details)

Uploaded CPython 3.9 Windows x86-64

threedigrid_builder-0.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

threedigrid_builder-0.8.3-cp39-cp39-macosx_10_9_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

threedigrid_builder-0.8.3-cp38-cp38-win_amd64.whl (904.0 kB view details)

Uploaded CPython 3.8 Windows x86-64

threedigrid_builder-0.8.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

threedigrid_builder-0.8.3-cp38-cp38-macosx_10_9_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

threedigrid_builder-0.8.3-cp37-cp37m-win_amd64.whl (902.4 kB view details)

Uploaded CPython 3.7m Windows x86-64

threedigrid_builder-0.8.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

threedigrid_builder-0.8.3-cp37-cp37m-macosx_10_9_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

Details for the file threedigrid_builder-0.8.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: threedigrid_builder-0.8.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 887.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for threedigrid_builder-0.8.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2030a634ff2ed6fac06957587a6531a7e40aecd20f245ac53174a7e8c8ef255e
MD5 ba4cddf303e14765935985f80aba31ae
BLAKE2b-256 450a6d6f9c28bb81e91c80262ed62df1308a880cdf990edc05f4acf505f0de26

See more details on using hashes here.

File details

Details for the file threedigrid_builder-0.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for threedigrid_builder-0.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b54fd10da7f41afc8c0a575df20bf1f7b5314d998447cf591e0ce7eabd018d25
MD5 44e178dce7353909e401fef85cbd86d7
BLAKE2b-256 c7ae6c8219b104e84808130e2115b38b074a2cd7e0e38e98edf17160f742a666

See more details on using hashes here.

File details

Details for the file threedigrid_builder-0.8.3-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: threedigrid_builder-0.8.3-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.10, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for threedigrid_builder-0.8.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3e8d888f0b9dbce94f59e73da2f728433d4d82c34f54c8d5edddf5c8fa8ec417
MD5 0c95e62ee1fb10312ff6491b82010b29
BLAKE2b-256 341e53bc95c448f3d53d7d630b147ea3dfe8ed6ec492fca637231bccc5d59b6e

See more details on using hashes here.

File details

Details for the file threedigrid_builder-0.8.3-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: threedigrid_builder-0.8.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 885.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for threedigrid_builder-0.8.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c1522e5b811687fa2dfdb486375d31faff94ca115e66aaff66eb761eaa852392
MD5 f5370b0c7159f94c58875cec40b6bcb9
BLAKE2b-256 690ab5ba1677f028fc598387b4f5476a996f4766c6ddab49b4031eea3b745be1

See more details on using hashes here.

File details

Details for the file threedigrid_builder-0.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for threedigrid_builder-0.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7b30cf42cd4661b022500cf7b4b8f7af537561ecc5a6e6f63f4d4e022c708743
MD5 c24fdedb8975defbd5ea27e89dee587f
BLAKE2b-256 e7bc1214fde2f17329812faa57fed23609f71a01d2d578f457923f608f98a9c7

See more details on using hashes here.

File details

Details for the file threedigrid_builder-0.8.3-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: threedigrid_builder-0.8.3-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for threedigrid_builder-0.8.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c5bc51c37f3069aa518a79ac2c2b901ed9b921989ac1ac667ca5bafb6effd004
MD5 a46eb481393541c938d0b1ab69124e48
BLAKE2b-256 b837770c7810974dfe7f09995dc9761a4e490327f9c2f9f2ad8cd562b207c9c4

See more details on using hashes here.

File details

Details for the file threedigrid_builder-0.8.3-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: threedigrid_builder-0.8.3-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 904.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for threedigrid_builder-0.8.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 ff260cac2dcb8d5754bfe132952f36a8ecbaddacc6365821515bbca2349f3211
MD5 e5f0e33e48d495df3c9cda75e7e7fb77
BLAKE2b-256 caf7bac777b4cda555e46baa685da5c103984afef0be1e7d5a4e4d49223a7ea2

See more details on using hashes here.

File details

Details for the file threedigrid_builder-0.8.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for threedigrid_builder-0.8.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f7d18de702591820d515dfe8d93dac179ee0dcc32a8b26fe394b5d0be2132ae8
MD5 984053da7131b49926e2fbad22c2ad14
BLAKE2b-256 af3576f7d874f5e55386142f3cc0dffa7f9d03e53e5cc7d5b54e2514d393bfc6

See more details on using hashes here.

File details

Details for the file threedigrid_builder-0.8.3-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: threedigrid_builder-0.8.3-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for threedigrid_builder-0.8.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a3bf1515498e61e55aa1047bcbdd62d2e3a51c24d56413d5a5178a4545de174d
MD5 997ee82009dc94ccf003b39caee07b26
BLAKE2b-256 1589e647edd9c79b087922fd0b6405cfe1f3cf4a2285f898919d87847338eb18

See more details on using hashes here.

File details

Details for the file threedigrid_builder-0.8.3-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: threedigrid_builder-0.8.3-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 902.4 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for threedigrid_builder-0.8.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 38b2fc1fec65801c7b4605ddec88747671e013da85981401c9dfcfd7fab3d86c
MD5 a79020741ef83d292449a9283ed56b7b
BLAKE2b-256 39d7c2a4180f4c53b67eb1db574473798aea2237d78ab50a9bd66fb6f999b263

See more details on using hashes here.

File details

Details for the file threedigrid_builder-0.8.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for threedigrid_builder-0.8.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b22947aabea2d0be655399b7672b44e93f2ec90bc473496b98ffd0e8cb94978b
MD5 4c880f8f22fe5210c34b8dc3d0372aa8
BLAKE2b-256 215a546e20effb347d296410cba741a4bd9c87e05861c0cfac5c3c486704374b

See more details on using hashes here.

File details

Details for the file threedigrid_builder-0.8.3-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: threedigrid_builder-0.8.3-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for threedigrid_builder-0.8.3-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4c34e3ab7231a837ecbd72d4df0eba3b0aef2b812128fa49e1acd51a3466c4cd
MD5 17a42617fcb58abdab6ab754dcd89c54
BLAKE2b-256 203d7dc5bfd16396909f10e283b4aa0602b0ffa72acebb333a0760ab104cbf86

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page