An active space is a well-known sensory concept from bioacoustics (Marten and Marler 1977, Gabriele et al. 2018). 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?"
This 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. 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.
Consider 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). 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.
Superposed 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.
At its heart, nps_active_space is organized around the idea of a scientific geo-synthesis:
a structured combination of heterogeneous spatial observations into a single, interpretable
geometric object.
Rather than treating sound propagation, audibility, and vehicle movement as independent modeling problems, the toolkit treats them as causally linked components of an observer-centered system:
- Vehicle trajectories represent potential causes
- Acoustic records represent observed effects
- Audibility is established through empirical association
- Geometry is used to reconcile these relationships in space
The resulting active space is not a purely predictive construct, nor a purely descriptive one. It is a mensurated estimate: a spatial enclosure that is consistent with observed audibility under specified environmental conditions.
The repository has been tested with Python 3.12. Runtime dependencies are declared in pyproject.toml and installed automatically by pip (except GDAL on macOS/Linux, which requires a system library first).
Clone the repository, then follow the steps for your platform. The clone includes example_data/ (~75 MB) for local development and tests (see example_data/README.md).
git clone https://github.com/dbetchkal/NPS-ActiveSpace.git
cd NPS-ActiveSpaceGDAL is installed automatically from a pre-built wheel in pyproject.toml.
Create virtual environment with updated pip
python -m venv .venv
.venv\Scripts\activate.bat
python -m pip install --upgrade pipInstall required Python packages
pip install -e ".[dev]"Ground-truthing GUI:
run_ground_truthing.pyuses tkinter. Include "tcl/tk and IDLE" when installing from python.org. Verify withpython -c "import tkinter; print('ok')".
Install GDAL as a system library first
# macOS (Homebrew)
brew install gdal
# Linux (Debian/Ubuntu)
sudo apt-get install gdal-bin libgdal-devGround-truthing GUI: also install tkinter — macOS:
brew install python-tk@3.12· Linux:sudo apt-get install python3.12-tk
Create virtual environment with updated pip
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pipInstall required Python packages (including appropriate GDAL Python binding)
GDAL_VERSION=$(gdal-config --version)
pip install "GDAL==${GDAL_VERSION}"
pip install -e ".[dev]"
Note: Using without a clone: you can install directly from GitHub with pip install "NPS-ActiveSpace @ git+https://github.com/dbetchkal/NPS-ActiveSpace.git" (on macOS/Linux, complete the GDAL steps above first). Config files go in the installed package's config/ directory — find it with python -c "import nps_active_space, os; print(os.path.join(nps_active_space.ACTIVE_SPACE_DIR, 'config'))". Run scripts using python -m ... from outside the repo so Python uses the installed package, not a local checkout.
Scripts are run as Python modules from the repository root:
python -m nps_active_space.scripts.run_ground_truthing -e production -u DENA -s MOOS -y 2018See nps_active_space/scripts/README.md for the full list of scripts and their arguments.
Verify the install:
python -c "import nps_active_space, geopandas, rasterio, iyore; print('NPS-ActiveSpace OK')"Active space generation runs the NMSIM Nord2000 physics model as an external process. NMSIM is not installed by pip and is not included in this repository. Obtain the binary + required files separately (feel free to reach out to NPS-ActiveSpace maintainers) and set the path in your config:
[project]
nmsim = C:\path\to\Nord2000batch.exe
Required for generate_active_space.py, generate_3d_active_space.py, and generate_active_space_mesh.py. Not required for ground-truthing, audible transits, or validation.
All scripts require a configuration file named <environment>.config (e.g. DENA.config, HAVO.config). Copy nps_active_space/config/template.config, fill in the values for your deployment, and save it to nps_active_space/config/.
graph LR
%% Groups
subgraph Scripts
scripts[(scripts/)]
end
subgraph Synthesis
active_space[(active_space/)]
ground_truthing[(ground_truthing/)]
validation[(validation/)]
end
subgraph Foundations
config[(config/)]
data[(data/)]
utils[(utils/)]
end
%% Flow: scripts → core → analysis
config --> scripts
config --> ground_truthing
data --> scripts
utils --> scripts
scripts --> active_space
scripts --> ground_truthing
scripts --> validation
%% Foundations feed core
config --> active_space
data --> active_space
utils --> active_space
%% Foundations feed analysis modules
data --> ground_truthing
utils --> ground_truthing
ground_truthing --> active_space
active_space --> validation
utils --> validation
At its heart, this toolkit structures a scientific geo-synthesis in two parts:
- A GUI-based audibility measurement tool (
.ground_truthing) that allows users to spatio-temporally$\text{JOIN}$ vehicle tracks (cause) and acoustic records (effect). - A geoprocess to
$\text{ENCLOSE}$ the listening location and a user's audibility observations within an optimal 3-dimensional active space (.active_space).
This enables a causal geometric calculation (mensuration) of acoustic metrics. Tools to help validate a set of syntheses are provided (.validation).
The entire synthesis .scripts). For more information on scripted control, see the detailed control script documentation.
To enable environmental scenario planning, global repository inputs are all structured together in a configuration file (.config) that spans the architecture. Utilities implement both data structure models and diverse computation tasks (.utils) that are used throughout the architecture.
The toolkit also requires basic sound source and weather profile data to operate. The provided (.data) are a widely applicable example: a fixed-wing propeller aircraft source and a standard "acoustician's atmosphere" with dry adiabatic lapse conditions. The toolkit may be run using alternative, custom sound sources or weather profiles.
The .config configuration file requires a project directory, which may contain many listening locations (sites), which in turn can be configured flexibly to produce test many scenarios. The toolkit expects the user's project directory to be structured as follows:
project_directory/
├── UNITSITE_A/
│ ├── UNITSITE_A_study_area.shp
│ ├── Input_Data/
│ │ ├── 01_ELEVATION/
│ │ └── 02_IMPEDANCE/
│ │ └── 05_SITES/
│ └── Output_Data/
│ ├── ASCII/
│ ├── AUDIBLE_TRANSITS/
│ ├── IMAGES/
│ ├── SITE/
│ └── TIG_TIS/
├── UNITSITE_B/
│ ├── UNITSITE_B_study_area.shp
│ └── ...
└── ...As an observer-based audibility model, each nps_active_space site directory (above UNITSITE_A, UNITSITE_B, ...) corresponds with a physical listening location on Earth. The files composing each site directory amount to a geographic model of a listener with no audible sound source present—only the quiescent surrounding land surface. Such a geographic model is a required input for every possible nps_active_space configuration scenario.
The overarching input of nps_active_space is a study area. It is a required input. It must be contained within the root project directory and named similar to UNITSITE_study_area.shp (ESRI shapefile), where the variable geographic prefix UNITSITE matches the name of the project directory. It is recommended that study area geometries are saved using NMSIM's native coordinate reference system (crs), NAD83 GCS North American (EPSG:4269).
After their creation, the annotation outputs of .ground_truthing (.geojson) also belong in the root of the project directory. Clock drift correction files produced via the .utils\clock_drift.py utility also belong in the root of the project directory.
Terrain within the geographic model is represented by a portion of the National Elevation Dataset (Gesch, 2002). It is a required input. It must be formatted as ESRI grid-float (.flt) and stored in the 01_ELEVATION subdirectory.
Landcover-related variability in acoustic impedance along the propagation path is represented by a portion of the National Landcover Dataset (NLCD; Yang , 2018). It is an optional input. Like elevation data, flow resistivity data should also be formatted as ESRI grid-float (.flt) for use with NMSIM. Each landcover category may be coasrely mapped to a corresponding value of flow resistivity (
| NLCD Class | Description | Flow Resistivity ( |
|---|---|---|
| 11 | Open water | 100 000 |
| 21 | Developed, open space | 200 |
| 22 | Developed, low intensity | 300 |
| 23 | Developed, medium intensity | 5 000 |
| 24 | Developed, high intensity | 10 000 |
| 31 | Barren (e.g., bedrock, talus) | 100 000 |
| 41 | Deciduous forest | 70 |
| 42 | Evergreen forest | 70 |
| 43 | Mixed forest | 70 |
| 51 | Dwarf scrub | 200 |
| 52 | Shrub/scrub | 200 |
| 90 | Woody wetlands | 100 000 |
Any three-dimensional coordinate above Earth's surface may be used as a listener location. The listener location should be formatted as a NMSIM (.sit) file and stored in the 05_SITES subdirectory.
nps_active_space is intended for observer-based, post hoc audibility analysis of transportation noise using simultaneously collected, long-term acoustic records and covariate vehicle tracking data. It is designed to support scientific research, environmental assessment, and resource management applications, particularly in large, heterogeneous landscapes such as U.S. National Parks.
The toolkit is especially suited to problems where:
- A fixed listening location (or small set of locations) is monitored over time
- Sound sources are mobile (e.g., aircraft, vessels, overland vehicles)
- Spatial questions are central (e.g., where is a source audible from, and for how long?)
nps_active_space is not a real-time noise monitoring system, nor a general-purpose
sound propagation model. It is a synthesis-oriented toolkit that combines
observations, geometry, and physical modeling to estimate spatial limits of
audibility under specified environmental conditions.
This software is:
- Research-grade and actively used in peer-reviewed studies
- Designed for transparency, reproducibility, and extensibility
- Under continued development as methods and use cases evolve
Interfaces and workflows may change as new synthesis pathways are added. Users are encouraged to treat outputs as scientific estimates whose validity depends on data quality, configuration choices, and underlying assumptions.
This project is in the worldwide public domain:
This project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the CC0 1.0 Universal public domain dedication.
All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.
The original technical paper (supporting the v1.0.0 Release):
Betchkal, 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
Validation on jet aircraft source types (v2.1.0 Release):
Gurung, B., Betchkal, D.H., Beeco, J.A., Peterson, B.A., Olstad, T.A., Anderson, S., Hutchinson, S., Jackson, S. and Joyce, D., 2026. Estimating Active Space Noise Extent from Two Aircraft Weight Classes over the Great Smoky Mountains National Park. Aerospace, 13(4), p.363. https://doi.org/10.3390/aerospace13040363
A testing presentation (supporting the v3.0.0 Release):
Kosinski, A. and Betchkal, D. H. 2025. Reliability of the 3D Active Space Model. U.S. National Park Service. https://irma.nps.gov/DataStore/Reference/Profile/2316524
Management papers using NPS-ActiveSpace:
Peterson, B.A., Coffey, L., Gurung, B., Hutchinson, J.S., Olstad, T.A., Betchkal, D.H., Anderson, S.J., Joyce, D. and Beeco, J.A., 2025. Understanding Overflight Travel Patterns Above Parks and Protected Areas: A Systematic Review. Journal of Park and Recreation Administration. https://doi.org/10.18666/JPRA-2025-13120
Ferguson, L.A., Peterson, B.A., Crump, M., Taff, B.D., Newman, P., Betchkal, D.H., Hutchinson, J.S. and Beeco, J.A., 2025. Integrating aircraft tracking, acoustic data, and surveys to evaluate park aircraft noise. Tourism Geographies, pp.1-20. https://doi.org/10.1080/14616688.2025.2591832
