{"id":16630134,"url":"https://github.com/alexanderjuestel/pyheatdemand","last_synced_at":"2025-03-09T01:32:06.626Z","repository":{"id":199873436,"uuid":"702357717","full_name":"AlexanderJuestel/pyheatdemand","owner":"AlexanderJuestel","description":"Processing Tool for Heat Demand Data","archived":false,"fork":false,"pushed_at":"2024-03-06T18:14:08.000Z","size":108177,"stargazers_count":5,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-06T17:13:42.205Z","etag":null,"topics":["geospatial-data","geospatial-data-analysis","heatmaps","spatial-data","spatial-data-analysis"],"latest_commit_sha":null,"homepage":"https://pyhd.readthedocs.io/","language":"Python","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/AlexanderJuestel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-09T07:02:56.000Z","updated_at":"2024-09-03T21:18:09.000Z","dependencies_parsed_at":"2023-10-30T16:40:08.761Z","dependency_job_id":"969c852f-5d93-4464-a399-6ca81ac30432","html_url":"https://github.com/AlexanderJuestel/pyheatdemand","commit_stats":{"total_commits":50,"total_committers":2,"mean_commits":25.0,"dds":0.38,"last_synced_commit":"15f2787f7ec4bc5ac1d0d3cfe3df4126de8f8475"},"previous_names":["alexanderjuestel/pyhd","alexanderjuestel/pyheatdemand"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexanderJuestel%2Fpyheatdemand","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexanderJuestel%2Fpyheatdemand/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexanderJuestel%2Fpyheatdemand/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexanderJuestel%2Fpyheatdemand/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexanderJuestel","download_url":"https://codeload.github.com/AlexanderJuestel/pyheatdemand/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242631140,"owners_count":20160830,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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"}},"keywords":["geospatial-data","geospatial-data-analysis","heatmaps","spatial-data","spatial-data-analysis"],"created_at":"2024-10-12T04:45:07.488Z","updated_at":"2025-03-09T01:32:01.617Z","avatar_url":"https://github.com/AlexanderJuestel.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PyHeatDemand - Processing Tool for Heat Demand Data\n\n![PyPI - Version](https://img.shields.io/pypi/v/pyheatdemand)\n![Conda](https://img.shields.io/conda/v/conda-forge/pyheatdemand)\n![GitHub License](https://img.shields.io/github/license/AlexanderJuestel/pyheatdemand)\n![Read the Docs](https://img.shields.io/readthedocs/pyhd)\n![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/AlexanderJuestel/pyheatdemand/workflow.yml)\n[![status](https://joss.theoj.org/papers/05971e44bad3a2bc8f0bdbebc4013515/status.svg)](https://joss.theoj.org/papers/05971e44bad3a2bc8f0bdbebc4013515)\n[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)\n\n\n\n![Fig1](docs/images/PyHD_Logo_long.png)\n\n\u003ca name=\"overview\"\u003e\u003c/a\u003e\n# Overview \nKnowledge about the heat demand (MWh/area/year) of a respective building, district, city, state, country or even on a \ncontinental scale is crucial for an adequate heat demand planning or planning for providing power plant capacities.\n\n**PyHeatDemand** is a Python library for processing spatial data containing local, regional or even national heat demand \ndata. The heat demand data can be provided as Raster, gridded polygon Shapefile, building footprint polygons Shapefile, \nstreet network linestring Shapefile, point Shapefiles representing the heat demand of a single building or an \nadministrative area, and lastly postal addresses provided as CSV files.  \n\nThe package is a continuation of the results of Herbst et al., (2021) within the \n[Interreg NWE project DGE Rollout, NWE 892](http://www.nweurope.eu/DGE-Rollout). E. Herbst and E. Khashfe compiled the \noriginal heat demand map as part of their respective master thesis project at RWTH Aachen University. The final heat \ndemand map is also accessible within the [DGE Rollout Webviewer](https://data.geus.dk/egdi/?mapname=dgerolloutwebtool#baslay=baseMapGEUS\u0026extent=39620,-1581250,8465360,8046630\u0026layers=dge_heat_final).\n\n\n## Documentation\nA documentation page illustrating the functionality of PyHeatDemand is available at https://pyhd.readthedocs.io/en/latest/. \n\nIt also features installation instructions (also see below), tutorials on how to calculate heat demands, and the API Reference. \n\n\u003ca name=\"installation\"\u003e\u003c/a\u003e\n## Installation  \n\nPyHeatDemand is supported for Python version 3.10 and younger. Previous versions are officially not supported.\nIt is recommended to create a new virtual environment using the [Anaconda Distribution](https://www.anaconda.com/download) before using PyHeatDemand.\nThe main dependencies of PyHeatDemand are [GeoPandas](https://geopandas.org/en/stable/\u003e) and [Rasterio](https://rasterio.readthedocs.io/en/stable/) for the vector data and raster data processing, [Matplotlib](https://matplotlib.org/) for plotting,\n[GeoPy](https://geopy.readthedocs.io/en/stable/) for extracting coordinates from addresses, [OSMnx](https://osmnx.readthedocs.io/en/stable/) for getting [OpenStreet Maps](https://www.openstreetmap.org/#map=6/51.330/10.453) building footprints from coordinates,\n[Rasterstats](https://pythonhosted.org/rasterstats/) for analyzing the resulting heat demand maps and more secondary dependencies like [Pandas](https://pandas.pydata.org/), [NumPy](https://numpy.org/), [Shapely](https://shapely.readthedocs.io/en/stable/manual.html), etc.\n\n\n### Installation via PyPi \n\n**PyHeatDemand** can be installed via [PyPi](https://pypi.org/) using:\n\n`pip install pyheatdemand`\n\n### Installation via Anaconda \n\n**PyHeatDemand** is also available from [conda-forge](https://conda-forge.org/):\n\n`conda install -c conda-forge pyheatdemand`\n\n### Installation using YML-file\n\nIt is recommended to use the provided [environment.yml](https://github.com/AlexanderJuestel/pyheatdemand/blob/main/environment.yml) to ensure that all dependencies are installed correctly:\n\n`conda env create -f environment.yml` \n\nMake sure that you have downloaded the environment file in that case.\n\n### Forking or cloning the repository\n\nThe PyHeatDemand repository can be forked or cloned from https://github.com/AlexanderJuestel/pyheatdemand:\n\n`git clone https://github.com/AlexanderJuestel/pyheatdemand.git`\n\nA list of [requirements.txt](https://github.com/AlexanderJuestel/pyheatdemand/blob/main/requirements.txt) and an [environment.yml](https://github.com/AlexanderJuestel/pyheatdemand/blob/main/environment.yml) provide a list of all necessary dependencies to run PyHeatDemand from source.\n\n\n\u003ca name=\"workflow\"\u003e\u003c/a\u003e\n## General Workflow\n\nThe general workflow involves creating a global mask of quadratic polygons (e.g. 10 km x 10 km) covering the entire \nstudied area. This is especially used for larger areas such as states, countries or the Interreg NWE region to subdivide \nthe area into smaller areas. Depending on the size of the input heat demand data, the corresponding underlying global \nmask polygons are selected and the final (e.g. 100 m x 100 m) resolution polygon grid is created. This grid including \nthe input heat demand data is need to calculate the final heat demand map. \n![Fig1](docs/images/fig1.png)\n\nThe actual heat demand data is divided into four categories or data categories:\n* Data Category 1: Heat demand raster data or gridded polygon (vector) data, different scales possible\n* Data Category 2: Heat demand data as vector data; building footprints as polygons, street network as linestrings, \nsingle houses as points\n* Data Category 3: Heat demand as points representative for an administrative area\n* Data Category 4: Other forms of Heat Demand data such as addresses with associated heat demand or heat demand provided\nas usage of other fuels, e.g. gas demand, biomass demand etc.\n\nProcessing steps for Data Types 1 + 2\n![Fig1](docs/images/fig2.png)\n\nProcessing steps for Data Types 3\n![Fig1](docs/images/fig3.png)\n\n## Contribution Guidelines\n\nContributing to PyHeatDemand is as easy as opening issues, reporting bugs, suggesting new features or opening Pull Requests to propose changes.\n\nFor more information on how to contribute, have a look at the [Contribution Guidelines](https://github.com/AlexanderJuestel/pyheatdemand/blob/main/CONTRIBUTING.md). \n\n## Continuous Integration\nA CI is present to test the current code. It can be initiated using `pytest --cov` within the `test` folder. After \nrunning the tests, `coverage report -m` can be executed to get an report on the coverage and which lines are not covered\nby the tests.\n\n## API Reference\nFor creating the API reference, navigate to the `docs` folder and execute `sphinx-apidoc -o source/ ../pyheatdemand`.\n\n\u003ca name=\"ref\"\u003e\u003c/a\u003e\n## References\n\nJüstel, A., Humm, E., Herbst, E., Strozyk, F., Kukla, P., Bracke, R., 2024. Unveiling the Spatial Distribution of Heat \nDemand in North-West-Europe Compiled with National Heat Consumption Data. Energies, 17 (2), 481, \nhttps://doi.org/10.3390/en17020481. \n\nHerbst, E., Khashfe, E., Jüstel, A., Strozyk, F. \u0026 Kukla, P., 2021. A Heat Demand Map of North-West Europe – its impact \non supply areas and identification of potential production areas for deep geothermal energy. GeoKarlsruhe 2021, \nhttp://dx.doi.org/10.48380/dggv-j2wj-nk88. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexanderjuestel%2Fpyheatdemand","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexanderjuestel%2Fpyheatdemand","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexanderjuestel%2Fpyheatdemand/lists"}