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.
git clone https://github.com/dbetchkal/NPS-ActiveSpace.git
cd NPS-ActiveSpace
Install Python, either via Anaconda/Miniconda, or directly. The repository has been tested with Python version 3.13.5.
You can use a Conda environment if you want, but all installation is managed by pip.
With Conda:
conda create --name active python=3.13.5
conda activate active
With venv in a Git Bash terminal:
python -m venv .venv
source .venv/bin/activate
With venv in a Windows Command Prompt terminal:
python -m venv .venv
source .venv\Scripts\activate.bat
Make sure you are inside your virtual environment, then:
python -m pip install --upgrade pip
pip install -r requirements.txt
Historical note:
The GDAL dependency comes from a .whl file published here. If the Python version is updated, the GDAL wheel URL in requirements.txt may need to be changed to reflect the updated version. For example, gdal-3.11.1-cp313-cp313-win_amd64.whl is GDAL version 3.11.1 for Python 3.13.
From the repository's root directory, inside the virtual environment:
pip install -e .
Try importing a python module to make sure this install worked, e.g. in a python file:
from nps_active_space.active_space import ActiveSpaceGenerator
All scripts require a configuration file saved in the config directory nps_active_space/config. Please copy the template config file, fill in the values required for the script(s) you will be running, and save it to the config directory as <environment name>.config. For example, a configuration file for Denali National Park and Preserve might be named DENA.config while a configuration file for Hawaii Volcanoes National Park might be named HAVO.config and have a different value for where the DEM file is stored than DENA.config
Currently, the template config file has the following data:
[database:overflights] - Values required if pulling tracks from the database in run_ground_truthing.py or run_audible_transits.py
name = Database name.
username = Database credentials username.
password = Database credentials password.
port = Database port.
host = Database host.
[data]
site_metadata = Absolute path to the the file containing site metadata. Value required for all run_ground_truthing.py and generate_active_space.py
nvspl_archive = Absolute path to the directory where all NVSPL sound data is stored. Value required for all run_ground_truthing.py and generate_active_space.py
adsb = Absolute path to the directory where ADSB track data is stored. Value required if pulling ADSB tracks in run_ground_truthing.py or run_audible_transits.py
dem = Absolute path to the DEM tif file to use for active space generation. Value required for generate_active_space.py and generate_active_space_mesh.py
mennitt = Absolute path to the mennitt ambience tif. Value required for generate_active_space.py and generate_active_space_mesh.py
[project]
dir = Absolute path to the directory where all NPS-ActiveSpace files are stored. Required for all scripts.
nmsim = Absolute path to the NMSIM Nord2000batch.exe file. Value required for generate_active_space.py and generate_active_space_mesh.py
FAA_Releasable_db = Absolute path to the FAA MASTER.txt database file downloaded from the [FAA website](https://www.faa.gov/licenses_certificates/aircraft_certification/aircraft_registry/releasable_aircraft_download). Required for run_audible_transits.py
FAA_type_corrections = Absolute path to a json file for correcting aircraft types in the FAA database. Keys are ICAO addresses, values are correct aircraft type. Required for run_ground_truthing.py and run_audible_transits.py
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.
Publications about NPS-ActiveSpace:
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
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
