{"id":319424,"name":"pytreedb","description":"A Python software package providing an object-based library to provide a simple database interface and REST API of vegetation tree objects that were captured as 3D point clouds.","url":"https://github.com/3dgeo-heidelberg/pytreedb","last_synced_at":"2026-05-20T23:30:42.642Z","repository":{"id":37005069,"uuid":"470986923","full_name":"3dgeo-heidelberg/pytreedb","owner":"3dgeo-heidelberg","description":"Python package providing a file and object-based database to store tree objects.","archived":false,"fork":false,"pushed_at":"2025-03-28T09:09:45.000Z","size":69093,"stargazers_count":41,"open_issues_count":5,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-26T18:57:25.713Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pytreedb.geog.uni-heidelberg.de/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/3dgeo-heidelberg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":null,"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,"zenodo":null}},"created_at":"2022-03-17T12:33:55.000Z","updated_at":"2025-10-20T09:33:49.000Z","dependencies_parsed_at":"2025-02-07T13:37:54.146Z","dependency_job_id":"3a231a1c-7d98-47de-bae3-6406e6d53a45","html_url":"https://github.com/3dgeo-heidelberg/pytreedb","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/3dgeo-heidelberg/pytreedb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3dgeo-heidelberg","download_url":"https://codeload.github.com/3dgeo-heidelberg/pytreedb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281592584,"owners_count":26527518,"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","status":"online","status_checked_at":"2025-10-29T02:00:06.901Z","response_time":59,"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":"3dgeo-heidelberg","name":"3DGeo Research Group, Heidelberg University","uuid":"75726016","kind":"organization","description":"The 3DGeo Research Group investigates and develops computational methods for the geographic analysis of 3D/4D point clouds. ","email":null,"website":"https://uni-heidelberg.de/3dgeo","location":"Heidelberg, DE","twitter":"3DGeoHD","company":null,"icon_url":"https://avatars.githubusercontent.com/u/75726016?v=4","repositories_count":6,"last_synced_at":"2023-03-03T19:43:15.552Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/3dgeo-heidelberg","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T05:07:56.157Z","updated_at":"2023-03-03T19:43:15.556Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3dgeo-heidelberg","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3dgeo-heidelberg/repositories"},"packages":[{"id":5907982,"name":"pytreedb","ecosystem":"pypi","description":"python library for tree database management and access","homepage":null,"licenses":"(L)GPL License","normalized_licenses":["xpp"],"repository_url":"https://github.com/3dgeo-heidelberg/pytreedb","keywords_array":[],"namespace":null,"versions_count":3,"first_release_published_at":"2023-01-19T13:32:26.000Z","latest_release_published_at":"2023-01-19T13:32:26.000Z","latest_release_number":"1.0.0","last_synced_at":"2025-10-29T20:15:09.289Z","created_at":"2023-01-19T13:48:16.719Z","updated_at":"2025-10-29T20:15:09.290Z","registry_url":"https://pypi.org/project/pytreedb/","install_command":"pip install pytreedb --index-url https://pypi.org/simple","documentation_url":"https://pytreedb.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)","License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)","Operating System :: OS Independent","Programming Language :: Python :: 3"],"normalized_name":"pytreedb","project_status":null},"repo_metadata":{"id":37005069,"uuid":"470986923","full_name":"3dgeo-heidelberg/pytreedb","owner":"3dgeo-heidelberg","description":"Python package providing a file and object-based database to store tree objects.","archived":false,"fork":false,"pushed_at":"2025-03-28T09:09:45.000Z","size":69093,"stargazers_count":42,"open_issues_count":5,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-19T07:39:17.008Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pytreedb.geog.uni-heidelberg.de/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/3dgeo-heidelberg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":null,"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,"zenodo":null}},"created_at":"2022-03-17T12:33:55.000Z","updated_at":"2025-09-20T11:05:08.000Z","dependencies_parsed_at":"2025-02-07T13:37:54.146Z","dependency_job_id":"3a231a1c-7d98-47de-bae3-6406e6d53a45","html_url":"https://github.com/3dgeo-heidelberg/pytreedb","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/3dgeo-heidelberg/pytreedb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3dgeo-heidelberg","download_url":"https://codeload.github.com/3dgeo-heidelberg/pytreedb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280729313,"owners_count":26380964,"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","status":"online","status_checked_at":"2025-10-24T02:00:06.418Z","response_time":73,"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_record":{"login":"3dgeo-heidelberg","name":"3DGeo Research Group, Heidelberg University","uuid":"75726016","kind":"organization","description":"The 3DGeo Research Group investigates and develops computational methods for the geographic analysis of 3D/4D point clouds. ","email":null,"website":"https://uni-heidelberg.de/3dgeo","location":"Heidelberg, DE","twitter":"3DGeoHD","company":null,"icon_url":"https://avatars.githubusercontent.com/u/75726016?v=4","repositories_count":6,"last_synced_at":"2023-03-03T19:43:15.552Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/3dgeo-heidelberg","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T05:07:56.157Z","updated_at":"2023-03-03T19:43:15.556Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3dgeo-heidelberg","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3dgeo-heidelberg/repositories"},"tags":[{"name":"v1.0.0","sha":"9fe04e4a4ead4cb02947491f4cd80ad5db8777e6","kind":"commit","published_at":"2023-01-19T13:11:14.000Z","download_url":"https://codeload.github.com/3dgeo-heidelberg/pytreedb/tar.gz/v1.0.0","html_url":"https://github.com/3dgeo-heidelberg/pytreedb/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/3dgeo-heidelberg/pytreedb@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb/tags/v1.0.0/manifests"}]},"repo_metadata_updated_at":"2025-10-24T03:13:45.536Z","dependent_packages_count":0,"downloads":22,"downloads_period":"last-month","dependent_repos_count":0,"rankings":{"downloads":13.628003456464437,"dependent_repos_count":30.61104109666564,"dependent_packages_count":6.633233862033089,"stargazers_count":null,"forks_count":null,"average":16.95742613838772},"purl":"pkg:pypi/pytreedb","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/pytreedb","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/pytreedb","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/pytreedb/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-09-29T12:44:09.550Z","issues_count":48,"pull_requests_count":58,"avg_time_to_close_issue":2772878.1627906975,"avg_time_to_close_pull_request":309766.1785714286,"issues_closed_count":43,"pull_requests_closed_count":56,"pull_request_authors_count":5,"issue_authors_count":8,"avg_comments_per_issue":1.4583333333333333,"avg_comments_per_pull_request":0.29310344827586204,"merged_pull_requests_count":55,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":13,"past_year_avg_time_to_close_issue":2788972.6,"past_year_avg_time_to_close_pull_request":100663.90909090909,"past_year_issues_closed_count":5,"past_year_pull_requests_closed_count":11,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.3333333333333333,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":11,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb/issues","maintainers":[{"login":"han16nah","count":60,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/han16nah"},{"login":"lwiniwar","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/lwiniwar"},{"login":"JannikaSchaefer","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/JannikaSchaefer"},{"login":"momueller2","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/momueller2"}],"active_maintainers":[{"login":"han16nah","count":16,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/han16nah"},{"login":"momueller2","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/momueller2"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pytreedb/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pytreedb/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pytreedb/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pytreedb/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pytreedb/codemeta","maintainers":[{"uuid":"3dgeo","login":"3dgeo","name":null,"email":null,"url":null,"packages_count":3,"html_url":"https://pypi.org/user/3dgeo/","role":null,"created_at":"2023-02-26T05:53:35.163Z","updated_at":"2023-02-26T05:53:35.163Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/3dgeo/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":745764,"maintainers_count":316549,"namespaces_count":0,"keywords_count":245871,"github":"pypi","metadata":{"funded_packages_count":52290},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-10-29T05:45:24.783Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}}],"commits":{"id":10466532,"full_name":"3dgeo-heidelberg/pytreedb","default_branch":"main","total_commits":623,"total_committers":14,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":44.5,"dds":0.6243980738362761,"past_year_total_commits":9,"past_year_total_committers":2,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":4.5,"past_year_dds":0.2222222222222222,"last_synced_at":"2025-10-24T11:58:29.455Z","last_synced_commit":"dffb7c0db565a8192682b64bd7da6f10d54dd06b","created_at":"2025-06-26T00:13:04.137Z","updated_at":"2025-10-24T11:57:11.516Z","committers":[{"name":"han16nah","email":"han_nah@mailbox.org","login":"han16nah","count":234},{"name":"[Jiani","email":"jiani.qu@uni-heidelberg.de","login":null,"count":222},{"name":"Bernhard Höfle","email":"hoefle@uni-heidelberg.de","login":"bhoefle-3dgeo","count":67},{"name":"Lukas Winiwarter","email":"lukas.winiwarter@uni-heidelberg.de","login":"lwiniwar","count":31},{"name":"bhoefle-3dgeo","email":"bhoefle@nb-5786.geog.uni-heidelberg.de","login":null,"count":24},{"name":"Lukas Winiwarter","email":"lukas.winiwarter@gmx.at","login":"Geogem","count":17},{"name":"Hannah Weiser","email":"h.weiser@stud.uni-heidelberg.de","login":null,"count":10},{"name":"annachiu7","email":"qujiani7879@gmail.com","login":"annachiu7","count":6},{"name":"ep413","email":"zahs@uni-heidelberg.de","login":"vivienzahs","count":4},{"name":"Lukas Winiwarter","email":"lwiniwarter@syssifoss.geog.uni-heidelberg.de","login":null,"count":3},{"name":"momueller2","email":"87985222+momueller2","login":"momueller2","count":2},{"name":"geogem","email":"lukaswiniwarter@gmx.at","login":"stargis","count":1},{"name":"Lukas Winiwarter","email":"winiwarter@uni-heidelberg.de","login":null,"count":1},{"name":"Bernhard Höfle","email":"bhoefle@syssifoss.geog.uni-heidelberg.de","login":null,"count":1}],"past_year_committers":[{"name":"han16nah","email":"41050948+han16nah","login":"han16nah","count":7},{"name":"momueller2","email":"87985222+momueller2","login":"momueller2","count":2}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-10-24T00:00:23.375Z","repositories_count":6087122,"commits_count":922303094,"contributors_count":35997990,"owners_count":1108838,"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":"3dgeo-heidelberg/pytreedb","html_url":"https://github.com/3dgeo-heidelberg/pytreedb","last_synced_at":"2025-10-29T08:58:54.709Z","status":"error","issues_count":48,"pull_requests_count":58,"avg_time_to_close_issue":2772878.1627906975,"avg_time_to_close_pull_request":309766.1785714286,"issues_closed_count":43,"pull_requests_closed_count":56,"pull_request_authors_count":5,"issue_authors_count":8,"avg_comments_per_issue":1.4583333333333333,"avg_comments_per_pull_request":0.29310344827586204,"merged_pull_requests_count":55,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":13,"past_year_avg_time_to_close_issue":2788972.6,"past_year_avg_time_to_close_pull_request":100663.90909090909,"past_year_issues_closed_count":5,"past_year_pull_requests_closed_count":11,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.3333333333333333,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":11,"created_at":"2025-06-26T00:13:05.210Z","updated_at":"2025-10-29T08:58:54.709Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/3dgeo-heidelberg%2Fpytreedb/issues","issue_labels_count":{"enhancement":2,"release":1,"bug":1},"pull_request_labels_count":{},"issue_author_associations_count":{"CONTRIBUTOR":23,"COLLABORATOR":22,"NONE":3},"pull_request_author_associations_count":{"COLLABORATOR":52,"CONTRIBUTOR":8},"issue_authors":{"han16nah":15,"bhoefle-3dgeo":14,"annachiu7":8,"JannikaSchaefer":4,"lwiniwar":3,"wiesehahn":2,"ArashJavan":1,"vivienzahs":1},"pull_request_authors":{"han16nah":45,"annachiu7":7,"momueller2":4,"lwiniwar":3,"bhoefle-3dgeo":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-10-29T00:00:18.463Z","repositories_count":11243475,"issues_count":34945556,"pull_requests_count":113355275,"authors_count":11042044,"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":{"COLLABORATOR":6},"past_year_pull_request_author_associations_count":{"COLLABORATOR":14},"past_year_issue_authors":{"han16nah":6},"past_year_pull_request_authors":{"han16nah":10,"momueller2":4},"maintainers":[{"login":"han16nah","count":60,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/han16nah"},{"login":"lwiniwar","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/lwiniwar"},{"login":"JannikaSchaefer","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/JannikaSchaefer"},{"login":"momueller2","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/momueller2"}],"active_maintainers":[{"login":"han16nah","count":16,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/han16nah"},{"login":"momueller2","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/momueller2"}]},"events":{"total":{"IssuesEvent":9,"WatchEvent":9,"DeleteEvent":7,"IssueCommentEvent":3,"MemberEvent":2,"PushEvent":34,"PullRequestEvent":12,"CreateEvent":7},"last_year":{"IssuesEvent":9,"WatchEvent":7,"DeleteEvent":7,"IssueCommentEvent":3,"MemberEvent":2,"PushEvent":34,"PullRequestEvent":12,"CreateEvent":7}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"doc/requirements.txt","sha":null,"kind":"manifest","created_at":"2023-02-19T16:31:27.575Z","updated_at":"2023-02-19T16:31:27.575Z","repository_link":"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/doc/requirements.txt","dependencies":[{"id":7792402257,"package_name":"sphinx","ecosystem":"pypi","requirements":"\u003e=4.3.0","direct":true,"kind":"runtime","optional":false},{"id":7792402258,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"\u003e=0.5.1","direct":true,"kind":"runtime","optional":false},{"id":7792402259,"package_name":"myst-parser","ecosystem":"pypi","requirements":"==0.18.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/python-app.yml","sha":null,"kind":"manifest","created_at":"2023-01-17T13:01:34.239Z","updated_at":"2023-01-17T13:01:34.239Z","repository_link":"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/.github/workflows/python-app.yml","dependencies":[{"id":6993768791,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":6993768795,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":6993768798,"package_name":"supercharge/mongodb-github-action","ecosystem":"actions","requirements":"1.7.0","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/python-publish.yml","sha":null,"kind":"manifest","created_at":"2023-01-17T13:01:34.353Z","updated_at":"2023-01-17T13:01:34.353Z","repository_link":"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/.github/workflows/python-publish.yml","dependencies":[{"id":6993771655,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":6993771658,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6993771660,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6993771662,"package_name":"actions/download-artifact","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6993771663,"package_name":"supercharge/mongodb-github-action","ecosystem":"actions","requirements":"1.7.0","direct":true,"kind":"composite","optional":false},{"id":6993771665,"package_name":"pypa/gh-action-pypi-publish","ecosystem":"actions","requirements":"master","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2023-01-17T13:01:35.009Z","updated_at":"2023-01-17T13:01:35.009Z","repository_link":"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/requirements.txt","dependencies":[{"id":6993780511,"package_name":"flask","ecosystem":"pypi","requirements":"==2.1.2","direct":true,"kind":"runtime","optional":false},{"id":6993780512,"package_name":"notebook","ecosystem":"pypi","requirements":"==6.4.12","direct":true,"kind":"runtime","optional":false},{"id":6993780513,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.23.0","direct":true,"kind":"runtime","optional":false},{"id":6993780514,"package_name":"pymongo","ecosystem":"pypi","requirements":"==4.1.1","direct":true,"kind":"runtime","optional":false},{"id":6993780515,"package_name":"python-dotenv","ecosystem":"pypi","requirements":"==0.20.0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"requirements_dev.txt","sha":null,"kind":"manifest","created_at":"2023-01-17T13:01:35.127Z","updated_at":"2023-01-17T13:01:35.127Z","repository_link":"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/requirements_dev.txt","dependencies":[{"id":6993782800,"package_name":"pytest","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":6993782801,"package_name":"sphinx","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":6993782802,"package_name":"myst-parser","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":6993782803,"package_name":"sphinxcontrib-napoleon","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":6993782804,"package_name":"pre-commit","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":6993782805,"package_name":"flake8","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":6993782806,"package_name":"flake8_nb","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":6993782807,"package_name":"requests","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false}]},{"ecosystem":"pypi","filepath":"requirements_nb_vis.txt","sha":null,"kind":"manifest","created_at":"2023-01-17T13:01:35.320Z","updated_at":"2023-01-17T13:01:35.320Z","repository_link":"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/requirements_nb_vis.txt","dependencies":[{"id":6993783411,"package_name":"flask","ecosystem":"pypi","requirements":"==2.1.2","direct":true,"kind":"runtime","optional":false},{"id":6993783412,"package_name":"folium","ecosystem":"pypi","requirements":"==0.12.1.post1","direct":true,"kind":"runtime","optional":false},{"id":6993783419,"package_name":"laspy","ecosystem":"pypi","requirements":"==2.1.2","direct":true,"kind":"runtime","optional":false},{"id":6993783422,"package_name":"matplotlib","ecosystem":"pypi","requirements":"==3.5.2","direct":true,"kind":"runtime","optional":false},{"id":6993783424,"package_name":"notebook","ecosystem":"pypi","requirements":"==6.4.12","direct":true,"kind":"runtime","optional":false},{"id":6993783426,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.23.0","direct":true,"kind":"runtime","optional":false},{"id":6993783428,"package_name":"pymongo","ecosystem":"pypi","requirements":"==4.1.1","direct":true,"kind":"runtime","optional":false},{"id":6993783430,"package_name":"python-dotenv","ecosystem":"pypi","requirements":"==0.20.0","direct":true,"kind":"runtime","optional":false},{"id":6993783432,"package_name":"shapely","ecosystem":"pypi","requirements":"==1.8.2","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2024-01-18T23:50:01.592Z","updated_at":"2024-01-18T23:50:01.592Z","repository_link":"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/pyproject.toml","dependencies":[]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2024-01-18T23:50:01.610Z","updated_at":"2024-01-18T23:50:01.610Z","repository_link":"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/setup.py","dependencies":[]},{"ecosystem":"pypi","filepath":"webserver/pyproject.toml","sha":null,"kind":"manifest","created_at":"2024-01-18T23:50:01.620Z","updated_at":"2024-01-18T23:50:01.620Z","repository_link":"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/webserver/pyproject.toml","dependencies":[]},{"ecosystem":"pypi","filepath":"webserver/setup.py","sha":null,"kind":"manifest","created_at":"2024-01-18T23:50:01.628Z","updated_at":"2024-01-18T23:50:01.628Z","repository_link":"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/webserver/setup.py","dependencies":[]},{"ecosystem":"pypi","filepath":"environment.yml","sha":null,"kind":"manifest","created_at":"2025-02-07T13:37:50.606Z","updated_at":"2025-02-07T13:37:50.606Z","repository_link":"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/environment.yml","dependencies":[{"id":21780544001,"package_name":"pymongo","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":21780544002,"package_name":"flake8","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":21780544003,"package_name":"flake8-nb","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":21780544011,"package_name":"black","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":21780544012,"package_name":"black_nbconvert","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]}],"score":9.603192942033504,"created_at":"2025-06-26T00:13:02.075Z","updated_at":"2026-05-20T23:30:42.648Z","avatar_url":"https://github.com/3dgeo-heidelberg.png","language":"Python","category":"Biosphere","sub_category":"Forest Remote Sensing","monthly_downloads":22,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# \u003cimg src=\"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/pytreedb_logo_low.png?raw=true\" alt=\"logo\" style=\"width:200px;\"/\u003e\n\n[![License](https://img.shields.io/badge/license-GPLv3%2C%20LGPLv3-blue)](https://github.com/3dgeo-heidelberg/pytreedb/blob/main/LICENSE.md)\n[![Documentation Status](https://readthedocs.org/projects/pytreedb/badge/)](https://pytreedb.readthedocs.io)\n[![GitHub Workflow Status](https://github.com/3dgeo-heidelberg/pytreedb/actions/workflows/python-app.yml/badge.svg)](https://github.com/3dgeo-heidelberg/pytreedb/actions)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7551310.svg)](https://doi.org/10.5281/zenodo.7551310)\n\n`pytreedb` is a `Python` software package providing an object-based library to provide a simple database interface and REST API of vegetation tree objects that were captured as 3D point clouds. The main objective is to provide a Python library for the storage and sharing of single tree-based point clouds and all relevant (forest inventory) tree measurements. The tree data include all tree related information, measurements, metadata, geoinformation and also links to the 3D point clouds linked in any file format (e.g. LAS/LAZ). `GeoJSON` including all tree-related information is used as data format  for data exchange and visualization with other software (e.g. direct import into most GIS). Thereby view and modification of the tree datasets (*.geojson) is straightforward.\n\n[MongoDB](https://www.mongodb.com/) is used as database backend via the [PyMongo](https://pypi.org/project/pymongo/) driver. This enables scaling to large global datasets, e.g. connecting to [MongoDB Atlas Cloud](https://www.mongodb.com/cloud/atlas) for big datasets. Working only locally using a local MongoDB installation is also possible, if the database is only needed during runtime of data processing and sharing on the Web is not required.\n\n## Main Features\n\n`pytreedb` has three main components and usage directions:\n\n1. **Python library**: In case you need to access the tree database in your Python scripts during runtime of data processing and analysis. \n2. **REST API**: In case you want to provide your datasets to any software over a REST API. The `pytreedb` server application is using the [Flask](https://pypi.org/project/Flask/) framework for local(host) usage and we provide instructions to setup for production deployment with [Apache WGSI](https://github.com/3dgeo-heidelberg/pytreedb/tree/main/webserver#deployment-for-production). Further info on the REST API of `pytreedb` can be found [here](https://github.com/3dgeo-heidelberg/pytreedb/tree/main/webserver#deployment-for-local-dev), e.g. including setup of server and usage of API keys.\n3. **Web frontend**: In case you want to share your valuable tree data to the community. Based on the REST API we showcase in this repository how a Web frontend can be easily implemented, which provides several query options, data export and also map views of query results. A showcase presenting the tree data of [Weiser et al. 2022](https://doi.org/10.5194/essd-14-2989-2022) and further [datasets](https://github.com/3dgeo-heidelberg/pytreedb?tab=readme-ov-file#published-test-data) is given on http://pytreedb.geog.uni-heidelberg.de/.\n\n\n\u003cimg src=\"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/doc/_static/pytreedb_components_details.png?raw=true\" alt=\"overview of the components of pytreedb\" width=\"45%\"\u003e\n\n\n\nThe [`PyTreeDB`](https://github.com/3dgeo-heidelberg/pytreedb/blob/main/pytreedb/db.py) class is the starting point and the core component. It is responsible, e.g., for \n- data **import**, data **export**, data validation, automatic sync with MongoDB\n- all kind of **queries**. \n\nThe `Python` REST interface and all clients, such as the web frontend, simply use the methods and functionality of the Python class.\n\nThe main concept of the `pytreedb` software was explained in a \u003ca href=\"https://youtu.be/tUBoLCXkpV0?list=PLjb7Qrh6QTH0xh9qTmida6jZEWd938dEO\u0026t=446\" target=\"_blank\"\u003escientific talk\u003c/a\u003e by Bernhard Höfle at the \u003ca href=\"https://3dforecotech.eu/\"\u003e3DForEcoTech\u003c/a\u003e Workshop in Prague in 2022:\n\n\u003ca href=\"https://youtu.be/tUBoLCXkpV0?list=PLjb7Qrh6QTH0xh9qTmida6jZEWd938dEO\u0026t=446\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/doc/_static/pytreedb_3dforecotech2022_youtube_screenshot.png?raw=true\" alt=\"\" width=\"400\" /\u003e\u003c/a\u003e\n\n\n## 💻 Download and Installation\n\n### Installation\n\nInstall and update using [pip](https://pypi.org/) for 1) core library and 2) server library using the core library:\n\n**1) Core library**\n\n`$ pip install -U pytreedb`\n\n**2) Server library**\n\n`$ pip install -U pytreedb-server`\n\n### Alternative Installation\n\n**Clone this Repo and Use Anaconda Environment**\n\nClone this repository with `git clone` and use it as your working directory.\n\nSimply use the given `Anaconda` environment file [environment.yml](https://github.com/3dgeo-heidelberg/pytreedb/blob/main/environment.yml) provided in this distribution, which contains all dependencies to run and build resources.\n\n`$ conda env create --file environment.yml --force`\n\nInstead, you can also install the dependencies from the requirements file with pip.\n\n`$ python -m pip install -r requirements.txt`\n\nor the entire package:\n\n`$ python -m pip install .`\n\nFinally, if you want to contribute to the library's development you should also install its additional Python dependencies for testing and documentation building:\n\n`$ python -m pip install -r requirements-dev.txt`\n\n### Connect to MongoDB (localhost / server / Atlas cloud)\n`pytreedb` requires a working connection to a `MongoDB` database. It does not matter where the MongoDB is running as connection is simply made via `pymongo` (see code in [examples](https://github.com/3dgeo-heidelberg/pytreedb/tree/main/examples) and our [Jupyter notebooks](https://github.com/3dgeo-heidelberg/pytreedb/tree/main/notebooks)). We successfully tested localhost, server and [MongoDB Atlas cloud](https://www.mongodb.com/basics/mongodb-atlas-tutorial) connections. For your own MongoDB installation, just follow the [official installation instructions](https://docs.mongodb.com/manual/installation/)).\n\nThe required **MongoDB connection** with credentials is made with a `.env` file (_yes, the file has no name_) that you place in the folder of your Python scripts or search path. [dotenv](https://pypi.org/project/python-dotenv/) is used for providing credentials - 1) URI to server, 2) database and 3) collection name - outside your source code (see [sample.env](https://github.com/3dgeo-heidelberg/pytreedb/blob/main/sample.env) as template).\n\nExample `.env` file for connection to local MongoDB installation. ℹ️ Replace \u003cdatabase_name\u003e and \u003ccollection_name\u003e with your settings:\n```\nCONN_URI = \"mongodb://127.0.0.1:27017/\"\nCONN_DB = \"\u003cdatabase_name\u003e\"\nCONN_COL = \"\u003ccollection_name\u003e\"\n```\n\nExample CONN_URI in `.env` file for connection to MongoDB Atlas cloud where the respective settings need to be replaced with yours:\n\n```\nCONN_URI = \"mongodb+srv://\u003cusername\u003e:\u003cpassword\u003e@\u003cyour_cluster_details\u003e.mongodb.net/\u003cdatabase_name\u003e?retryWrites=true\u0026w=majority\"\n```\n\n### Software Dependencies\n\nAll dependencies (i.e. required third-party Python packages) are listed in the Anaconda [environment.yml](https://github.com/3dgeo-heidelberg/pytreedb/blob/main/environment.yml) definition and can be installed with [conda / pip](https://github.com/3dgeo-heidelberg/pytreedb/tree/main#installation). When creating the conda environment from our definition file, all dependencies are resolved.\n\n## Documentation of Software Usage\n\n### `PyTreeDB` class 🐍\nAs a starting point, please have a look to the [examples](https://github.com/3dgeo-heidelberg/pytreedb/tree/main/examples) and [Jupyter Notebooks](https://github.com/3dgeo-heidelberg/pytreedb/tree/main/notebooks) available in the repository. Further, each of the subfolders contains a README.md with respective details on the repository section.\n\n\n### Run it as a API server 💻\nIn order to provide a REST API to share your tree data you can use `pytreedb` in server mode. After installation of the `pytreedb-server` Python package you can follow the instructions here [webserver/README.md](https://github.com/3dgeo-heidelberg/pytreedb/tree/main/webserver#readme).\n\n### Run it as a web server and frontend\nAn example web frontend instance is running here: http://pytreedb.geog.uni-heidelberg.de/. The respective instructions and codes to install a webpage via the `pytreedb-server` Python package can be found in the webserver code section of `pytreedb`: [pytreedb/webserver](https://github.com/3dgeo-heidelberg/pytreedb/tree/main/webserver#readme). Web frontend codes can be easily adapted to your needs - see web programming codes in [static](https://github.com/3dgeo-heidelberg/pytreedb/tree/main/webserver/pytreedb_server/static) and [templates](https://github.com/3dgeo-heidelberg/pytreedb/tree/main/webserver/pytreedb_server/templates).\n\n### Use it as via the REST API also from other programming languages (e.g. R stats)\nStraightforward access from any programming language is made possible via the REST API. We provide examples scripts for http API access, e.g. for R statistics in [examples_api](https://github.com/3dgeo-heidelberg/pytreedb/tree/main/examples_api). The [R function example](https://github.com/3dgeo-heidelberg/pytreedb/blob/main/examples_api/example.R) allows simple query and also download of the LAZ files for all trees of the query result.\n\n\n### GeoJSON Format and Template\nAn example tree is given in [data/geojson/AbiAlb_BR03_01.geojson](https://github.com/3dgeo-heidelberg/pytreedb/blob/main/data/geojson/AbiAlb_BR03_01.geojson?raw=true) and the GeoJSON template for tree objects is defined here [pytreedb/db_conf.py](https://github.com/3dgeo-heidelberg/pytreedb/blob/main/pytreedb/db_conf.py).\n\nThe single tree information (incl. URLs to the point clouds) has to be provided as `GeoJSON` file per tree. We use a straightforward format that is a valid GeoJSON and can be opened with any GIS software. The main idea of the pytreedb GeoJSON format is to define a minimum set of tree metadata, which can be extended by any further data that is needed by the user. Thus, it is just required that your GeoJSON file complies with the minimum set to enable import into the database. The [`PyTreeDB`](https://github.com/3dgeo-heidelberg/pytreedb/blob/main/pytreedb/db.py) class offers the method `validate_json` to check the validity of the file. Also the import of files checks the validity automatically and will only import tree objects that are conformal with the defined template. The used [GeoJSON template](https://github.com/3dgeo-heidelberg/pytreedb/blob/main/pytreedb/db_conf.py) can also be modified for your use case and application. Note that modification (e.g. removal of mandatory fields from our template) will - most probably - require modifications for the API and web frontend component. \n\n## Published Test Data\n\nThe test data is provided in [`data`](https://github.com/3dgeo-heidelberg/pytreedb/tree/main/data) as 1) single [GeoJSON files and as ZIP archive](https://github.com/3dgeo-heidelberg/pytreedb/tree/main/data/geojson), and 2) also as serialized and zipped [pytreedb database dump](https://github.com/3dgeo-heidelberg/pytreedb/tree/main/data/db_dump) files that can be directly imported and used to start the API server.\n\n### 1) SYSSIFOSS-Data\n\nWe provide metadata (incl. links to point clouds) of 1481 trees that have been captured with airborne (ALS), UAV-borne (ULS) and terrestrial (TLS) laser scanning as well as field inventory data. This data was acquired and processed as part of the DFG project [syssifoss](https://www.geog.uni-heidelberg.de/gis/SYSSIFOSS_en.html) and the trees are located in the forests of Bretten and Karlsruhe (Germany). Please check our data publication for full details:\n\n\u003e Weiser, H., Schäfer, J., Winiwarter, L., Krašovec, N., Fassnacht, F.E. \u0026 Höfle, B. (2022): Individual tree point clouds and tree measurements from multi-platform laser scanning in German forests. Earth System Science Data. Vol. 14 (7), pp. 2989-3012. https://doi.org/10.5194/essd-14-2989-2022\n\nThe data can be downloaded from PANGAEA: https://doi.org/10.1594/PANGAEA.942856\n\n[\u003cimg src=\"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/doc/_static/syssifoss_data_figure_pc_viz.png?raw=true\" width=\"50%\"\u003e](https://doi.org/10.5194/essd-14-2989-2022)\n\nFor 11 trees, this dataset was extended by labelled versions of the TLS point clouds which have pointwise annotations for the semantic classes leaf and wood. The point clouds can be filtered using the \"Labels\" filter and are also available from heiDATA.\n\n\u003e Weiser, H., Ulrich, V., Winiwarter, L., Esmorís, A, M. \u0026 Höfle, B. (2024): Manually labeled terrestrial laser scanning point clouds of individual trees for leaf-wood separation. heiDATA, V1, https://doi.org/10.11588/DATA/UUMEDI.\n\n[\u003cimg src=\"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/doc/_static/syssifoss_trees_labelled.png?raw=true\" width=\"600\"\u003e](https://doi.org/10.11588/DATA/UUMEDI)\n\n### 2) Landmark trees in Heidelberg, Germany\n\nOver time, we additionally added two landmark trees scanned in Heidelberg, Germany:\n- [Holdermannseiche](https://pytreedb.geog.uni-heidelberg.de/query/eyJiYWNrZW5kUXVlcnkiOnsiJGFuZCI6W3sicHJvcGVydGllcy5tZWFzdXJlbWVudHMuaGVpZ2h0X20iOnsiJGx0IjoyNCwiJGd0IjoyM319LHsicHJvcGVydGllcy5kYXRhLm1vZGUiOiJUTFMifSx7InByb3BlcnRpZXMuc3BlY2llcyI6IlF1ZXJjdXMgcm9idXIifV19LCJmaWx0ZXJzIjpbInNwZWNpZXM6UXVlcmN1cyByb2J1ciIsImhlaWdodDoyMy0yNCIsIm1vZGU6VExTIl0sIm9wZXJhbmRzIjpbIi4iLCJBTkQiLCJBTkQiXSwiYnJhY2tldHMiOlswLDAsMF0sInByZXZpZXdTdHJpbmciOiJcInNwZWNpZXM6UXVlcmN1cyByb2J1clwiIEFORCBcImhlaWdodDoyMy0yNFwiIEFORCBcIm1vZGU6VExTXCIiLCJlbGVtTWF0Y2giOmZhbHNlLCJwcmV2aWV3TGltaXQiOjMsInJlbmRlck1hcmtlcnMiOnRydWV9) (*Quercus robur*), Heiligenberg\n- [Giant sequoia](https://pytreedb.geog.uni-heidelberg.de/query/eyJiYWNrZW5kUXVlcnkiOnsicHJvcGVydGllcy5zcGVjaWVzIjoiU2VxdW9pYWRlbmRyb24gZ2lnYW50ZXVtIn0sImZpbHRlcnMiOlsic3BlY2llczpTZXF1b2lhZGVuZHJvbiBnaWdhbnRldW0iXSwib3BlcmFuZHMiOlsiLiJdLCJicmFja2V0cyI6WzBdLCJwcmV2aWV3U3RyaW5nIjoiXCJzcGVjaWVzOlNlcXVvaWFkZW5kcm9uIGdpZ2FudGV1bVwiIiwiZWxlbU1hdGNoIjpmYWxzZSwicHJldmlld0xpbWl0IjozLCJyZW5kZXJNYXJrZXJzIjp0cnVlfQ==) (*Sequoiadendron giganteum*), Arboretum 1\n\nQuick tutorial:\n\n\u003ca href=\"https://www.youtube.com/watch?v=8SBi5mwDUVU\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/doc/_static/pytreedb_youtube_tutorial_giant_sequoia.png?raw=true\" alt=\"\" width=\"500\" /\u003e\u003c/a\u003e\n\n### 3) LiPheStream catalogue\n\nLiPheStream is the first external dataset that we added to `pytreedb`. LiPheStream is a time series tree dataset from a permanent laser scanning (PLS) system in Finland. \n\n\u003e Wittke, S., Campos, M., Ruoppa, L., Echrit, R., Wang, Y., Gołoś, A., Kukko, A., Hyyppä, J. \u0026 Puttonen, E. (2024): LiPheStream - A 18-month high spatiotemporal resolution point cloud time series of Boreal trees from Finland. Scientific Data, Vol. 11, 1281. https://doi.org/10.1038/s41597-024-04143-w.\n\nThe entire LiPheStream dataset is available from the Finnish Fairdata service: https://doi.org/10.23729/cf81f7f3-faaa-4729-aa1c-aa4dd38951aa\n\n## Citation\nPlease cite the following publication when using pytreedb in your research and reference the appropriate release version. All releases of pytreedb are listed on Zenodo where you will find the citation information including DOI. \n\n\u003e Höfle, B., Qu, J., Winiwarter, L., Weiser, H., Zahs, V., Schäfer, J. \u0026 Fassnacht, F. E. (2023). pytreedb - library for point clouds of tree vegetation objects (1.0.0). Zenodo. https://doi.org/10.5281/zenodo.7551310\n\n```\n@software{hofle_bernhard_2023_7551310,\n  author       = {Höfle, Bernhard and\n                  Qu, Jiani and\n                  Winiwarter, Lukas and\n                  Weiser, Hannah and\n                  Zahs, Vivien and\n                  Schäfer, Jannika and\n                  Fassnacht, Fabian E.},\n  title        = {{pytreedb - library for point clouds of tree \n                   vegetation objects}},\n  month        = jan,\n  year         = 2023,\n  publisher    = {Zenodo},\n  version      = {1.0.0},\n  doi          = {10.5281/zenodo.7551310},\n  url          = {https://doi.org/10.5281/zenodo.7551310}\n}\n ```\n## Funding / Acknowledgements\nThe initial software development was supported by the **DFG - German Research Foundation** (Grant no. 411263134) within the research project [SYSSIFOSS](https://uni-heidelberg.de/syssifoss).\n\n[\u003cimg src=\"https://github.com/3dgeo-heidelberg/pytreedb/blob/main/doc/_static/dfg_logo_englisch_blau_en.gif?raw=true\" width=\"30%\"\u003e](https://www.dfg.de/en/)\n\n## Contact / Bugs / Feature Requests\n\nYou think you have found a bug or have specific request for a new feature. Please open a new issue in the online code repository on Github. Also for general questions please use the issue system. \n\nScientific requests can be directed to the [3DGeo Research Group Heidelberg](https://uni-heidelberg.de/3dgeo) and its respective members.\n\n## 📜 License\n\nSee [LICENSE.md](https://github.com/3dgeo-heidelberg/pytreedb/blob/main/LICENSE.md)\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.5281/zenodo.7551310","https://doi.org/10.5194/essd-14-2989-2022","https://doi.org/10.1594/PANGAEA.942856","https://doi.org/10.11588/DATA/UUMEDI","https://doi.org/10.1038/s41597-024-04143-w","https://doi.org/10.23729/cf81f7f3-faaa-4729-aa1c-aa4dd38951aa"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["climate-change","co2-emissions","paris-agreement","research"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/319424","html_url":"https://ost.ecosyste.ms/projects/319424"}