{"id":361047,"name":"GISWATER","description":"This software connects different IT solutions and pre-existent databases allowing you to setup a high performance water management system in combination with hydraulic software.","url":"https://github.com/giswater/plugin","last_synced_at":"2026-07-14T00:30:18.842Z","repository":{"id":37801258,"uuid":"49713521","full_name":"giswater/plugin","owner":"giswater","description":"QGIS plugin for Giswater","archived":false,"fork":false,"pushed_at":"2026-07-08T09:58:45.000Z","size":291571,"stargazers_count":81,"open_issues_count":3,"forks_count":33,"subscribers_count":21,"default_branch":"main","last_synced_at":"2026-07-08T10:12:31.600Z","etag":null,"topics":["gis","open-source","water","water-management","water-models"],"latest_commit_sha":null,"homepage":"http://www.giswater.org/","language":"PLpgSQL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/giswater.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-01-15T10:50:18.000Z","updated_at":"2026-07-08T09:58:49.000Z","dependencies_parsed_at":"2025-12-30T02:06:23.723Z","dependency_job_id":"645acc89-32e1-42de-9fc1-0603870db562","html_url":"https://github.com/giswater/plugin","commit_stats":{"total_commits":8894,"total_committers":36,"mean_commits":"247.05555555555554","dds":0.7180121430177648,"last_synced_commit":"144d8650690c0b1af2cae5320976be00d1373b4c"},"previous_names":["giswater/plugin"],"tags_count":254,"template":false,"template_full_name":null,"purl":"pkg:github/giswater/plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giswater%2Fplugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giswater%2Fplugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giswater%2Fplugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giswater%2Fplugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/giswater","download_url":"https://codeload.github.com/giswater/plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giswater%2Fplugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35347554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-10T02:00:06.465Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"Giswater","name":"Giswater","uuid":"3052331","kind":"organization","description":"","email":"info@giswater.org","website":"www.giswater.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/3052331?v=4","repositories_count":13,"last_synced_at":"2024-03-27T13:18:47.471Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/Giswater","funding_links":[],"total_stars":127,"followers":34,"following":0,"created_at":"2022-11-06T06:57:30.844Z","updated_at":"2024-03-27T13:18:47.563Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Giswater","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Giswater/repositories"},"packages":[],"commits":{"message":"Repository syncing started."},"issues_stats":{"full_name":"giswater/plugin","html_url":"https://github.com/giswater/plugin","last_synced_at":null,"status":null,"issues_count":null,"pull_requests_count":null,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":null,"issues_closed_count":null,"pull_requests_closed_count":null,"pull_request_authors_count":null,"issue_authors_count":null,"avg_comments_per_issue":null,"avg_comments_per_pull_request":null,"merged_pull_requests_count":null,"bot_issues_count":null,"bot_pull_requests_count":null,"past_year_issues_count":null,"past_year_pull_requests_count":null,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":null,"past_year_pull_requests_closed_count":null,"past_year_pull_request_authors_count":null,"past_year_issue_authors_count":null,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":null,"past_year_bot_pull_requests_count":null,"past_year_merged_pull_requests_count":null,"created_at":"2026-07-11T01:00:30.109Z","updated_at":"2026-07-11T01:00:30.109Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/giswater%2Fplugin","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/giswater%2Fplugin/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{},"pull_request_author_associations_count":{},"issue_authors":{},"pull_request_authors":{},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-07-11T00:00:21.140Z","repositories_count":14863232,"issues_count":32290165,"pull_requests_count":106197577,"authors_count":11341578,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[],"active_maintainers":[]},"events":{"total":{"PushEvent":4},"last_year":{"PushEvent":4}},"keywords":["gis","open-source","water","water-management","water-models"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/lint-flake8.yml","sha":null,"kind":"manifest","created_at":"2025-12-30T02:06:23.435Z","updated_at":"2025-12-30T02:06:23.435Z","repository_link":"https://github.com/giswater/plugin/blob/main/.github/workflows/lint-flake8.yml","dependencies":[{"id":25781662178,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":25781662179,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v5","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/lint-qt6.yml","sha":null,"kind":"manifest","created_at":"2025-12-30T02:06:23.491Z","updated_at":"2025-12-30T02:06:23.491Z","repository_link":"https://github.com/giswater/plugin/blob/main/.github/workflows/lint-qt6.yml","dependencies":[{"id":25781662185,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":25781662186,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/pluginzip.yml","sha":null,"kind":"manifest","created_at":"2025-12-30T02:06:23.546Z","updated_at":"2025-12-30T02:06:23.546Z","repository_link":"https://github.com/giswater/plugin/blob/main/.github/workflows/pluginzip.yml","dependencies":[{"id":25781662187,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":25781662188,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":25781662189,"package_name":"softprops/action-gh-release","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/test.yml","sha":null,"kind":"manifest","created_at":"2025-12-30T02:06:23.603Z","updated_at":"2025-12-30T02:06:23.603Z","repository_link":"https://github.com/giswater/plugin/blob/main/.github/workflows/test.yml","dependencies":[{"id":25781662193,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]}],"score":null,"created_at":"2026-07-09T00:29:55.106Z","updated_at":"2026-07-14T00:30:18.844Z","avatar_url":"https://github.com/giswater.png","language":"PLpgSQL","category":"Natural Resources","sub_category":"Water Supply and Quality","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"\u003cdiv align=\"center\"\u003e\n\t\u003ca href=\"https://www.giswater.org/\"\u003e\n\t\t\u003cpicture\u003e\n\t\t\u003cimg alt=\"Giswater logo\" src=\"./icons/dialogs/136.png\" height=\"128\"\u003e\n\t\t\u003c/picture\u003e\n\t\u003c/a\u003e\n\t\u003ch1\u003eGiswater\u003c/h1\u003e\n\t\u003ca href=\"https://qgis.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/qgis-3.34%20(LTR)%20-blue.svg?style=for-the-badge\u0026logo=qgis\u0026logoColor=white\"\u003e\u003c/a\u003e\n  \t\u003ca href=\"https://www.python.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/python-3.9-blue.svg?style=for-the-badge\u0026logo=python\u0026logoColor=white\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://www.postgresql.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/postgresql-9.5|16-blue.svg?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white\"\u003e\u003c/a\u003e\n\t\u003ca href=\"./LICENSE\"\u003e\u003cimg alt=\"LICENSE\" src=\"https://img.shields.io/github/license/giswater/plugin?style=for-the-badge\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n## Welcome to the Giswater Project - QGIS Plugin\n\nWater management has traditionally been complex and costly, making it difficult to efficiently plan or control water supply networks without further investments. However, with the inception of Giswater in 2014, the first open-source software specifically designed for water supply and water management, this complexity is now manageable.\n\nGiswater integrates various IT solutions and pre-existing databases, enabling high-performance management systems combined with hydraulic software such as EPANET and SWMM.\n\nGiswater is the first open-source tool for integral water cycle management, created for city councils, municipal administrations, water and sewerage service providers, and hydraulic professionals. As a driver, it connects hydraulic analysis tools and spatial databases, allowing user access from any GIS. Compatible with EPANET, EPA SWMM, GIS, WMS, SCADA, and more, Giswater integrates seamlessly into water management entities’ ecosystems, amplifying their operational capabilities.\n\nAdditionally, Giswater can be connected with business management tools like ERP, CRM, Business Intelligence software, and corporate mobile devices.\n\nDeveloped in Python (QGIS plugin) and PL/SQL (PostgreSQL database), the project is organized across three main repositories: `QGIS-PLUGIN`, `DB-MODEL`, and `DOCS`.\n\n---\n\n## Table of Contents\n\n1. [Requirements](#requirements)\n2. [Install](#install)\n3. [Test](#test)\n4. [Deployment](#deployment)\n5. [Wiki](#wiki)\n6. [FAQ](#faqs)\n7. [Code Repositories](#code-repositories)\n8. [Versioning](#versioning)\n9. [Third-Party Libraries](#third-party-libraries)\n10. [License](#license)\n11. [Acknowledgments](#acknowledgments)\n\n---\n\n## Requirements\n\nTo work with Giswater, you will need:\n\n- **PostgreSQL**: Ensure to select the pgAdmin component (Database Manager) and PostGIS (Spatial Extension) during installation.\n- **QGIS**: Required geoprocessing software.\n\n## Install\n\nSince Giswater functions as server-client software, installation is done across two environments.\n\n### Backend Environment\n\nCompatible with Windows, Mac, and Linux OS.\n\n- Install PostgreSQL (versions 9.5 to 18).\n- Install PostGIS, pgRouting, and other required PostgreSQL extensions (database-level, once per database):\n\n  ```sql\n  CREATE EXTENSION IF NOT EXISTS postgis;\n  CREATE EXTENSION IF NOT EXISTS pgrouting;\n  CREATE EXTENSION IF NOT EXISTS tablefunc;\n  CREATE EXTENSION IF NOT EXISTS unaccent;\n  CREATE EXTENSION IF NOT EXISTS postgis_raster;\n  CREATE EXTENSION IF NOT EXISTS fuzzystrmatch;\n  ```\n\n  `postgis`, `pgrouting`, `tablefunc`, and `unaccent` are also created automatically when you build a WS/UD schema ([`dbmodel/schemas/main/common/base/init.sql`](dbmodel/schemas/main/common/base/init.sql)). Install the packages on the server first; the extension objects must exist at the OS level.\n\n- **PostgreSQL roles** — Giswater uses a fixed role hierarchy. You do **not** need to run separate corporate DDL scripts: roles are created idempotently during schema creation and permissions are applied by `gw_fct_admin_role_permissions()` at the end of `lastprocess`.\n\n  | Role | Purpose | Inherits |\n  |------|---------|----------|\n  | `role_basic` | Read-only base (`SELECT` on catalogued tables/views) | — |\n  | `role_om` | Operations \u0026 maintenance | `role_basic` |\n  | `role_edit` | Network editing | `role_om` |\n  | `role_epa` | EPA / SWMM modelling | `role_edit` |\n  | `role_plan` | Planning (psectors, etc.) | `role_epa` |\n  | `role_admin` | Schema administration (no superuser) | `role_plan` |\n  | `role_system` | Owns schema objects; used for DDL during build | `role_admin` |\n  | `role_crm` | CRM integration (standalone, no inheritance chain) | — |\n\n  Inheritance chain (each role is granted to the one below; higher roles inherit all lower permissions):\n\n  ```\n  role_system\n    └── role_admin\n          └── role_plan\n                └── role_epa\n                      └── role_edit\n                            └── role_om\n                                  └── role_basic\n\n  role_crm   (standalone)\n  ```\n\n  **Installer requirements:** connect as a PostgreSQL superuser (or equivalent: `CREATEROLE` + `CREATE` on the target database). The build creates missing roles, (re)applies the role hierarchy on every schema create (`GRANT` is idempotent), grants `role_system` to the installer when superuser, creates the project schema `AUTHORIZATION role_system`, and runs restrictive grants (no blanket `ALL` on tables — see [`gw_fct_admin_role_permissions`](dbmodel/schemas/main/common/base/fct/gw_fct_admin_role_permissions.sql)).\n\n  **Manual bootstrap** (only if you must prepare roles before the first schema build, e.g. restricted DBA workflow):\n\n  ```sql\n  DO $$\n  DECLARE\n    v_role_exists boolean;\n  BEGIN\n    SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'role_basic') INTO v_role_exists;\n    IF NOT v_role_exists THEN\n      CREATE ROLE role_basic NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;\n    END IF;\n\n    SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'role_om') INTO v_role_exists;\n    IF NOT v_role_exists THEN\n      CREATE ROLE role_om NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;\n    END IF;\n\n    SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'role_edit') INTO v_role_exists;\n    IF NOT v_role_exists THEN\n      CREATE ROLE role_edit NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;\n    END IF;\n\n    SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'role_epa') INTO v_role_exists;\n    IF NOT v_role_exists THEN\n      CREATE ROLE role_epa NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;\n    END IF;\n\n    SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'role_plan') INTO v_role_exists;\n    IF NOT v_role_exists THEN\n      CREATE ROLE role_plan NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;\n    END IF;\n\n    SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'role_admin') INTO v_role_exists;\n    IF NOT v_role_exists THEN\n      CREATE ROLE role_admin NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;\n    END IF;\n\n    SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'role_system') INTO v_role_exists;\n    IF NOT v_role_exists THEN\n      CREATE ROLE role_system NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;\n    END IF;\n\n    SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'role_crm') INTO v_role_exists;\n    IF NOT v_role_exists THEN\n      CREATE ROLE role_crm NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;\n    END IF;\n\n    GRANT role_basic TO role_om;\n    GRANT role_om TO role_edit;\n    GRANT role_edit TO role_epa;\n    GRANT role_epa TO role_plan;\n    GRANT role_plan TO role_admin;\n    GRANT role_admin TO role_system;\n\n    IF NOT pg_has_role(current_user, 'role_system', 'member')\n       AND (SELECT rolsuper FROM pg_roles WHERE rolname = current_user) IS TRUE THEN\n      GRANT role_system TO current_user;\n    END IF;\n  END$$;\n  ```\n\n  Map QGIS/PostgreSQL logins to the appropriate role (e.g. `GRANT role_edit TO gis_user`). Object-level grants on each project schema are (re)applied by `gw_fct_admin_role_permissions()` during create and upgrade (`lastprocess`).\n\n### Frontend environment:\n\nCompatible with Windows, Mac, and Linux, but EPA models are only supported on Windows.\n\n- Install the latest Long-Term Release (LTR) of QGIS.\n- Install SWMM (5.1) and EPANET (2.2). _Note_: EPA SWMM and EPANET may not work on Linux front-end environments.\n- On Linux systems, you may need to install the PostgreSQL Qt driver for database connectivity.\n  - On Ubuntu:\n  ```\n  sudo apt install libqt5sql5-psql\n  ```\n  - On Fedora:\n  ```\n  sudo dnf install qt5-qtbase-postgresql\n  ```\n\n## Test\n\n**Database model (pgTAP, Docker):** [dbmodel/README.md — Testing](dbmodel/README.md#testing) — `./dbmodel/test/run_tests.sh ws` (PostgreSQL 16–18 via `PG_MAJOR`).\n\n**Schema CLI (no QGIS):** [giswater_admin/README.md](giswater_admin/README.md) — `pipx install giswater-cli` then `gw create --kind ws …`\n\n**Python unit tests:** `python3 -m pytest test/engine -v` (from plugin repo root).\n\nUse the provided example projects, pre-loaded with datasets for testing. Find setup videos below:\n\n- [Install the plugin](https://www.youtube.com/watch?v=EwDRoHY2qAk\u0026list=PLQ-seRm9Djl4hxWuHidqYayHEk_wsKyko\u0026index=4)\n- [Setup connection](https://www.youtube.com/watch?v=LJGCUrqa0es\u0026list=PLQ-seRm9Djl4hxWuHidqYayHEk_wsKyko\u0026index=3)\n- [Create DB schema example](https://www.youtube.com/watch?v=nR3PBtfGi9k\u0026list=PLQ-seRm9Djl4hxWuHidqYayHEk_wsKyko\u0026index=2)\n- [Create QGIS project](https://www.youtube.com/watch?v=RwFumKKTB2k\u0026list=PLQ-seRm9Djl4hxWuHidqYayHEk_wsKyko\u0026index=1)\n\n## Deployment\n\n### Requirements\n\nEnsure you have the permissions to connect to PostgreSQL and that your user has superuser rights for database administration tasks (e.g., creating schemas, roles, backups).\n\n### Project Setup\n\n- Define catalogs with at least the mandatory categories ([materials, node, arc]) and create map zones ([macroexploitation, exploitation, municipality, sector, dma]).\n- To get started, refer to [Start from Scratch](https://github.com/giswater/plugin/wiki/Start-from-Scratch:-Installing-Giswater-and-steps-to-create-an-empty-project) for guidance.\n- **Tip**: Once map zones and catalogs are defined, you can begin adding network nodes and arcs.\n\nFor more configuration options, see the [Giswater configuration guide](https://github.com/giswater/plugin/wiki/Config).\n\n## Wiki\n\nExplore additional documentation on the [Giswater Wiki](https://github.com/giswater/plugin/wiki).\n\n## FAQs\n\nFind answers to common questions in the [Giswater FAQs](https://github.com/giswater/plugin/wiki/FAQs).\n\n## Code Repositories\n\n- **Docs**: [Documentation repository](https://github.com/giswater/docs)\n- **QGIS Plugin**: [QGIS Plugin repository](https://github.com/giswater/plugin)\n- **Database Model**: [Database Model repository](https://github.com/giswater/giswater_dbmodel) — in this repo: [dbmodel/](dbmodel/) ([schema layout](dbmodel/README.md#schema-architecture), [local tests](dbmodel/README.md#testing))\n- **Headless schema CLI**: [giswater_admin/](giswater_admin/) ([full reference](giswater_admin/README.md))\n\nOther repositories may exist but are either deprecated or inactive.\n\n## Versioning\n\nGiswater follows a three-level release system:\n\n- **Major**: New architecture with significant updates (no forward compatibility).\n- **Minor**: Bug fixes and new features (forward compatible).\n- **Build**: Minor fixes and updates (forward compatible).\n\nRelease frequency:\n\n- **Build**: Monthly (12 builds/year)\n- **Minor**: Annually\n- **Major**: No fixed schedule\n\n## Third-Party Libraries\n\nGiswater uses the following third-party libraries:\n\n- **WNTR**: [WNTR GitHub](https://github.com/USEPA/WNTR)\n  WNTR is an open-source Python package for analyzing water distribution systems using hydraulic and water quality models.\n  The WNTR license can be found in the [LICENSE](./packages/wntr/LICENSE.md) file or in their [repository](https://github.com/USEPA/WNTR/blob/main/LICENSE.md).\n\n- **swmm-api**: [swmm-api GitLab](https://gitlab.com/markuspichler/swmm_api)\n  swmm-api provides a Pythonic interface to the EPA SWMM5 software, enabling advanced scripting, simulation control, and access to simulation results.\n  The license and further details can be found in the [LICENSE](./packages/swmm_api/LICENSE) or in their [repository](https://gitlab.com/markuspichler/swmm_api/-/blob/master/LICENSE).\n\n- **tqdm**: [tqdm GitHub](https://github.com/tqdm/tqdm)\n  tqdm is a fast, extensible progress bar library for Python, supporting console, GUI, and notebook environments.\n  The tqdm license can be viewed in the [LICENSE](./packages/tqdm/LICENCE) or in their [repository](https://github.com/tqdm/tqdm/blob/master/LICENCE).\n\n- **PyPDF2**: [PyPDF2 GitHub](https://github.com/py-pdf/pypdf)\n  PyPDF2 is a Python library for working with PDF files, offering functionalities such as splitting, merging, and text extraction.\n  The PyPDF2 license is available in the [LICENSE](./packages/PyPDF2/LICENSE) or in their [repository](https://github.com/py-pdf/pypdf/blob/main/LICENSE).\n\n- **osmnx**: [OSMnx GitHub](https://github.com/gboeing/osmnx)\n  OSMnx is a Python package to easily download, model, analyze, and visualize street networks and other geospatial features from OpenStreetMap. You can download and model walking, driving, or biking networks with a single line of code then analyze and visualize them. You can just as easily work with urban amenities/points of interest, building footprints, transit stops, elevation data, street orientations, speed/travel time, and routing.\n  The OSMnx license can be viewed in the [LICENSE](./packages/osmnx/LICENSE.txt) or in their [repository](https://github.com/gboeing/osmnx/blob/main/LICENSE.txt)\n\n## License\n\nThis program is free software, licensed under the GNU General Public License (GPL) version 3 or later. Refer to the [LICENSE](./LICENSE) file for details.\n\n## Acknowledgments\n\nSpecial thanks to our founding contributors:\n\n- GITS-BarcelonaTech University\n- Aigües de Mataró\n- Cicle de l'Aigua del Ter S.A\n- Aigües de Blanes\n- Aigües del Prat\n- Aigües de Vic\n- Aigües de Castellbisbal\n- Aigües de Banyoles\n- Figueres de Serveis, S.A\n- Prodaisa\n- Sabemsa\n- Consorci Aigües de Tarragona\n- BGEO OPEN GIS S.L.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/361047","html_url":"https://ost.ecosyste.ms/projects/361047"}