{"id":38893563,"url":"https://github.com/louis-gm/phytospatial","last_synced_at":"2026-02-26T20:16:53.604Z","repository":{"id":328215412,"uuid":"865067970","full_name":"Louis-Gm/phytospatial","owner":"Louis-Gm","description":"Phytospatial is a python package that processes lidar and imagery data in forestry","archived":false,"fork":false,"pushed_at":"2026-01-28T16:01:11.000Z","size":459,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-29T07:16:12.778Z","etag":null,"topics":["forest-models","forestry","hyperspectral-imaging","image-processing","lidar-point-cloud","remote-sensing"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Louis-Gm.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,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-09-29T22:31:05.000Z","updated_at":"2026-01-28T16:03:35.000Z","dependencies_parsed_at":"2026-01-28T18:02:53.996Z","dependency_job_id":null,"html_url":"https://github.com/Louis-Gm/phytospatial","commit_stats":null,"previous_names":["louis-gm/phytospatial"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/Louis-Gm/phytospatial","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Louis-Gm%2Fphytospatial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Louis-Gm%2Fphytospatial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Louis-Gm%2Fphytospatial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Louis-Gm%2Fphytospatial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Louis-Gm","download_url":"https://codeload.github.com/Louis-Gm/phytospatial/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Louis-Gm%2Fphytospatial/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29130090,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T18:55:47.139Z","status":"ssl_error","status_checked_at":"2026-02-05T18:55:04.010Z","response_time":65,"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"}},"keywords":["forest-models","forestry","hyperspectral-imaging","image-processing","lidar-point-cloud","remote-sensing"],"created_at":"2026-01-17T14:56:53.205Z","updated_at":"2026-02-26T20:16:53.596Z","avatar_url":"https://github.com/Louis-Gm.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Louis-Gm/phytospatial\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/Louis-Gm/phytospatial/main/assets/phytospatial-logo.png\" alt=\"Logo\" width=\"420\" height=\"420\"\u003e\n  \u003c/a\u003e\n  \u003ch1 align=\"center\"\u003e\u003cb\u003ePhytospatial\u003c/b\u003e\u003c/h1\u003e\n  \u003cdiv align=\"center\"\u003e\n    A python package that processes lidar and imagery data in forestry\n  \u003c/div\u003e\n\n  [start]: #\n\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://phytospatial.readthedocs.io/\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n  \u003c/p\u003e\n \n  [end]: #\n\n  \u003cbr /\u003e\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://github.com/Louis-Gm/phytospatial/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/Louis-Gm/phytospatial/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/div\u003e\u003cbr /\u003e \n\n  \u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/python-3.10+-orange.svg\" alt=\"Python versions\"\u003e    \n    \u003cimg src=\"https://img.shields.io/badge/Apache%202.0-blue.svg\" alt=\"License\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/DOI-10.5281%2Fzenodo.18112045-purple\" alt=\"DOI\"\u003e\n    \u003cimg src=\"https://github.com/Louis-Gm/phytospatial/actions/workflows/test_suite.yml/badge.svg\" alt=\"Build Status\"\u003e    \n    \u003cbr /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Windows-blue.svg?style=flat\u0026logo=data:image/svg%2bxml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE0Ij4KPHBhdGggZD0iTTAgMCBDMCA0LjYyIDAgOS4yNCAwIDE0IEMtNi45MyAxMy41MDUgLTYuOTMgMTMuNTA1IC0xNCAxMyBDLTE0IDkuMDQgLTE0IDUuMDggLTE0IDEgQy05LjE3MDYyNTQgMC4yMTE1MzA2OCAtNC45Njc2Mjk5MyAwIDAgMCBaICIgZmlsbD0iIzREQUU0RiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTQsMCkiLz4KPHBhdGggZD0iTTAgMCBDMi42NCAwIDUuMjggMCA4IDAgQzggMi4zMSA4IDQuNjIgOCA3IEM1LjY2NzA1MjI1IDcuMDQyNDE3MjMgMy4zMzI5NzQzMyA3LjA0MDkyOTM3IDEgNyBDMCA2IDAgNiAtMC4wNjI1IDIuOTM3NSBDLTAuMDQxODc1IDEuOTY4MTI1IC0wLjAyMTI1IDAuOTk4NzUgMCAwIFogIiBmaWxsPSIjRkNDMDA4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2LDcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzEuOTggMCAzLjk2IDAgNiAwIEM2IDEuOTggNiAzLjk2IDYgNiBDNC4wMiA2IDIuMDQgNiAwIDYgQzAgNC4wMiAwIDIuMDQgMCAwIFogIiBmaWxsPSIjMjE5NUYyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzEuOTggMCAzLjk2IDAgNiAwIEM2IDEuOTggNiAzLjk2IDYgNiBDNC4wMiA2IDIuMDQgNiAwIDYgQzAgNC4wMiAwIDIuMDQgMCAwIFogIiBmaWxsPSIjRjM0MjM2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDEpIi8+Cjwvc3ZnPgo=\" alt=\"Windows\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/macOS-000000?style=flat\u0026logo=apple\u0026logoColor=white\" alt=\"MacOS\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Linux-FCC624?style=flat\u0026logo=linux\u0026logoColor=black\" alt=\"Linux\"\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n## **About The Project**\n\n**Phytospatial** is a Python toolkit designed to streamline the processing of remote sensing data for forestry and vegetation analysis. It provides tools for handling large hyperspectral rasters, validating vector geometries, and extracting spectral statistics from tree crowns. It also allows for passive-active raster-level fusion via its image processing module.\n\n### **Key Features**\n\n* **Memory-Safe Processing:** Process massive rasters using windowed reading (via `rasterio`) without overloading RAM.\n* **Forestry Focused:** Specialized tools for tree crown validation and species labeling.\n\n## **Getting Started**\n\n### **Installation**\n\nTo get up and running quickly with `pip`:\n\n```sh\npip install phytospatial\n```\n\n\u003e **New to Python?** Check out our detailed [Installation Guide](https://phytospatial.readthedocs.io/en/latest/installation/) for Conda and Virtual Environment setup.\n\n## **Usage**\n\nHere is a simple example of extracting spectral data from tree crowns using the *extract_to_dataframe* API, which automatically handles memory management and tiling strategies.\n\n```python\nfrom phytospatial import extract, loaders\n\n# Load tree crowns (returns a standardized Vector object)\ncrowns = loaders.load_crowns(\"data/crowns.shp\")\n\n# Extract features directly into a pandas DataFrame\n# The 'auto' mode automatically selects the best processing strategy\ndf = extract.extract_to_dataframe(\n    raster_input=\"data/image.tif\",\n    vector_input=crowns,\n    tile_mode=\"auto\"\n)\n\nprint(df.head())\n```\n\nFor a complete workflow, see the [Spectral Extraction Tutorial](https://phytospatial.readthedocs.io/en/latest/examples/extraction_pipeline/).\n\n## **Contribute**\n\nAs an open-source project, we encourage and welcome contributions of students, researchers, or professional developers.\n\n**Want to help?** Please read our [CONTRIBUTING](https://phytospatial.readthedocs.io/en/latest/contributing/contributing/) section for a detailed explanation of how to submit pull requests. Please also make sure to read the project's [CODE OF CONDUCT](https://phytospatial.readthedocs.io/en/latest/contributing/code_of_conduct/).\n\nNot sure how to implement your idea, but want to contribute?\n\u003cbr /\u003e\nFeel free to leave a feature request \u003ca href=\"https://github.com/Louis-Gm/phytospatial/issues\"\u003ehere\u003c/a\u003e.\n\n## **Citation**\n\nIf you use this project in your research, please cite it as:\n\nGrand'Maison, L.-V. (2026). Phytospatial: a python package that processes lidar and imagery data in forestry (0.5.1) [software]. Zenodo. https://doi.org/10.5281/zenodo.18112045\n\n## **Contact**\n\nThe project is currently being maintained by **Louis-Vincent Grand'Maison**.\n\nFeel free to contact me by email or linkedin:\n\u003cbr /\u003e\nEmail - [lvgra@ulaval.ca](mailto:lvgra@ulaval.ca)\n\u003cbr /\u003e\nLinkedin - [grandmaison-lv](https://www.linkedin.com/in/grandmaison-lv/)\n\n## **Acknowledgments \u0026 Funding**\n\nThis software is developed by Louis-Vincent Grand'Maison as part of a PhD project. The maintenance and development of this project is supported by several research scholarships:\n\n* Fonds de recherche du Québec – Nature et technologies (FRQNT) (Scholarship 2024-2025)\n* Natural Sciences and Engineering Research Council of Canada (NSERC) (Scholarship 2025-present)\n* Université Laval (Scholarship 2024-present)\n\n## **License**\n\n`Phytospatial` is distributed under the Apache License, Version 2.0.\n\u003cbr /\u003e\nSee the LICENSE file for the full text. This license includes a permanent, world-wide, non-exclusive, no-charge, royalty-free, irrevocable patent license for all users.\n\nSee [LICENSE](https://phytospatial.readthedocs.io/en/latest/license/) for more information on licensing and copyright.\n\n[start]: #\n\n([Back to Top](#table-of-contents))\n\n[end]: #\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flouis-gm%2Fphytospatial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flouis-gm%2Fphytospatial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flouis-gm%2Fphytospatial/lists"}