{"id":17860134,"url":"https://github.com/dbetchkal/nps-activespace","last_synced_at":"2025-03-20T19:31:25.898Z","repository":{"id":49715015,"uuid":"389775527","full_name":"dbetchkal/NPS-ActiveSpace","owner":"dbetchkal","description":"A Python implementation of observer-based audibility modelling methods","archived":false,"fork":false,"pushed_at":"2025-01-08T01:09:14.000Z","size":9860,"stargazers_count":5,"open_issues_count":7,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-01T00:38:41.722Z","etag":null,"topics":["acoustic-model","acoustics","active-space","aircraft","audibility","geopandas","geospatial-analysis","geospatial-processing","noise","python","sensory-ecology","soundscape","transportation-planning","vessels"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dbetchkal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2021-07-26T21:43:58.000Z","updated_at":"2025-01-08T01:53:44.000Z","dependencies_parsed_at":"2023-01-30T19:45:45.325Z","dependency_job_id":"7881d84d-6161-4f0a-972f-a5ce793b355e","html_url":"https://github.com/dbetchkal/NPS-ActiveSpace","commit_stats":{"total_commits":31,"total_committers":5,"mean_commits":6.2,"dds":0.5806451612903225,"last_synced_commit":"c51fdbcae5decde1e59095c309f90aeeec09412a"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbetchkal%2FNPS-ActiveSpace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbetchkal%2FNPS-ActiveSpace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbetchkal%2FNPS-ActiveSpace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbetchkal%2FNPS-ActiveSpace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dbetchkal","download_url":"https://codeload.github.com/dbetchkal/NPS-ActiveSpace/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244080088,"owners_count":20394852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acoustic-model","acoustics","active-space","aircraft","audibility","geopandas","geospatial-analysis","geospatial-processing","noise","python","sensory-ecology","soundscape","transportation-planning","vessels"],"created_at":"2024-10-28T07:22:45.444Z","updated_at":"2025-03-20T19:31:25.889Z","avatar_url":"https://github.com/dbetchkal.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![DOI](https://zenodo.org/badge/389775527.svg)](https://zenodo.org/badge/latestdoi/389775527)\n# NPS-ActiveSpace\n\nAn ***active space*** is a well-known sensory concept from bioacoustics ([Marten and Marler 1977](https://www.jstor.org/stable/pdf/4599136.pdf), [Gabriele et al. 2018](https://www.frontiersin.org/articles/10.3389/fmars.2018.00270/full)). It represents a geographic volume whose radii correspond to the limit of audibility for a specific signal in each direction. In other words, an active space provides an answer to the question, *\"how far can you hear a certain sound source from a specific location on the Earth's surface?\"*\n\nThis repository is designed to estimate active spaces for motorized noise sources transiting the U.S. National Park System. Aircraft are powerful noise sources audible over vast areas. Thus [considerable NPS management efforts have focused on protecting natural quietude from aviation noise intrusions](https://www.nps.gov/subjects/sound/overflights.htm). For coastal parks, vessels are similarly powerful noise sources of concern. For both transportation modalities `NPS-ActiveSpace` provides meaningful, quantitative spatial guides for noise mitigation and subsequent monitoring. \n\n## Example\n\nConsider an example active space, below. It was computed using data from a long term acoustic monitoring site in Denali National Park, DENAUWBT Upper West Branch Toklat ([Withers 2012](https://irma.nps.gov/DataStore/Reference/Profile/2184396)). The bold black polygon delineates an active space estimate for flights at 3000 meters altitude. Points interior to the polygon are predicted to be audible, those exterior, inaudible. \u003cbr\u003e \n\nSuperposed over the polygon are colored flight track polylines. `NPS-ActiveSpace` includes an application that leverages the acoustic record to ground-truth audibility of co-variate vehicle tracks from GPS databases. Ground-truthing is used to \"tune\" an active space to the appropriate geographic extent via mathematical optimization.\u003cbr\u003e\n\n\u003cbr\u003e\n\u003cimg src=\"https://github.com/dbetchkal/NPS-ActiveSpace/blob/main/nps_active_space/img/NPS-ActiveSpace_example.png\" alt=\"active space polygon example\" width=\"200\"\u003e\n\n\n## Packages\n\nThis project is made up of four modules:\n\n[`ground-truthing`](https://github.com/dbetchkal/NPS-ActiveSpace/blob/main/README.md#ground-truthing): a `tkinter`-based interactive GUI app for the annotation of georeferenced sound events.\n\n[`active-space`](https://github.com/dbetchkal/NPS-ActiveSpace/blob/main/README.md#active-space): observer-based audibility modelling procedures that produce an optimized active space estimate through synthesis.\n\n[`audible-transits`](https://github.com/dbetchkal/NPS-ActiveSpace/blob/main/README.md#audible-transits): geoprocess to construct the spatiotemporal intersections of a set of tracks with an active space.\n\n`geographic-metrics` Beta: tabulation of transits into a variety of acoustic and spatial metrics\n\n[`utils`](https://github.com/dbetchkal/NPS-ActiveSpace/blob/main/README.md#utils): diverse utilities - file I/O, geoprocessing, acoustic propagation modelling, and detection statistics\n    \nAlso included are noise source [data](https://github.com/dbetchkal/NPS-ActiveSpace/tree/main/nps_active_space/data) for tuning active space polygons.\n\n\n## Order of Operations\n\nWhile each package can be used and run individually, the project was designed so that outputs of one package work seamlessly as the inputs for another. Packages were designed to be run in the following order:\n\n`ground-truthing` $\\rightarrow$ `active-space` $\\rightarrow$ `audible-transits` $\\rightarrow$ `geographic-metrics`\n\n---\n\n## ground-truthing\n\n\u003cimg src=\"https://ars.els-cdn.com/content/image/1-s2.0-S0301479723019898-gr2.jpg\" alt=\"The provided `NPS-ActiveSpace.ground_truthing` module `tkinter`-based app. Reproduced from Betchkal et al. 2023, Fig. 2. A view of the NPS-ActiveSpace ground-truthing application with a completed spectrogram annotation for an audible helicopter overflying HAVO009A. The upper map frame shows ADS-B data (brown points) in the xy-plane and the user-estimated spatial extent of audibility (cyan highlight). The lower spectrogram frame includes the noise event as contrasted against the natural residual ambience. It also provides the user a cue: the timestamp corresponding to the most proximal ADS-B point (vertical green line). Audible extent was then estimated by adjusting the temporal boundary (cyan slider).\" width=\"700\"\u003e\n\nThe `ground-truthing` module provides a `tkinter`-based interactive GUI app for the annotation of georeferenced sound events. This module is the initial step of the process. Prerequesite to using this module is logging a simultaneous pair of datasets in the field: (1) a canonical Type-1 NPS acoustic record (`Nvspl`) and (2) a transportation dataset (`Adsb`, `Ais`, or generalized `Tracks`).\n\nThe module is initialized in the Command Line Interface (CLI). Detailed [CLI documentation is available to initialize the app](https://github.com/dbetchkal/NPS-ActiveSpace/tree/main/_DENA#ground-truthing) from a park-specific configuration file (see [`template.config`](https://github.com/dbetchkal/NPS-ActiveSpace/blob/main/_DENA/config/template.config)).\n\n---\n\n## active-space\n\nThe `active-space` module is a CLI implementation of observer-based audibility modelling procedures. It produces an active space estimate through synthesis. This module exists primarially as a wrapper for the `FORTRAN`-based physics engine `Nord2000` as implemented in `NMSIM`. Previously-saved `ground-truthing.Annotations` files are required as an input. Diverse spatial and sound source inputs are also required to stage the `NMSIM` simulation (see [Ikelheimer and Plotkin 2005](https://github.com/dbetchkal/NMSIM-Python/blob/main/NMSIM/Manual/NMSim%20Manual.pdf)). \n\nDetailed [CLI documentation is available to configure a synthesis](https://github.com/dbetchkal/NPS-ActiveSpace/blob/main/_DENA/README.md#generate-active-space) of the optimal active space estimate for a park listener in a specific location.\n\n---\n\n## audible-transits\n\nThe `audible-transits` module is a CLI geoprocess to construct the spatiotemporal intersections of a set of tracks with an active space. As part of the construction errant `Tracks` are removed and tabulated. Output `Tracks` are imbued with the information necessary to produce an audiblity time series.\n\nDetailed [CLI documentation is available to initialize the construction](https://github.com/dbetchkal/NPS-ActiveSpace/tree/main/_DENA#audible-transits).\n\n---\n\n## geographic-metrics [beta]\n\nThe `geographic-metrics` module estimates what we hear. To do this, it collapses the set of `audible-transits` into a binary audibility sequence in time. \nThen, from attributes of these *noise events* (or dualistically, *noise-free intervals*) a variety of acoustical and spatial metrics may be computed.\n\nAt present, no CLI interface exists for `geographic-metrics`. Instead it has been designed to be imported into a more flexible IDE.\n\n---\n\n## utils\n\nThe utilities module `utils` contains two sub-modules:\n1. `computation` for tasks related to:\n   - geoprocessing\n     - `.build_src_point_mesh()`\n     - `.climb_angle()`\n     - `.coords_to_utm()`\n     - `.create_overlapping_mesh()`\n     - `.interpolate_spline()`\n     - `.NMSIM_bbox_utm()`\n     - `.project_raster()`\n   - audibility\n     - `.audibility_to_interval()`\n     - `.ambience_from_nvspl()`\n     - `.ambience_from_raster()`\n     - `.contiguous_regions()`\n   - detection statistics\n     - `.calculate_duration_summary()`\n     - `.compute_fbeta()`\n\n2.  and `models` containing classes which parse various forms of input data:\n    - **Automatic Dependent Surveillance–Broadcast (ADS-B)** broacasts from aircraft\n      - `.Adsb()`\n      - `.EarlyAdsb()`\n    - **Automatic Identification System (AIS)** broadcasts from ships\n      - `.Ais()`\n    - human **spectrogram annotations** from the `NPS-ActiveSpace.ground_truthing` module as\n      - `.Annotations()`\n    - descriptions of canonical NPS Type-1 acoustic monitoring **Deployments**\n      - `.Microphone()`\n    - an **acoustic record** as 1/3rd-octave band spectral sound levels from a Deployment\n      - `.Nvspl()` \n    - generalized\n      - `.Tracks()`\n\nMost users should not need to use `utils` directly, but the data parsing classes may have use to other transportation geography projects.\n\n---\n\n## License\n\n### Public domain\n\nThis project is in the worldwide [public domain](LICENSE.md):\n\n\u003e This project is in the public domain within the United States,\n\u003e and copyright and related rights in the work worldwide are waived through the\n\u003e [CC0 1.0 Universal public domain dedication](https://creativecommons.org/publicdomain/zero/1.0/).\n\u003e\n\u003e All contributions to this project will be released under the CC0 dedication.\n\u003e By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.\n\n## Publications\n\nPublications about `NPS-ActiveSpace`:\n\n\u003eBetchkal, D.H., J.A. Beeco, S.J. Anderson, B.A. Peterson, and D. Joyce. 2023. Using Aircraft Tracking Data to Estimate the Geographic Scope of Noise Impacts from Low-Level Overflights Above Parks and Protected Areas. Journal of Environmental Management 348(15): 119201 https://doi.org/10.1016/j.jenvman.2023.119201\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbetchkal%2Fnps-activespace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdbetchkal%2Fnps-activespace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbetchkal%2Fnps-activespace/lists"}