GithubHelp home page GithubHelp logo

bressen's Introduction

Bressen

Voor het bewerken van breslocaties voor het Tygron Platform. Maakt bresvlakken (polygonen) als invoer voor de overstromingsmodule op basis van breslocaties (punten) keringen (polylijnen), peilvlakken (polygonen) en watervlakken (polygonen).

Python environment

Bressen gebruikt een recente versie (maart 2024) van geopandas en een versie van shapely en pandas groter dan 2.0. De module pyogrio wordt gebruikt voor het efficient lezen en schrijven van GeoPackages.

Wij bevelen het gebruik van Mamba aan voor het bouwen van Python-environments. Voor het installeren van MicroMamba, zie prefix.dev: https://prefix.dev/docs/mamba/overview#installation.

Een environment.yml bestand moet in ieder geval de volgende inhoud bevatten:

channels:
  - conda-forge
 
dependencies:
  - python<3.13
  - geopandas
  - pandas>2.0
  - pyogrio
  - shapely>2.0

Met deze environment.yml en MicroMamba bouw je je environment (we gebruiken hier de naam bressen) vanaf de command-line met:

micromamba env create -f environment.yml -n bressen

Installatie

Voor gebruikers

Vanuit de geactiveerde environment (in dit voorbeeld micromamba activate bressen) installeer je de bressen module met:

pip install bressen

Voor ontwikkelaars

Clone deze repository of download de main-branch lokaal. Vanuit de geactiveerde environment (in dit voorbeeld micromamba activate bressen) en de module-folder (waar je pyproject.toml vindt) installeer je de bressen-module via de command-line met:

pip install .

Wanneer je de module hebt gecloned én wilt kunnen bijwerken via Git of GitHub Desktop, kun je de module ook in edit-mode linken aan je Python-environment door:

pip install -e .

Nu kun je wijzigingen van de module eenvoudig opnemen door de repository bij te werken. En beter nog, actief bijdragen aan de (door)ontwikkeling van deze module!

Gebruik

Bressen worden berekend in 2 stappen, in deze repository uitgelegd in twee Jupyter Notebooks:

Credits

Bressen is ontwikkeld door D2Hydro in opdracht van Waternet en Open Source beschikbaar onder een MIT licentie

bressen's People

Contributors

danieltollenaar avatar

bressen's Issues

Uitwerking edge-cases

Issue voor het beschrijven en oplossen van edge-cases: breslocaties die alleen na code-/ of data-aanpassing te converteren zijn naar polygonen.

Edge-cases (zie uitwerking hieronder):

  1. Peilgebied verder dan offset-afstand (x1) vanaf breslocatie. Oplossing: melding en geen bres-polygon
  2. Kering korter dan 1/2 van de breslengte aan 1 of beide kanten van de bres. Oplossing: kering verlengen aan 1 of beide kanten
  3. Missende punt-geometrieën in bressen-bestand
  4. Kering te kort, maar kan niet verlengd worden door ontbrekende aansluitende geometrie
  5. Kanteldijk N201
  6. Geniedijk - Legmeerdijk

Peilen uit polygonen (peil- + boezemvakken)

We maken een gebied dekkende peilenkaart om zo de richting van de bres-offset te bepalen: de kant van het laagste peil ten opzichte van de kering (polylijn). Deze peilenkaart (polygonen) is invoer in de module naast de keringen (polylijnen) en de bressen (punten)

Ontwikkelen van bressen.peilvlakken sub-module met:

  • Mergen van vlakkenbestanden; peilvlakken los van watervlakken
  • Bepaling 1 peil uit 1 of meerdere velden uit verschillende invoerbestanden
  • Opslaan van resultaat in styled GeoPackage

Bressen klasse

We maken een Bressen klasse met volgende opzet

class Bressen():
  bressen: list[Bres]
  basisgegevens: BasisGegevens

  def to_geopackage(self, path):
  """Wegschrijven naar geopackage."""
  ....
  
  def calculate(self, x1, x2, x3):
   """Doorrekenen van alle bressen."""

class Bres():
    point: Point
    polygon: Polygon
    x1: float
    x2: float
    x3: float
    properties: dict()
  
    def calculate(self, x1, x2, x3):
         """conversie van punt naar polygon."""

Conversie script naar module

Technische eisen:

Must have:

  • minimaal 80% code-coverage met pytests
  • flake8 max-line-length = 120, max-code-complexity = 10
  • pip-installable module
  • release op GitHub en PyPi

Nice to have:

  • minimaal 90% code-coverage met pytests
  • test op multi-version support: python, (geo)pandas en shapely
  • release op conda-forge
  • toevoegen command-line-interface

Script voor 30 breslocaties

Levering van een script werkend voor 30 breslocaties t.b.v. test in Tygron Engine. Breslocaties, zoals ingeladen na de merge uit #1:

Image

Op basis van de sets afgeleid met issue #1, zien we een aantal cases in volgorde de aanpak:

  1. bres naast boezemwater: bresvlak komt aan de ándere kant van de kering te liggen:
    Image

  2. bres tussen polders: bresvlak komt aan laagste kant van de kering te liggen:
    Image

  3. bres ligt aan grens beheergebied: bresvlak komt aan de kant van de kering bínnen het beheergebied te liggen. In opmerkingen-veld wordt een waarschuwing gegeven, zodat gecontroleerd kan worden of deze locatie gewenst is.
    Image

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.