Giter VIP home page Giter VIP logo

changliao1025 / pyflowline Goto Github PK

View Code? Open in Web Editor NEW
17.0 2.0 3.0 61.54 MB

A mesh independent river network generator for hydrologic models

Home Page: https://pyflowline.readthedocs.io/

License: BSD 3-Clause "New" or "Revised" License

Python 42.70% Jupyter Notebook 55.16% Dockerfile 0.01% Makefile 0.19% Cython 1.26% TeX 0.67% Batchfile 0.01% Shell 0.01%
hydrology gis river graph earth-system-model

pyflowline's Introduction

PyFlowline

DOI DOI Downloads

PyFlowline: a mesh-independent river network generator for hydrologic models.

Quickstart

Please refer to the quickstart documentation for details on how to get started using the PyFlowline package.

PyFlowline is mesh independent, meaning you can apply it to both structured

  1. traditional rectangle projected mesh
  2. latitude-longitude
  3. hexagon
  4. dggs (dggrid)

and unstructured mesh systems

  1. Model for Prediction Across Scales mesh (MPAS)
  2. Triangulated Irregular Network (TIN) mesh

This package generates the mesh cell-based conceptual river networks using the following steps:

  1. Flowline simplification: PyFlowline checks the vector dataset and corrects undesired flowlines, such as braided rivers.
  2. Mesh generation: PyFlowline generates structured meshes (e.g., rectangle, hexagon) or imports user-provided unstructured meshes into the PyFlowline-compatible GEOJSON format.
  3. Topological relationship reconstruction: PyFlowline reconstructs the topological relationship using the mesh and flowline intersections.

Dependency

PyFlowline depends on the following packages

  1. numpy
  2. gdal
  3. netCDF4

PyFlowline also has three optional dependency packages

  1. cython for performance
  2. matplotlib for visualization
  3. cartopy for visulization
  4. simplekml for Google Earth KML support

Installation

Please refer to the official documentation for details on how to install the PyFlowline package.

Application

We provide several examples in the examples folder to demonstrate the model capability. We also recommend starting with the notebooks/mpas_example.ipynb notebook, after following the Quickstart and Installation instructions.

Acknowledgment

This work was supported by the Earth System Model Development program areas of the U.S. Department of Energy, Office of Science, Office of Biological and Environmental Research as part of the multi-program, collaborative Integrated Coastal Modeling (ICoM) project and the Interdisciplinary Research for Arctic Coastal Environments (InteRFACE) project.

This research was supported as part of the Next Generation Ecosystem Experiments-Tropics, funded by the U.S. Department of Energy, Office of Science, Office of Biological and Environmental Research at Pacific Northwest National Laboratory. The study was also partly supported by U.S. Department of Energy Office of Science Biological and Environmental Research through the Earth and Environmental System Modeling program as part of the Energy Exascale Earth System Model (E3SM) project.

This research was supported by the Next Generation Ecosystem Experiments-Tropics project, funded by the U.S. Department of Energy, Office of Science, Office of Biological and Environmental Research at Pacific Northwest National Laboratory.

License

BSD 3-Clause License

Copyright © 2022, Battelle Memorial Institute

  1. Battelle Memorial Institute (hereinafter Battelle) hereby grants permission to any person or entity lawfully obtaining a copy of this software and associated documentation files (hereinafter “the Software”) to redistribute and use the Software in source and binary forms, with or without modification. Such person or entity may use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software and may permit others to do so, subject to the following conditions:
  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers.

  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  • Other than as used herein, neither the name Battelle Memorial Institute or Battelle may be used in any form whatsoever without the express written consent of Battelle.

  1. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BATTELLE OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

References

Several publications describe the algorithms used in PyFlowline in detail. If you make use of PyFlowline in your work, please consider including a reference to the following:

  • Liao et al., (2023). pyflowline: a mesh-independent river network generator for hydrologic models. Journal of Open Source Software, 8(91), 5446, https://doi.org/10.21105/joss.05446

  • Liao. C. Cooper, M (2022) Pyflowline: a mesh-independent river network generator for hydrologic models. Zenodo. https://doi.org/10.5281/zenodo.6407298

  • Liao, C., Zhou, T., Xu, D., Cooper, M. G., Engwirda, D., Li, H.-Y., & Leung, L. R. (2023). Topological relationship-based flow direction modeling: Mesh-independent river networks representation. Journal of Advances in Modeling Earth Systems, 15, e2022MS003089. https://doi.org/10.1029/2022MS003089

pyflowline's People

Contributors

changliao1025 avatar dependabot[bot] avatar mgcooper avatar observingclouds avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

pyflowline's Issues

Jupyter Notebook

The documentation under Quick Start points to a Jupyter Notebook named: mpas_notebook.ipynb. In the Notebooks directory the Jupyter Notebook is named: mpas_example.ipynb. I assume the _example is the correct file name to reference in the Quick Start.

The spatial extent configuration

In the simplest scenario, the spatial extent of DEM should be used.
The configuration also provides keywords to set up the bounds, which is designed for the global MPAS mesh.

However, it is desired to use the DEM to change bounds in other meshes.

CellID missing

The ID is lost after reading MPAS mesh, it can be recovered by connecting two functions.

Confluence on the edge

image
In rare situation, a confluence might be on the edge and causes the algorithm to miss some segments.

Add dam flag

A dam associated flag will be added.
Because we do not want to remove the river associated with dam, we need to use this flag in all related processes.
In the final output, these river should be preserved.

Multiple outlet support

When multiple outlets are supported, what happens to the dam features.
If a watershed does not have dam info, should it be precessed separately?

Output from pystream

  1. mesh information, all the edge/vertex info
  2. elevation information: raw elevation and profile
  3. topology information: associate mesh id

Smooth the simplified flowline.

Currently, the simulated flowline has different distance between two adjacent vertices. The distance can be very long over some parts of the flowline, which will result in abrupt change for the channel elevation when deriving the channel slope. It will be useful to add a feature to smooth the simulated flowline, and the user can provide an threshold to determine the minimum distance between any two adjacent vertices.

Keep real flowline length

The algorithm will attempt to save the real length. For other grid, the default remains unchanged.

Global ID

We will use MPAS approach to define IDs for all elements.

Distance function based on lat lon

Due to the projection differences, the distance function failed when two vertex use different systems.
In the update, we will use lat/lon for distance calculation.

Export configuration for different applications

Both the main and the subbasin configuration may be used by the package and the pyhexwatershed package.
The new configuration files should be exported.
In a standalone scenario, it can be created under its output folder.
In a non-standalone, aka, coupled scenario, they should be created under the parent folder.

Read-only file system error

Receiving error: OSError: [Errno 30] Read-only file system: '/compyfs' when running the following line in the Jupyter Notebook example:

oPyflowline = pyflowline_read_model_configuration_file(sFilename_configuration_in, iCase_index_in=iCase_index, sMesh_type_in= sMesh_type, sDate_in=sDate)

Library loads fine and code cells before this one return the correct output. Not sure whether this is an issue with the library, a file configuration in the example folder, or something in my local system.

Installation using conda

I'm having trouble installing the library using the following conda command from the documentation:

conda install -c conda-forge pyflowline

Here is the output:

(base) AGR-1011A-APAT1:soilwaterweb andrespatrignani$ conda install -c conda-forge pyflowline
Collecting package metadata (current_repodata.json): done
Solving environment: - 
The environment is inconsistent, please check the package plan carefully
The following packages are causing the inconsistency:

  - defaults/osx-64::scrapy==2.8.0=py310hecd8cb5_0
  - defaults/osx-64::sphinx==5.0.2=py310hecd8cb5_0
  - defaults/osx-64::scikit-image==0.19.3=py310hcec6c5f_1
  - defaults/osx-64::parsel==1.6.0=py310hecd8cb5_0
  - defaults/osx-64::imbalanced-learn==0.10.1=py310hecd8cb5_0
  - defaults/osx-64::anaconda-client==1.11.1=py310hecd8cb5_0
  - defaults/noarch::requests-file==1.5.1=pyhd3eb1b0_0
  - defaults/osx-64::twisted==22.2.0=py310hca72f7f_1
  - defaults/osx-64::conda-repo-cli==1.0.27=py310hecd8cb5_0
  - defaults/noarch::asttokens==2.0.5=pyhd3eb1b0_0
  - defaults/noarch::cookiecutter==1.7.3=pyhd3eb1b0_0
  - defaults/noarch::itemloaders==1.0.4=pyhd3eb1b0_1
  - defaults/osx-64::holoviews==1.15.4=py310hecd8cb5_0
  - defaults/osx-64::bcrypt==3.2.0=py310hca72f7f_1
  - defaults/osx-64::nbclient==0.5.13=py310hecd8cb5_0
  - defaults/osx-64::jupyter==1.0.0=py310hecd8cb5_8
  - defaults/osx-64::spyder==5.4.1=py310hecd8cb5_0
  - defaults/osx-64::navigator-updater==0.3.0=py310hecd8cb5_0
  - defaults/osx-64::notebook==6.5.2=py310hecd8cb5_0
  - defaults/osx-64::colorcet==3.0.1=py310hecd8cb5_0
  - defaults/osx-64::pyct==0.5.0=py310hecd8cb5_0
  - defaults/osx-64::transformers==4.24.0=py310hecd8cb5_0
  - defaults/noarch::binaryornot==0.4.4=pyhd3eb1b0_1
  - defaults/osx-64::conda==23.1.0=py310hecd8cb5_0
  - defaults/osx-64::distributed==2022.7.0=py310hecd8cb5_0
  - defaults/osx-64::intake==0.6.7=py310hecd8cb5_0
  - defaults/noarch::pyhamcrest==2.0.2=pyhd3eb1b0_2
  - defaults/osx-64::multipledispatch==0.6.0=py310hecd8cb5_0
  - defaults/osx-64::ipython==8.10.0=py310hecd8cb5_0
  - defaults/osx-64::seaborn==0.12.2=py310hecd8cb5_0
  - defaults/osx-64::arrow==1.2.3=py310hecd8cb5_1
  - defaults/osx-64::pandas==1.5.3=py310h3ea8b11_0
  - defaults/osx-64::numpydoc==1.5.0=py310hecd8cb5_0
  - defaults/osx-64::spyder-kernels==2.4.1=py310hecd8cb5_0
  - defaults/noarch::python-dateutil==2.8.2=pyhd3eb1b0_0
  - defaults/osx-64::patsy==0.5.3=py310hecd8cb5_0
  - defaults/osx-64::huggingface_hub==0.10.1=py310hecd8cb5_0
  - defaults/noarch::conda-verify==3.4.2=py_1
  - defaults/osx-64::nbclassic==0.5.2=py310hecd8cb5_0
  - defaults/osx-64::qtconsole==5.4.0=py310hecd8cb5_0
  - defaults/osx-64::requests==2.28.1=py310hecd8cb5_0
  - defaults/osx-64::scikit-learn==1.2.1=py310hcec6c5f_0
  - defaults/noarch::protego==0.1.16=py_0
  - defaults/osx-64::anaconda-project==0.11.1=py310hecd8cb5_0
  - defaults/noarch::jupyterlab_pygments==0.1.2=py_0
  - defaults/noarch::jinja2-time==0.2.0=pyhd3eb1b0_3
  - defaults/osx-64::panel==0.14.3=py310hecd8cb5_0
  - defaults/osx-64::xarray==2022.11.0=py310hecd8cb5_0
  - defaults/noarch::w3lib==1.21.0=pyhd3eb1b0_0
  - defaults/osx-64::anaconda-navigator==2.4.0=py310hecd8cb5_0
  - defaults/noarch::pooch==1.4.0=pyhd3eb1b0_0
  - defaults/noarch::bleach==4.1.0=pyhd3eb1b0_0
  - defaults/osx-64::datashader==0.14.4=py310hecd8cb5_0
  - defaults/osx-64::widgetsnbextension==3.5.2=py310hecd8cb5_0
  - defaults/osx-64::scipy==1.10.0=py310ha516a68_1
  - defaults/osx-64::jupyterlab_server==2.19.0=py310hecd8cb5_0
  - defaults/osx-64::hvplot==0.8.2=py310hecd8cb5_0
  - defaults/osx-64::notebook-shim==0.2.2=py310hecd8cb5_0
  - defaults/noarch::ipywidgets==7.6.5=pyhd3eb1b0_1
  - defaults/osx-64::conda-build==3.23.3=py310hecd8cb5_0
  - defaults/osx-64::jupyter_server==1.23.4=py310hecd8cb5_0
  - defaults/osx-64::urllib3==1.26.14=py310hecd8cb5_0
  - defaults/osx-64::jupyter_console==6.6.2=py310hecd8cb5_0
  - defaults/osx-64::jupyterlab==3.5.3=py310hecd8cb5_0
  - defaults/osx-64::gensim==4.3.0=py310h3ea8b11_0
  - defaults/osx-64::matplotlib==3.7.0=py310hecd8cb5_0
  - defaults/noarch::automat==20.2.0=py_0
  - defaults/osx-64::statsmodels==0.13.5=py310h7b7cdfe_1
  - defaults/osx-64::ipykernel==6.19.2=py310h20db666_0
  - defaults/noarch::conda-token==0.4.0=pyhd3eb1b0_0
  - defaults/osx-64::jupyter_client==7.3.4=py310hecd8cb5_0
  - defaults/noarch::service_identity==18.1.0=pyhd3eb1b0_1
  - defaults/noarch::stack_data==0.2.0=pyhd3eb1b0_0
  - defaults/osx-64::websocket-client==0.58.0=py310hecd8cb5_4
  - defaults/osx-64::datashape==0.5.4=py310hecd8cb5_1
  - defaults/osx-64::dask==2022.7.0=py310hecd8cb5_0
  - defaults/osx-64::matplotlib-base==3.7.0=py310ha533b9c_0
  - defaults/noarch::tldextract==3.2.0=pyhd3eb1b0_0
  - defaults/osx-64::conda-content-trust==0.1.3=py310hecd8cb5_0
  - defaults/osx-64::nbconvert==6.5.4=py310hecd8cb5_0
done


==> WARNING: A newer version of conda exists. <==
  current version: 23.1.0
  latest version: 23.5.2

Please update conda by running

    $ conda update -n base -c defaults conda

Or to minimize the number of packages updated during conda update use

     conda install conda=23.5.2



## Package Plan ##

  environment location: /Users/andrespatrignani/anaconda3

  added / updated specs:
    - pyflowline


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    cryptography-38.0.4        |  py310hdd0c95c_0         1.0 MB  conda-forge
    curl-7.88.1                |       h6df9250_1         140 KB  conda-forge
    gdal-3.6.2                 |  py310h4d00ebc_2         1.4 MB
    geos-3.8.0                 |       hb1e8313_0         815 KB
    gettext-0.21.0             |       he85b6c0_1         3.0 MB
    hdf4-4.2.13                |       h39711bb_2         682 KB
    hdf5-1.12.1                |nompi_h0aa1fa2_104         3.7 MB  conda-forge
    kealib-1.5.0               |       h72c422f_1         151 KB
    krb5-1.20.1                |       h049b76e_0         1.1 MB  conda-forge
    libarchive-3.6.2           |       h29ab7a1_2         782 KB
    libboost-1.73.0            |      h3fa6bed_12        12.7 MB
    libcurl-7.88.1             |       h6df9250_1         336 KB  conda-forge
    libgdal-3.6.2              |       hd905d60_2         9.0 MB
    libkml-1.3.0               |       h85bf17e_6         466 KB
    libnetcdf-4.8.1            |       h9f5a9a2_3         1.1 MB
    libnghttp2-1.52.0          |       he2ab024_0         599 KB  conda-forge
    libpq-12.15                |       h04015c4_1         2.5 MB
    libspatialite-4.3.0a       |      hd1e8275_23         3.0 MB
    libsqlite-3.42.0           |       h58db7d2_0         858 KB  conda-forge
    libssh2-1.11.0             |       hd019ec5_0         253 KB  conda-forge
    libxml2-2.10.3             |       h930c0e2_0         665 KB
    libxslt-1.1.37             |       h5d22bc9_0         236 KB  conda-forge
    libzip-1.9.2               |       h6db710c_1         117 KB  conda-forge
    libzlib-1.2.13             |       h8a1eda9_5          58 KB  conda-forge
    lxml-4.9.2                 |  py310h6c40b1e_0         1.4 MB
    netcdf4-1.6.0              |nompi_py310hc1a5e9b_100         448 KB  conda-forge
    openssl-3.1.1              |       h8a1eda9_1         2.2 MB  conda-forge
    pcre2-10.42                |       h9b97e30_0         1.3 MB
    python-3.10.12             |had23ca6_0_cpython        12.5 MB  conda-forge
    python_abi-3.10            |          3_cp310           6 KB  conda-forge
    qhull-2020.2               |       h940c156_2         1.8 MB  conda-forge
    qtwebkit-5.212             |       hbfab81c_5        10.6 MB
    sqlite-3.42.0              |       h2b0dec6_0         854 KB  conda-forge
    tiledb-2.3.3               |       h1b93210_3         2.5 MB
    xz-5.4.2                   |       h6c40b1e_0         372 KB
    zlib-1.2.13                |       h8a1eda9_5          89 KB  conda-forge
    ------------------------------------------------------------
                                           Total:        78.5 MB

The following NEW packages will be INSTALLED:

  beautifulsoup4     conda-forge/noarch::beautifulsoup4-4.12.2-pyha770c72_0 
  cairo              conda-forge/osx-64::cairo-1.16.0-h0ab9d94_1001 
  cftime             conda-forge/osx-64::cftime-1.6.2-py310h936d966_1 
  chardet            conda-forge/osx-64::chardet-5.1.0-py310h2ec42d9_0 
  expat              conda-forge/osx-64::expat-2.5.0-hf0c8a7f_1 
  fontconfig         conda-forge/osx-64::fontconfig-2.13.94-h10f422b_0 
  freexl             conda-forge/osx-64::freexl-1.0.6-hb7f2c08_1 
  gdal               pkgs/main/osx-64::gdal-3.6.2-py310h4d00ebc_2 
  geos               pkgs/main/osx-64::geos-3.8.0-hb1e8313_0 
  geotiff            pkgs/main/osx-64::geotiff-1.7.0-hf6ff7a4_1 
  hdf4               pkgs/main/osx-64::hdf4-4.2.13-h39711bb_2 
  json-c             conda-forge/osx-64::json-c-0.16-h01d06f9_0 
  kealib             pkgs/main/osx-64::kealib-1.5.0-h72c422f_1 
  libblas            conda-forge/osx-64::libblas-3.9.0-16_osx64_openblas 
  libboost           pkgs/main/osx-64::libboost-1.73.0-h3fa6bed_12 
  libcblas           conda-forge/osx-64::libcblas-3.9.0-16_osx64_openblas 
  libexpat           conda-forge/osx-64::libexpat-2.5.0-hf0c8a7f_1 
  libgdal            pkgs/main/osx-64::libgdal-3.6.2-hd905d60_2 
  libkml             pkgs/main/osx-64::libkml-1.3.0-h85bf17e_6 
  libnetcdf          pkgs/main/osx-64::libnetcdf-4.8.1-h9f5a9a2_3 
  libspatialite      pkgs/main/osx-64::libspatialite-4.3.0a-hd1e8275_23 
  libsqlite          conda-forge/osx-64::libsqlite-3.42.0-h58db7d2_0 
  libzip             conda-forge/osx-64::libzip-1.9.2-h6db710c_1 
  libzlib            conda-forge/osx-64::libzlib-1.2.13-h8a1eda9_5 
  mkl                conda-forge/osx-64::mkl-2022.2.1-h44ed08c_16952 
  netcdf4            conda-forge/osx-64::netcdf4-1.6.0-nompi_py310hc1a5e9b_100 
  pcre2              pkgs/main/osx-64::pcre2-10.42-h9b97e30_0 
  pixman             conda-forge/osx-64::pixman-0.38.0-h01d97ff_1003 
  poppler            pkgs/main/osx-64::poppler-0.81.0-h031bf0f_2 
  poppler-data       conda-forge/noarch::poppler-data-0.4.12-hd8ed1ab_0 
  proj               conda-forge/osx-64::proj-6.2.1-h773a61f_0 
  pyflowline         conda-forge/noarch::pyflowline-0.2.3-pyhd8ed1ab_0 
  pygments           conda-forge/noarch::pygments-2.15.1-pyhd8ed1ab_0 
  pyopenssl          conda-forge/noarch::pyopenssl-23.2.0-pyhd8ed1ab_1 
  python_abi         conda-forge/osx-64::python_abi-3.10-3_cp310 
  pytorch            conda-forge/osx-64::pytorch-1.12.1-cpu_py310h32957a8_0 
  qhull              conda-forge/osx-64::qhull-2020.2-h940c156_2 
  six                conda-forge/noarch::six-1.16.0-pyh6c4a22f_0 
  sleef              conda-forge/osx-64::sleef-3.5.1-h6db0672_2 
  tiledb             pkgs/main/osx-64::tiledb-2.3.3-h1b93210_3 
  xerces-c           pkgs/main/osx-64::xerces-c-3.2.4-hd2b157f_0 

The following packages will be REMOVED:

  h5py-3.7.0-py310h6c517f8_0
  pycurl-7.45.1-py310h0a4fc7d_0
  pytables-3.7.0-py310h59775c6_1

The following packages will be UPDATED:

  ca-certificates    pkgs/main::ca-certificates-2023.01.10~ --> conda-forge::ca-certificates-2023.5.7-h8857fd0_0 
  certifi            pkgs/main/osx-64::certifi-2022.12.7-p~ --> conda-forge/noarch::certifi-2023.5.7-pyhd8ed1ab_0 
  curl                    pkgs/main::curl-7.87.0-h6c40b1e_0 --> conda-forge::curl-7.88.1-h6df9250_1 
  gettext                                 0.21.0-h7535e17_0 --> 0.21.0-he85b6c0_1 
  hdf5                    pkgs/main::hdf5-1.10.6-h10fe05b_1 --> conda-forge::hdf5-1.12.1-nompi_h0aa1fa2_104 
  krb5                    pkgs/main::krb5-1.19.4-hdba6334_0 --> conda-forge::krb5-1.20.1-h049b76e_0 
  libarchive                               3.6.2-h65c5294_0 --> 3.6.2-h29ab7a1_2 
  libcurl              pkgs/main::libcurl-7.87.0-ha585b31_0 --> conda-forge::libcurl-7.88.1-h6df9250_1 
  libnghttp2         pkgs/main::libnghttp2-1.46.0-ha29bfda~ --> conda-forge::libnghttp2-1.52.0-he2ab024_0 
  libpq                                     12.9-h1c9f633_3 --> 12.15-h04015c4_1 
  libssh2              pkgs/main::libssh2-1.10.0-h0a4fc7d_0 --> conda-forge::libssh2-1.11.0-hd019ec5_0 
  libxml2                                 2.9.14-hbf8cd5e_0 --> 2.10.3-h930c0e2_0 
  libxslt              pkgs/main::libxslt-1.1.35-h5b33f42_0 --> conda-forge::libxslt-1.1.37-h5d22bc9_0 
  lxml                                4.9.1-py310h65b224f_0 --> 4.9.2-py310h6c40b1e_0 
  openssl              pkgs/main::openssl-1.1.1t-hca72f7f_0 --> conda-forge::openssl-3.1.1-h8a1eda9_1 
  python                pkgs/main::python-3.10.9-h218abb5_1 --> conda-forge::python-3.10.12-had23ca6_0_cpython 
  qtwebkit                                 5.212-h24dc246_4 --> 5.212-hbfab81c_5 
  sqlite                pkgs/main::sqlite-3.40.1-h880c91c_0 --> conda-forge::sqlite-3.42.0-h2b0dec6_0 
  xz                                      5.2.10-h6c40b1e_1 --> 5.4.2-h6c40b1e_0 
  zlib                    pkgs/main::zlib-1.2.13-h4dc903c_0 --> conda-forge::zlib-1.2.13-h8a1eda9_5 

The following packages will be SUPERSEDED by a higher-priority channel:

  cryptography       pkgs/main::cryptography-39.0.1-py310h~ --> conda-forge::cryptography-38.0.4-py310hdd0c95c_0 


Proceed ([y]/n)? y


Downloading and Extracting Packages
                                                                                                       
Preparing transaction: done                                                                            
Verifying transaction: failed                                                                          
                                                                                                       
RemoveError: 'pyopenssl' is a dependency of conda and cannot be removed from                           
conda's operating environment.  

Software License

This issue is related to the JOSS submission (openjournals/joss-reviews#5446). Can the authors of pyflowline please reference an OSI approved license (https://opensource.org/licenses/) that is most similar to the one provided in the existing license.md, or if the existing was modified from an OSI approved license? Or perhaps Battelle Memorial Institute can submit their license for inclusion in the OSI approved licenses (other national labs have done so)? Thanks.

Within and intersect for boundary check

The previous way, which used vertex to check cells is not used anymore. I will use the gdal intersect and within to decide whether a cell should be kept.

Cell center location

For structured mesh, the central location can be calculated directly.
For unstructured mesh, there might be multiple methods to calculate it.
To maintain consistency, we will provide this as an optional keyword.

New configuration to add holes back

Start mesh generation.
131035
Warning: nNeighbor != nVertex
131293
Warning: nNeighbor != nVertex
131300
Warning: nNeighbor != nVertex
134913
Warning: nNeighbor != nVertex

Shortcut at cell corner

It is desirable to "ignore" a flowline at the corner if its length is shorter than a threshold.
However, a returning flowline may have the similar issue. Therefore, it is best to separate these two types of flowline.

Automatic outlet identification

We can use headwater as a way to search for the outlet precisely.
However, we need to remove the additional flowline.
Maybe we can use a QGIS tool to obtain precise location.

The usage of DEM

In normal cases, DEM is only used for spatial extent.
In the MPAS case, DEM is not used because MPAS mesh needs its own spatial extent.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.