{"id":32177297,"url":"https://github.com/pyosp-devs/pyosp","last_synced_at":"2026-02-23T14:01:05.692Z","repository":{"id":53885281,"uuid":"285707044","full_name":"PyOSP-devs/PyOSP","owner":"PyOSP-devs","description":"An Python Library for Object-Oriented Swath Profile Analysis","archived":false,"fork":false,"pushed_at":"2022-02-05T20:10:04.000Z","size":12733,"stargazers_count":22,"open_issues_count":2,"forks_count":8,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-11-10T05:22:04.226Z","etag":null,"topics":["conda","elevation","swath-analysis","swath-profile","tpi"],"latest_commit_sha":null,"homepage":"https://github.com/PyOSP-devs/PyOSP","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/PyOSP-devs.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}},"created_at":"2020-08-07T01:21:51.000Z","updated_at":"2025-09-02T04:34:40.000Z","dependencies_parsed_at":"2022-09-12T03:21:52.200Z","dependency_job_id":null,"html_url":"https://github.com/PyOSP-devs/PyOSP","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/PyOSP-devs/PyOSP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyOSP-devs%2FPyOSP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyOSP-devs%2FPyOSP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyOSP-devs%2FPyOSP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyOSP-devs%2FPyOSP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PyOSP-devs","download_url":"https://codeload.github.com/PyOSP-devs/PyOSP/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyOSP-devs%2FPyOSP/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29745111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: 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":["conda","elevation","swath-analysis","swath-profile","tpi"],"created_at":"2025-10-21T20:02:23.492Z","updated_at":"2026-02-23T14:01:05.682Z","avatar_url":"https://github.com/PyOSP-devs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\r\n  \u003cimg alt=\"pyosp logo\" src=\"https://i.imgur.com/vLPaRWY.png\" height=\"200\" /\u003e\u003c/p\u003e\r\n  \u003cp align=\"center\"\u003e\r\n    \u003ca href=\"/release\"\u003e\u003cimg alt=\"github release (latest by date)\" src=\"https://img.shields.io/github/v/release/PyOSP-devs/PyOSP?style=flat-square\"\u003e\u003c/a\u003e\r\n    \u003ca href=\"/build\"\u003e\u003cimg alt=\"TravisCI\" src=\"https://travis-ci.org/PyOSP-devs/PyOSP.svg?branch=master\"\u003e\u003c/a\u003e\r\n    \u003ca href='https://coveralls.io/github/PyOSP-devs/PyOSP?branch=master'\u003e\u003cimg src='https://coveralls.io/repos/github/PyOSP-devs/PyOSP/badge.svg?branch=master' alt='Coverage Status' /\u003e\u003c/a\u003e\r\n    \u003ca href=\"/Downloads\"\u003e\u003cimg alt=\"Conda Downloads\" src=\"https://img.shields.io/conda/dn/conda-forge/pyosp.svg\"\u003e\u003c/a\u003e  \r\n    \u003ca href=\"https://doi.org/10.1016/j.geomorph.2021.107778\"\u003e\u003cimg alt=\"publication\" src=\"https://img.shields.io/badge/publication-Geomorphology-blue?style=flat-square\"\u003e\u003c/a\u003e\r\n  \u003c/p\u003e\r\n\u003c/p\u003e\r\n\r\n---\r\n\r\n\u003cp\u003e\u003cimg alt=\"intro\" src=\"https://i.imgur.com/7jkyyog.gif\" height=\"300\"/\u003e\u003c/p\u003e\r\n\r\n_Intelligent and comprehensive swath analysis_\r\n\r\n## Features\r\n\r\n- :gem: **Intelligent**: objectively identify irregular boundries using elevation, slope, TPI, or other raster analyses.\r\n- :milky_way: **Comprehensive**: cuvilinear and circular swath analyses, reclassification of swath data, cross-swath, slice and histogram, etc.  \r\n- :two_women_holding_hands: **Compatible**: work seamlessly with GIS software.\r\n- :anchor: **Dependencies**: numpy, matplotlib, gdal, scipy and shapely.\r\n\r\n## Documentation\r\nRead the documentation at: https://pyosp.readthedocs.io/en/latest/index.html\r\n\r\nIntroduction, methodology, and case studies: https://doi.org/10.1016/j.geomorph.2021.107778\r\n\r\nApplications (starting from scratch):\r\n1. [Topographic analysis of Teton Range, Wyoming](https://pyosp.readthedocs.io/en/latest/notebooks/pyosp_teton.html)\r\n2. [Terrace correlation along the Licking River, Kentucky](https://pyosp.readthedocs.io/en/latest/notebooks/pyosp_licking.html)\r\n3. [Circular swath analysis of Olympus Mons, Mars](https://pyosp.readthedocs.io/en/latest/notebooks/pyosp_olympus.html)\r\n\r\n## Installation\r\nWe recommend to use the [conda](https://conda.io/en/latest/) package manager to install pyosp. It will provide pre-built binaries for all dependencies of pyosp. If you have the [miniconda](https://docs.conda.io/en/latest/miniconda.html) (recommend; only containing python and the conda package manager), or [anaconda distribution](https://www.anaconda.com/) (a python distribution with many installed libraries for data science) installed, then simply execute the following command:\r\n\r\n```bash\r\nconda install -c conda-forge pyosp \r\n```\r\n\r\n## Installing in a new environment (recommended)\r\n\r\nAlthough it is not required, installing the library in a clean environment represents\r\ngood practice and helps avoid potential dependency conflicts. We also recommends install\r\nall dependencies with pyosp through conda-forge channel\r\n\r\n```bash\r\nconda create -n env_pyosp \r\nconda activate env_pyosp\r\nconda config --env --add channels conda-forge\r\nconda config --env --set channel_priority strict\r\nconda install python=3 pyosp\r\n```\r\n\r\n\r\n### You can also install from current branch:\r\n\r\n```bash\r\ngit clone https://github.com/pyosp-devs/pyosp.git\r\ncd pyosp\r\nconda install --file requirements.txt\r\npython setup.py install\r\n```\r\n\r\nYou can verify installation by entering a python shell and typing:\r\n\r\n```python\r\nimport pyosp\r\nprint(pyosp.__version__)\r\n```\r\n\r\n## Example\r\nHere is a simple example of using pyosp to perform swath analysis on a synthetic mountain case. The cross-width of mountain is around 90m, and flat ground has elevation of zero.\r\n\r\n\u003cp\u003e\u003cimg alt=\"homo_case\" src=\"https://i.imgur.com/nSFSqxo.png\" height=\"200\"/\u003e\u003c/p\u003e\r\n\r\nOriginal, elevation, slope and tpi based swath calculation.\r\n\r\n```python\r\nimport pyosp\r\n\r\nbaseline = pyosp.datasets.get_path(\"homo_baseline.shp\") # the path to baseline shapefile\r\nraster = pyosp.datasets.get_path(\"homo_mount.tif\")  # the path to raster file\r\n\r\norig = pyosp.Orig_curv(baseline, raster, width=100,\r\n                       line_stepsize=3, cross_stepsize=None)\r\n\r\nelev = pyosp.Elev_curv(baseline, raster, width=100,\r\n                       min_elev=0.01,\r\n                       line_stepsize=3, cross_stepsize=None)\r\n\r\nslope = pyosp.Slope_curv(baseline, raster, width=100,\r\n                         min_slope=1,\r\n                         line_stepsize=3, cross_stepsize=None)\r\n\r\ntpi = pyosp.Tpi_curv(baseline, raster, width=100,\r\n                     tpi_radius=50, min_tpi=0,\r\n                     line_stepsize=3, cross_stepsize=None)\r\n```\r\n\r\nWe can plot with matplotlib, or open in GIS software.\r\n\r\n\u003cp\u003e\u003cimg alt=\"homo_polygon\" src=\"https://i.imgur.com/nLgQEsJ.jpg\" height=\"200\"/\u003e\u003c/p\u003e\r\n\r\nPlot, for example, elevation based swath profile.\r\n\r\n```python\r\nelev.profile_plot()\r\n```\r\n\r\n\u003cimg alt=\"elev_sp\" src=\"https://i.imgur.com/0taXAhF.jpg.jpg\" height=\"200\"/\u003e\u003c/p\u003e\r\n\r\n_For more example and usage, please refer to our documentation._\r\n\r\n## Citing pyosp\r\nIf you use PyOSP for your work, please cite as:\r\n\r\nY. Zhu, J.M. Dortch, M.A. Massey, et al., An Intelligent Swath Tool to Characterize complex Topographic Features: Theory and Application in the Teton Range, Licking River, and Olympus Mons, Geomorphology (2021), https://doi.org/10.1016/j.geomorph.2021.107778\r\n\r\n## Contributing\r\n\r\nAny contributions you make are **greatly appreciated**.\r\n\r\n1. Fork the project\r\n2. Create your feature branch (`git checkout -b feature/amazingfeature`)\r\n3. Commit your changes (`git commit -m 'add some amazingfeature'`)\r\n4. Push to the branch (`git push origin feature/amazingfeature`)\r\n5. Open a pull request\r\n\r\n## Feedback\r\n\r\n- If you think pyosp is useful, consider giving it a star.\r\n- If something is not working, [create an issue](https://github.com/pyosp-devs/pyosp/issues/new)\r\n- If you need to get in touch for other reasons, [send us an email](yichuan211@gmail.com)\r\n\r\n## Credits\r\nThis work is supported by [Kentucky Geological Survey](https://www.uky.edu/kgs/).\r\n\r\n## License\r\n[Apache license, version 2.0](https://github.com/pyosp-devs/pyosp/blob/master/license)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyosp-devs%2Fpyosp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpyosp-devs%2Fpyosp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyosp-devs%2Fpyosp/lists"}