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.9.2 (2021-12-17)

  • Temporarily disable groundwater.

  • Bugfix: Edge case with connected points.

0.9.1 (2021-12-16)

  • Bugfix: use DEM epsg_code for 2D models.

  • Bugfix: Small fix for lgrtot.

  • Bugfix: Small fix adding groundwater cells.

  • Bugfix: Fix pump.line remapping in case of embedded nodes.

  • Bugfix: Remap surface_map.cci on grid.sort().

  • Bugfix: also need to evaluate embedded nodes for connection node mapping for zero-d surface maps.

  • Added pixel_width to groundwater nodes.

0.9.0 (2021-12-15)

  • Add padding to area_mask for creating quadtree.

  • Added groundwater 2D nodes, 2D vertical lines, and 2D groundwater lines.

  • Bugfix: cross section tabulate used wrong width/height.

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

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.9.2-cp310-cp310-win_amd64.whl (889.9 kB view details)

Uploaded CPython 3.10 Windows x86-64

threedigrid_builder-0.9.2-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.9.2-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.9.2-cp39-cp39-win_amd64.whl (887.6 kB view details)

Uploaded CPython 3.9 Windows x86-64

threedigrid_builder-0.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

threedigrid_builder-0.9.2-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.9.2-cp38-cp38-win_amd64.whl (906.6 kB view details)

Uploaded CPython 3.8 Windows x86-64

threedigrid_builder-0.9.2-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.9.2-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.9.2-cp37-cp37m-win_amd64.whl (904.9 kB view details)

Uploaded CPython 3.7m Windows x86-64

threedigrid_builder-0.9.2-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.9.2-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.9.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: threedigrid_builder-0.9.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 889.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 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.9.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ed780a465aaf35d8928829817756c936057dadb512135dbb0a5fa7c775896923
MD5 6b38d88777a4e4a23ec77b74ae3a5a74
BLAKE2b-256 6ace69d7abd50c9e43fcad9cfa3bcb4a419c4d6953d756fdabcbee341a28da83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for threedigrid_builder-0.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b73efe2d06def4ab19f94d373c700c55f463632141e0c2cdbce49d86ff050e63
MD5 33d7a79aeb14daf4338c5b8349ffcb20
BLAKE2b-256 effefaf1c9a80de04abd0314b94413dcf11dd68c4c73aca43df374c38dddec1b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: threedigrid_builder-0.9.2-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.9.0 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.9.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c6896ad2bebe51dc9b2d7d624198a688d484a1635071d41af80ffed4977e2185
MD5 8f08f9e51112f3391542d8593a05ea15
BLAKE2b-256 273b2705223addd7799d0caa22422430e0e679b560b2a332850a160220846721

See more details on using hashes here.

File details

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

File metadata

  • Download URL: threedigrid_builder-0.9.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 887.6 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 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.9.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f50bffb9d82f674fb212d5fbb391aef9faa3d9bbd569a59f6afd8b1f5c45ac1c
MD5 b118f158d91d2d466cafa50880d6b953
BLAKE2b-256 38c47a1c7088d13fcc81dde9e9db1237b83daf7d6bc55a1c5a928a1275c244ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for threedigrid_builder-0.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 354c27afea5077e68fe0f6e24fe53b4b2c5c72d2ecaaf93c96a343c4b60a17c0
MD5 e9103080a9f81be74f0e14502f3c1096
BLAKE2b-256 81d15c7993d5dc8dbc977d6e01848e896f50208d7677a1f377267b2586eed487

See more details on using hashes here.

File details

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

File metadata

  • Download URL: threedigrid_builder-0.9.2-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.9.0 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.9.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b758a87b9c2a40f0eb7330e37869427e343768206cef0cf203479ac94f372c11
MD5 5ea27f7813265768d8b5b7e01cec489e
BLAKE2b-256 ecc42ace81c19a586a93d9a673382f2fa4dd3ccc2553e7bf53595b620fcebb77

See more details on using hashes here.

File details

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

File metadata

  • Download URL: threedigrid_builder-0.9.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 906.6 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 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.9.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 0f18c2b9a079d70c1ca57670773b95a91b3a8ad1583b9991d5e6333b7335fe27
MD5 bfc2bc5db0f18c242781121766bee058
BLAKE2b-256 e865b65c479afac6f09fc383bbe81689befade5eb77dfeccc847ac1d792b6a19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for threedigrid_builder-0.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3d9c5a48ee9142c403a687f49e0c204d3c3967a464356d7d554222e5b611f49d
MD5 8667ee00283c43ef7cf460839c3ab52f
BLAKE2b-256 1c6f6b01ca42e37388b7795165d06c883d9023f966a876b5c250ae47d6c2166a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: threedigrid_builder-0.9.2-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.9.0 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.9.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ed54efd85d41d02914eebe3a83509351caaec80de3cd81a9cd1507c1f1cf75a2
MD5 646485dd8d41d9f683002da831c424a8
BLAKE2b-256 a284886fc7bcb2e3073f38eea34fed9ee4bd678edddc20405acbe49d56cdd60b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: threedigrid_builder-0.9.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 904.9 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 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.9.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 9a0772e0c61b6755956db077fac77e202a539b90fdb3182c5b0cac1b6473ac4e
MD5 5b51d348c2fed4a476a927ae2815a480
BLAKE2b-256 0d4cc26f67388d08965bebfa62faf761d4b432b74042d15f17aa6759f3a78643

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for threedigrid_builder-0.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 39545aa7ba1095ab18f274363807035f679d92bd27b98974c6e1346c62d15768
MD5 33d253e8aa44118bd9625682b81cae56
BLAKE2b-256 b43316791b4e4d834abbfe29ae5d8a382f504645bb9deef1d3c26e74f7a38830

See more details on using hashes here.

File details

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

File metadata

  • Download URL: threedigrid_builder-0.9.2-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.9.0 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.9.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 534cda08f151db922825e52a3543171b7626dfe8aab989b75fbb3f8681cc2855
MD5 372b425d445caed835f92f3f3ec13fbb
BLAKE2b-256 8edd2f38ca6364758c2b0c65dc75d79a7e65bec637de60906ab34a38be195ddc

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