{"id":46727,"name":"A high-resolution canopy height model of the Earth","description":"The model estimates canopy top height for every Sentinel-2 image pixel and was trained using sparse GEDI LIDAR data as a reference.","url":"https://github.com/langnico/global-canopy-height-model","last_synced_at":"2026-04-08T19:30:20.339Z","repository":{"id":182547932,"uuid":"651552631","full_name":"langnico/global-canopy-height-model","owner":"langnico","description":"This repository contains the code used in the paper: A high-resolution canopy height model of the Earth. Here, we developed a model to estimate canopy top height anywhere on Earth. The model estimates canopy top height for every Sentinel-2 image pixel and was trained using sparse GEDI LIDAR data as a reference.","archived":false,"fork":false,"pushed_at":"2023-10-13T08:45:40.000Z","size":62,"stargazers_count":180,"open_issues_count":4,"forks_count":35,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-04-05T18:07:22.127Z","etag":null,"topics":["canopy-height-models","deep-learning","ensemble","gedi","sentinel-2","uncertainty"],"latest_commit_sha":null,"homepage":"https://langnico.github.io/globalcanopyheight","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/langnico.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2023-06-09T13:48:27.000Z","updated_at":"2026-04-03T06:46:21.000Z","dependencies_parsed_at":"2024-01-12T05:07:31.315Z","dependency_job_id":null,"html_url":"https://github.com/langnico/global-canopy-height-model","commit_stats":{"total_commits":5,"total_committers":2,"mean_commits":2.5,"dds":"0.19999999999999996","last_synced_commit":"f952ed241a23b7e01283dcb76627de985f7597f8"},"previous_names":["langnico/global-canopy-height-model"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/langnico/global-canopy-height-model","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/langnico%2Fglobal-canopy-height-model","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/langnico%2Fglobal-canopy-height-model/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/langnico%2Fglobal-canopy-height-model/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/langnico%2Fglobal-canopy-height-model/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/langnico","download_url":"https://codeload.github.com/langnico/global-canopy-height-model/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/langnico%2Fglobal-canopy-height-model/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31524531,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"langnico","name":"Nico Lang","uuid":"22356781","kind":"user","description":"","email":"","website":null,"location":"Zurich CH","twitter":null,"company":"ETH Zurich","icon_url":"https://avatars.githubusercontent.com/u/22356781?u=93071a8b5aabfa222218bb0ea9a86bc5db1c53cf\u0026v=4","repositories_count":2,"last_synced_at":"2023-03-11T01:49:05.461Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/langnico","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-03-11T01:49:05.467Z","updated_at":"2023-03-11T01:49:05.467Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/langnico","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/langnico/repositories"},"packages":[],"commits":{"id":1359402,"full_name":"langnico/global-canopy-height-model","default_branch":"main","total_commits":5,"total_committers":2,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":2.5,"dds":0.19999999999999996,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-04-05T18:05:28.876Z","last_synced_commit":"f952ed241a23b7e01283dcb76627de985f7597f8","created_at":"2023-09-13T13:25:05.637Z","updated_at":"2026-04-05T18:05:16.691Z","committers":[{"name":"nlang","email":"nico.lang@geod.baug.ethz.ch","login":null,"count":4},{"name":"Nico Lang","email":"nico.lang.nl@gmail.com","login":"langnico","count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/langnico%2Fglobal-canopy-height-model/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-07T00:00:11.408Z","repositories_count":6211614,"commits_count":918017205,"contributors_count":35583097,"owners_count":1142749,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"langnico/global-canopy-height-model","html_url":"https://github.com/langnico/global-canopy-height-model","last_synced_at":"2026-03-20T10:01:21.577Z","status":"error","issues_count":8,"pull_requests_count":0,"avg_time_to_close_issue":3455484.0,"avg_time_to_close_pull_request":null,"issues_closed_count":4,"pull_requests_closed_count":0,"pull_request_authors_count":0,"issue_authors_count":6,"avg_comments_per_issue":1.0,"avg_comments_per_pull_request":null,"merged_pull_requests_count":0,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":1736188.0,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-09-13T13:25:07.062Z","updated_at":"2026-03-20T10:01:21.578Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/langnico%2Fglobal-canopy-height-model","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/langnico%2Fglobal-canopy-height-model/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":8},"pull_request_author_associations_count":{},"issue_authors":{"Rur1sama":3,"andreibrinzea":1,"CarlosGomes98":1,"ftong123":1,"ezekielbarnett":1,"oguzhannysr":1},"pull_request_authors":{},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-22T00:00:10.760Z","repositories_count":13864634,"issues_count":34688848,"pull_requests_count":113286307,"authors_count":11208269,"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":{"NONE":1},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{"andreibrinzea":1},"past_year_pull_request_authors":{},"maintainers":[],"active_maintainers":[]},"events":{"total":{"ForkEvent":6,"IssuesEvent":2,"WatchEvent":41},"last_year":{"ForkEvent":1,"IssuesEvent":1,"WatchEvent":17}},"keywords":["canopy-height-models","deep-learning","ensemble","gedi","sentinel-2","uncertainty"],"dependencies":[{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2023-07-26T01:00:17.103Z","updated_at":"2023-07-26T01:00:17.103Z","repository_link":"https://github.com/langnico/global-canopy-height-model/blob/main/requirements.txt","dependencies":[{"id":12024336645,"package_name":"tables","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":12024336646,"package_name":"ipython","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":12024336647,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":12024336648,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":12024336649,"package_name":"wandb","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":12024336650,"package_name":"pathlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":12024336651,"package_name":"tqdm","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":12024336652,"package_name":"botocore","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":12024336653,"package_name":"urllib3","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":12024336654,"package_name":"sentinelhub","ecosystem":"pypi","requirements":"==3.9.0","direct":true,"kind":"runtime","optional":false},{"id":12024336655,"package_name":"scikit-image","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":12024336656,"package_name":"typing","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":12024336657,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":12024336658,"package_name":"tensorboard","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2023-07-26T01:00:17.599Z","updated_at":"2023-07-26T01:00:17.599Z","repository_link":"https://github.com/langnico/global-canopy-height-model/blob/main/setup.py","dependencies":[]},{"ecosystem":"pypi","filepath":"environment.yml","sha":null,"kind":"manifest","created_at":"2024-01-12T05:07:31.253Z","updated_at":"2024-01-12T05:07:31.253Z","repository_link":"https://github.com/langnico/global-canopy-height-model/blob/main/environment.yml","dependencies":[]}],"score":5.908082938168931,"created_at":"2023-09-13T12:38:42.701Z","updated_at":"2026-04-08T19:30:20.341Z","avatar_url":"https://github.com/langnico.png","language":"Python","category":"Biosphere","sub_category":"Forest Modeling and Analysis","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# A high-resolution canopy height model of the Earth\n\nThis repository contains the code used to create the results presented in the paper: [A high-resolution canopy height model of the Earth](https://arxiv.org/abs/2204.08322).\nHere, we developed a model to estimate canopy top height anywhere on Earth. The model estimates canopy top height for every Sentinel-2 image pixel and was trained using sparse GEDI LIDAR data as a reference.\n\nSee our [project page](https://langnico.github.io/globalcanopyheight) for an interactive [demo](https://nlang.users.earthengine.app/view/global-canopy-height-2020) and more information.\n\n## Table of Contents\n1. [Data availability](https://github.com/langnico/global-canopy-height-model#data-availability)\n2. [Installation and credentials](https://github.com/langnico/global-canopy-height-model#installation-and-credentials)\n3. [Loading the model](https://github.com/langnico/global-canopy-height-model#loading-the-model)\n4. [Deploying](https://github.com/langnico/global-canopy-height-model#deploying)\n5. [Training](https://github.com/langnico/global-canopy-height-model#training)\n6. [ALS preprocessing for independent comparison](https://github.com/langnico/global-canopy-height-model#als-preprocessing-for-independent-comparison)\n7. [Citation](https://github.com/langnico/global-canopy-height-model#citation)\n\n## Data availability\nThis is a summary of all the published data:\n\n- Global canopy top height map for 2020 ([ETH Research Collection](https://doi.org/10.3929/ethz-b-000609802))\n- Train-val dataset ([ETH Research Collection](https://doi.org/10.3929/ethz-b-000609845))\n- Rasterized canopy top height models from airborne lidar ([Zenodo](https://doi.org/10.5281/zenodo.7885699))\n- Trained model weights ([Github release](https://github.com/langnico/global-canopy-height-model/releases/download/v1.0-trained-model-weights/trained_models_GLOBAL_GEDI_2019_2020.zip))\n- Demo data for example scripts ([Zenodo](https://doi.org/10.5281/zenodo.7885610))\n- Sparse GEDI canopy top height data ([Zenodo](https://doi.org/10.5281/zenodo.7737946))\n- ESA WorldCover 10 m 2020 v100 reprojected to Sentinel-2 tiles ([Zenodo](https://doi.org/10.5281/zenodo.7888150))\n\n## Installation and credentials\nPlease follow the instructions in [INSTALL.md](INSTALL.md).\n\n## Loading the model \n\n```python\nfrom gchm.models.xception_sentinel2 import xceptionS2_08blocks_256\n# load the model with random initialization\nmodel = xceptionS2_08blocks_256()\n```\nPlease see the [example notebook](gchm/notebooks/example_loading_pretrained_models.ipynb) on how to load the model with the trained weights. \n\n## Deploying\n\nThis is a demo how to run the trained ensemble to compute the canopy height map for a Sentinel-2 tile (approx. 100 km x 100 km).\n\n### Preparation:\n1. Download the demo data which contains Sentinel-2 images for one tile: \n    ```\n    bash gchm/bash/download_demo_data.sh ./\n    ```\n   This creates the following directory:\n    ```\n    deploy_example/\n    ├── ESAworldcover\n    │   └── 2020\n    │       └── sentinel2_tiles\n    │           └── ESA_WorldCover_10m_2020_v100_32TMT.tif\n    ├── image_paths\n    │   └── 2020\n    │       └── 32TMT.txt\n    ├── image_paths_logs\n    │   └── 2020\n    ├── predictions_provided\n    │   ├── 2020\n    │   │   ├── S2A_MSIL2A_20200623T103031_N0214_R108_T32TMT_20200623T142851_predictions.tif\n    │   │   ├── S2A_MSIL2A_20200623T103031_N0214_R108_T32TMT_20200623T142851_std.tif\n    │   │   ├── ...\n    │   ├── 2020_merge\n    │   │   └── preds_inv_var_mean\n    │   │       ├── 32TMT_pred.tif\n    │   │       └── 32TMT_std.tif\n    │   └── 2020_merge_logs\n    │       └── preds_inv_var_mean\n    │           └── 32TMT.txt\n    ├── sentinel2\n    │   └── 2020\n    │       ├── S2A_MSIL2A_20200623T103031_N0214_R108_T32TMT_20200623T142851.zip\n    │       ├── ...\n    └── sentinel2_aws\n        └── 2020\n    ```\n2. Download the trained model weights:\n    ```\n    bash gchm/bash/download_trained_models.sh ./trained_models\n    ```\n   \n    This creates the following directory:\n    \n    ```\n    trained_models/\n    └── GLOBAL_GEDI_2019_2020\n        ├── model_0\n        │   ├── FT_Lm_SRCB\n        │   │   ├── args.json\n        │   │   ├── checkpoint.pt\n        │   │   ├── train_input_mean.npy\n        │   │   ├── train_input_std.npy\n        │   │   ├── train_target_mean.npy\n        │   │   └── train_target_std.npy\n        │   ├── args.json\n        │   ├── checkpoint.pt\n        │   ├── train_input_mean.npy\n        │   ├── train_input_std.npy\n        │   ├── train_target_mean.npy\n        │   └── train_target_std.npy\n        ├── model_1\n        │   ├── ...\n        ├── model_2\n        │   ├── ...\n        ├── model_3\n        │   ├── ...\n        ├── model_4\n        │   ├── ...\n    ```\n   The checkpoint.pt files contain the model weights. The subdirectories `FT_Lm_SRCB` contain the models finetuned with a re-weighted loss function.\n            \n### Deploy example for a single Sentinel-2 image\nThis [demo script](gchm/bash/deploy_example.sh) processes a single image (from the year 2020) for the tile \"32TMT\" in Switzerland. Run: \n```\nbash gchm/bash/deploy_example.sh\n```\n\n### Deploy and merge example for multiple images of a Sentinel-2 tile\nThis [demo script](gchm/bash/run_tile_deploy_merge.sh) processes 10 images (from the year 2020) for the tile \"32TMT\" in Switzerland and aggregates the individual per-image maps to a final annual map.\n\nProvide a text file with the image filenames per tile saved as `${TILE_NAME}.txt`. The demo data contains the following file: \n```\ncat ./deploy_example/image_paths/2020/32TMT.txt \nS2A_MSIL2A_20200623T103031_N0214_R108_T32TMT_20200623T142851.zip\nS2A_MSIL2A_20200723T103031_N0214_R108_T32TMT_20200723T142801.zip\nS2A_MSIL2A_20200812T103031_N0214_R108_T32TMT_20200812T131334.zip\n...\n```\nThe corresponding images are stored in `./deploy_example/sentinel2/2020/`.\n\n\n1. Set the paths in `gchm/bash/config.sh`\n2. Set the tile_name in `gchm/bash/run_tile_deploy_merge.sh`\n3. Run the script:\n    ```\n    bash gchm/bash/run_tile_deploy_merge.sh\n    ```\n\n#### Note on ESA World Cover post-processing: \nThe ESA WorldCover 10 m 2020 v100 reprojected to Sentinel-2 tiles is available on [Zenodo](https://doi.org/10.5281/zenodo.7888150). \nWe apply minimal post-processing and mask out built-up areas, snow,\n ice and permanent water bodies, setting their canopy height to ”no data” (value: 255). See the script [here](gchm/postprocess/mask_with_ESAworldcover.py).\n\n#### Note on AWS: \nSentinel-2 images can be downloaded on the fly from AWS S3 by setting `GCHM_DOWNLOAD_FROM_AWS=\"True\"` \nand providing the AWS credentials as described above. \nThis was tested for 2020 data, but might need some update in the sentinelhub routine to handle newer versions.\n\n\n## Training\n\n### Data preparation\n1. Download the train-val h5 datasets from [here](https://doi.org/10.3929/ethz-b-000609845).\n2. Merge the parts file to a single `train.h5` and `val.h5` by running this [script](gchm/preprocess/run_merge_h5_files_per_split.sh). \n   Before running it, set the variables `in_h5_dir_parts` and `out_h5_dir` to your paths. Then run:\n    ```\n    bash gchm/preprocess/run_merge_h5_files_per_split.sh`\n    ```\n\n### Running the training script\nA [slurm training script](gchm/bash/run_training.sh) is provided and submitted as follows.\nBefore submitting, set the variable `CODE_PATH` at the top of the script and set the paths in `gchm/bash/config.sh`. Then run:\n```\nsbatch \u003c gchm/bash/run_training.sh\n```\n\n## ALS preprocessing for independent comparison\n\nIn cases where rastered high-resolution canopy height models are available (e.g. from airborne LIDAR campaigns) for independent evaluation, some preprocessing steps are required to \nmake the data comparable to GEDI canopy top height estimates corresponding to the canopy top within a 25 meter footprint.\n\n1. A rastered canopy height model with a 1m GSD should be created (E.g. using `gdalwarp`).\n2. The 1m canopy height model can then be processed with a circular max pooling operation to approximate \"GEDI-like\" canopy top heights. This step is provided as a [pytorch implementation](gchm/preprocess/ALS_maxpool_GEDI_footprint.py).\n\n**Example**:\nDownload the example CHM at 1m GSD from [here](https://zenodo.org/record/7885610/files/ALS_example_CTHM_GSD1m.tif). Then run: \n```\npython3 gchm/preprocess/ALS_maxpool_GEDI_footprint.py \"path/to/input/tif\" \"path/to/output/tif\"\n```\n\n## Citation\n\nPlease cite our paper if you use this code or any of the provided data.\n\nLang, N., Jetz, W., Schindler, K., \u0026 Wegner, J. D. (2023). A high-resolution canopy height model of the Earth. Nature Ecology \u0026 Evolution, 1-12.\n```\n@article{lang2023high,\n  title={A high-resolution canopy height model of the Earth},\n  author={Lang, Nico and Jetz, Walter and Schindler, Konrad and Wegner, Jan Dirk},\n  journal={Nature Ecology \\\u0026 Evolution},\n  pages={1--12},\n  year={2023},\n  publisher={Nature Publishing Group UK London}\n}\n```\n\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.3929/ethz-b-000609802","https://doi.org/10.3929/ethz-b-000609845","https://doi.org/10.5281/zenodo.7885699","https://doi.org/10.5281/zenodo.7885610","https://doi.org/10.5281/zenodo.7737946","https://doi.org/10.5281/zenodo.7888150"],"works":{"https://doi.org/10.3929/ethz-b-000609802":null,"https://doi.org/10.3929/ethz-b-000609845":null,"https://doi.org/10.5281/zenodo.7885699":null,"https://doi.org/10.5281/zenodo.7885610":null,"https://doi.org/10.5281/zenodo.7737946":null,"https://doi.org/10.5281/zenodo.7888150":{"id":"https://openalex.org/W4379879078","doi":"https://doi.org/10.5281/zenodo.7888150","title":"ESA WorldCover 10 m 2020 v100 reprojected to the Sentinel-2 UTM Tiling Grid","display_name":"ESA WorldCover 10 m 2020 v100 reprojected to the Sentinel-2 UTM Tiling Grid","publication_year":2023,"publication_date":"2023-05-02","ids":{"openalex":"https://openalex.org/W4379879078","doi":"https://doi.org/10.5281/zenodo.7888150"},"language":"en","primary_location":{"is_oa":false,"landing_page_url":"https://zenodo.org/record/7888150","pdf_url":null,"source":{"id":"https://openalex.org/S4306400562","display_name":"Zenodo (CERN European Organization for Nuclear Research)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"host_organization":"https://openalex.org/I67311998","host_organization_name":"European Organization for Nuclear Research","host_organization_lineage":["https://openalex.org/I67311998"],"host_organization_lineage_names":["European Organization for Nuclear Research"],"type":"repository"},"license":null,"version":null,"is_accepted":false,"is_published":false},"type":"article","type_crossref":"journal-article","open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5048243105","display_name":"Nico Lang","orcid":"https://orcid.org/0000-0001-8434-027X"},"institutions":[{"id":"https://openalex.org/I35440088","display_name":"ETH Zurich","ror":"https://ror.org/05a28rw58","country_code":"CH","type":"education","lineage":["https://openalex.org/I2799323385","https://openalex.org/I35440088"]}],"countries":["CH"],"is_corresponding":false,"raw_author_name":"Lang, Nico","raw_affiliation_string":"ETH Zürich","raw_affiliation_strings":["ETH Zürich"]},{"author_position":"middle","author":{"id":"https://openalex.org/A5005404030","display_name":"Konrad Schindler","orcid":"https://orcid.org/0000-0002-3172-9246"},"institutions":[{"id":"https://openalex.org/I35440088","display_name":"ETH Zurich","ror":"https://ror.org/05a28rw58","country_code":"CH","type":"education","lineage":["https://openalex.org/I2799323385","https://openalex.org/I35440088"]}],"countries":["CH"],"is_corresponding":false,"raw_author_name":"Schindler, Konrad","raw_affiliation_string":"ETH Zürich","raw_affiliation_strings":["ETH Zürich"]},{"author_position":"last","author":{"id":"https://openalex.org/A5071121905","display_name":"Jan Dirk Wegner","orcid":"https://orcid.org/0000-0002-0290-6901"},"institutions":[{"id":"https://openalex.org/I35440088","display_name":"ETH Zurich","ror":"https://ror.org/05a28rw58","country_code":"CH","type":"education","lineage":["https://openalex.org/I2799323385","https://openalex.org/I35440088"]},{"id":"https://openalex.org/I202697423","display_name":"University of Zurich","ror":"https://ror.org/02crff812","country_code":"CH","type":"education","lineage":["https://openalex.org/I202697423"]}],"countries":["CH"],"is_corresponding":false,"raw_author_name":"Wegner, Jan Dirk","raw_affiliation_string":"ETH Zürich and University of Zurich","raw_affiliation_strings":["ETH Zürich and University of Zurich"]}],"countries_distinct_count":1,"institutions_distinct_count":2,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"has_fulltext":false,"cited_by_count":1,"cited_by_percentile_year":{"min":87,"max":94},"biblio":{"volume":null,"issue":null,"first_page":null,"last_page":null},"is_retracted":false,"is_paratext":false,"keywords":[{"keyword":"grid","score":0.3261},{"keyword":"v100","score":0.3077}],"concepts":[{"id":"https://openalex.org/C187691185","wikidata":"https://www.wikidata.org/wiki/Q2020720","display_name":"Grid","level":2,"score":0.51588666},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.46403408},{"id":"https://openalex.org/C205649164","wikidata":"https://www.wikidata.org/wiki/Q1071","display_name":"Geography","level":0,"score":0.21976203},{"id":"https://openalex.org/C13280743","wikidata":"https://www.wikidata.org/wiki/Q131089","display_name":"Geodesy","level":1,"score":0.09305021}],"mesh":[],"locations_count":1,"locations":[{"is_oa":false,"landing_page_url":"https://zenodo.org/record/7888150","pdf_url":null,"source":{"id":"https://openalex.org/S4306400562","display_name":"Zenodo (CERN European Organization for Nuclear Research)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"host_organization":"https://openalex.org/I67311998","host_organization_name":"European Organization for Nuclear Research","host_organization_lineage":["https://openalex.org/I67311998"],"host_organization_lineage_names":["European Organization for Nuclear Research"],"type":"repository"},"license":null,"version":null,"is_accepted":false,"is_published":false}],"best_oa_location":null,"sustainable_development_goals":[{"id":"https://metadata.un.org/sdg/13","display_name":"Climate action","score":0.56},{"id":"https://metadata.un.org/sdg/9","display_name":"Industry, innovation and infrastructure","score":0.17},{"id":"https://metadata.un.org/sdg/7","display_name":"Affordable and clean energy","score":0.15},{"id":"https://metadata.un.org/sdg/11","display_name":"Sustainable cities and communities","score":0.13}],"grants":[],"referenced_works_count":0,"referenced_works":[],"related_works":["https://openalex.org/W2380963126","https://openalex.org/W2466597139","https://openalex.org/W1559336379","https://openalex.org/W2352349437","https://openalex.org/W2805391225","https://openalex.org/W1526139532","https://openalex.org/W129091060","https://openalex.org/W2348896848","https://openalex.org/W2508385741","https://openalex.org/W2389875415"],"ngrams_url":"https://api.openalex.org/works/W4379879078/ngrams","abstract_inverted_index":null,"cited_by_api_url":"https://api.openalex.org/works?filter=cites:W4379879078","counts_by_year":[{"year":2023,"cited_by_count":1}],"updated_date":"2023-12-14T02:36:54.787294","created_date":"2023-06-09"}},"citation_counts":{"https://doi.org/10.5281/zenodo.7888150":1},"total_citations":1,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/46727","html_url":"https://ost.ecosyste.ms/projects/46727"}