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.14.0 (2022-01-04)

  • Add nodm and nodn for 2D boundary nodes.

0.13.0 (2021-12-28)

  • Enable groundwater and write dimp to nodes.

0.12.0 (2021-12-27)

  • Add drain_level of manholes to gridadmin.

  • Bugfix: Set culvert calculation_type to isolated when not provided.

  • Added display name to culverts, weirs, pipes, pumps, channels

0.11.0 (2021-12-22)

  • Accept dist_calc_points <= 0; the effect is that there are no interpolated nodes.

  • Ignore grid refinements with NULLs in their type or geometry fields.

  • Ignore (impervious) surfaces, grid refinements, and dem averages areas with invalid geometries (mostly, polygons with self-intersections).

  • Set ds1d of 1d2d lines to 2d cell_width.

0.10.0 (2021-12-21)

  • Bugfix: Added support for refinement geometries within smallest Grid cell.

  • Reverse the order of coordinates in channel and culvert geometries if necessary.

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

Uploaded CPython 3.10 Windows x86-64

threedigrid_builder-0.14.0-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.14.0-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.14.0-cp39-cp39-win_amd64.whl (870.7 kB view details)

Uploaded CPython 3.9 Windows x86-64

threedigrid_builder-0.14.0-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.14.0-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.14.0-cp38-cp38-win_amd64.whl (889.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

threedigrid_builder-0.14.0-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.14.0-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.14.0-cp37-cp37m-win_amd64.whl (888.2 kB view details)

Uploaded CPython 3.7m Windows x86-64

threedigrid_builder-0.14.0-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.14.0-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.14.0-cp310-cp310-win_amd64.whl.

File metadata

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

File hashes

Hashes for threedigrid_builder-0.14.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 61a10a169c474fa1693f50910520b90d4a13a459e914ff42fec834ff385dbc98
MD5 3c3b0933a85f5b3fba2a7faec0de369b
BLAKE2b-256 02cab43446425c46b7887509e54faeea689bde92fb6e30f04322fea37233a7cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for threedigrid_builder-0.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 948cce390033c9b1ec92a5834bf498f1a7a3bc2c0833b9a2938284058dfc9601
MD5 45acad2a580cc6ecd3d16b6aff0a32b6
BLAKE2b-256 f7712a7e963e4fd545e73240bea737ea0ebd14791a097cc8acb0205f212bd7a1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: threedigrid_builder-0.14.0-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.10.0 pkginfo/1.8.2 requests/2.27.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for threedigrid_builder-0.14.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 92ec30bc354e403119106f10399afa4b6483f605c838ea1cf5579f6c03cace5d
MD5 32c82bd42250bebea949b3b186c4a8d6
BLAKE2b-256 c33d39f8998b3988ee89a878e6437602426fb9006b69fb3447a05386bdadc8fb

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for threedigrid_builder-0.14.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 3952cfa3e90627da42ef318cbdce31f9cc131b33e4b3baf40407c31e7b7cb0d9
MD5 8f38053f3da6cfc416b608f6867fa776
BLAKE2b-256 a314780bb508e0b393401606c6ce41b3e253f69950c05d1e25aca8113aa71eda

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for threedigrid_builder-0.14.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6a1c6bb3bdcbe5b6a91d01e195b9603469afb7823d46be487d1ea0adbe63d098
MD5 c9cfc9712ed244f207786e5127109878
BLAKE2b-256 1e64c8b2df56fc182d58b2d773ca663afec453337b7841dc7826b6da53f85267

See more details on using hashes here.

File details

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

File metadata

  • Download URL: threedigrid_builder-0.14.0-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.10.0 pkginfo/1.8.2 requests/2.27.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for threedigrid_builder-0.14.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8fd3677636d3af8957876ff37bc4e238e507d957f0dbf072c8bf5238e7248b36
MD5 5fa988f1198fa1527c1f66e1d7d82469
BLAKE2b-256 7a643fe569010d39c3f9bc99bdafea73e5a24f57c87a42b9dc98b9d51024f08e

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for threedigrid_builder-0.14.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 babb144fbffff9ac23d0c9370395645ac04e8c6e4d06f1ce5034dad5d65a1f9b
MD5 5bd4c2f368bae4e694e3fa4e92f00b50
BLAKE2b-256 c6a74a1493a5b2c9028f06ef35e43ccf74b8dc7b14901c086eebc8dd3e1357de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for threedigrid_builder-0.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 43121006f7cc76bfe82598a0a4d225438a1187af9a46197200fe500dcb53136a
MD5 4971070bc43e87b513ef318e2e26a9cf
BLAKE2b-256 5e7a574338f40f6a6bf7d0bfcaed189a3ab75ad5cb0fbdd6e413e2e903429668

See more details on using hashes here.

File details

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

File metadata

  • Download URL: threedigrid_builder-0.14.0-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.10.0 pkginfo/1.8.2 requests/2.27.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for threedigrid_builder-0.14.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 80d5d594f6cf1447c20c1ef12e97d2bebe7e9d3844efb98d082fb4058b39bde8
MD5 d290dcbbc0d6ec3e07e359f9d1c8f3e7
BLAKE2b-256 b687a6252e2ede5110f09bd92ea045383db53eb1e0b1cfb7c2ff987333ce94f0

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for threedigrid_builder-0.14.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 14207aa41b89080bd9170147156d9ac1b71cc40aa592820a9be51a1996ac438d
MD5 b6bb909a818ecbfc5705e3a774af96d8
BLAKE2b-256 d514e0cdeceede8d6d35aebbb433d29ff6f6992ffe7a345b1ac84dd5d5e2995a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for threedigrid_builder-0.14.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0e1b81f02206390db1ae00e5515fa0e2d551e4c863d15baf10ad5fb964b16791
MD5 dc37b4065add81a7f9c72484ab18e737
BLAKE2b-256 6216ea09d596956926ae23a163116697c6f74cf0701cb7ace670e88108d9c0be

See more details on using hashes here.

File details

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

File metadata

  • Download URL: threedigrid_builder-0.14.0-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.10.0 pkginfo/1.8.2 requests/2.27.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for threedigrid_builder-0.14.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7d47a0a4a0bbf1c163c5c3aae9495d25f070b9e0d46a1b22acc67f1946adadb3
MD5 d33056d12b2974a8152191cec5212f28
BLAKE2b-256 41458555db9d4fc535bb2bbc7a03dec57201ce060b9a0b8970e75f2de366f8b1

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