Skip to main content

A package for finding the number of people residing near environmental hazards

Project description

popexposure: Functions to estimate the number of people living near environmental hazards

Python License: MIT GitHub PyPI version

Overview

popexposure is an open-source Python package providing fast, memory-efficient, and consistent estimates of the number of people living near environmental hazards, enabling environmental scientists to assess population-level exposure to environmental hazards based on residential proximity. Methodological details can be found in McBrien et al (2025). Extensive documentation can be found on in our quick start tutorial.

Installation

The easiest way to install popexposure is via the latest pre-compiled binaries from PyPI with:

pip install popexposure

You can build popexposure from source as you would any other Python package with:

git clone https://github.com/heathermcb/popexposure
cd popexposure
python -m pip install .

Tutorials

A number of tutorials providing worked examples using popexposure can be found in our demos folder.

Quickstart

import glob
import pandas as pd
from popexposure.find_exposure import PopEstimator

# Instantiate estimator
pop_est = PopEstimator()

# List of years and corresponding hazard file paths
years = [2016, 2017, 2018]
hazard_paths = [
    "hazard_2016.geojson",
    "hazard_2017.geojson",
    "hazard_2018.geojson"
]
pop_path = "my_pop_raster.tif"
admin_units_path = "my_admin_units.geojson"

# Prepare admin units data
admin_units = pop_est.prep_data(admin_units_path, geo_type="admin_unit")

# Find total num ppl residing <= 10km of each hazard in each year
exposed_list = []

for year, hazard_path in zip(years, hazard_paths):
    # Prepare hazard data for this year
    hazards = pop_est.prep_data(hazard_path, geo_type="hazard")
    # Estimate exposed population
    exposed = pop_est.est_exposed_pop(
        pop_path=pop_path,
        hazard_specific=False,  # set to True if you want per-hazard results
        hazards=hazards,
        admin_units=admin_units # leave as None for estimates not by admin unit
    )
    exposed['year'] = year
    exposed_list.append(exposed)

exposed_df = pd.concat(exposed_list, axis=0)

# Save output
exposed_df.to_parquet("pop_exposed_to_hazards.parquet")

Available functions

Function Overview Inputs Outputs
prep_data Reads, cleans, and preprocesses geospatial hazard or admin unit data by removing empty or missing geometries, and buffering hazard data according to user-passed buffer distances Path to hazard or administrative unit file (.geojson or .parquet), geo_type ("hazard" or "admin_unit") Cleaned GeoDataFrame with valid geometries
est_exposed_pop Estimates number of people living within hazard buffer(s) using a raster Population raster path (.tif), hazard data, hazard_specific (bool), optional administrative units DataFrame with exposed population counts by hazard/administrative unit
est_pop Estimates total population in admin geographies using a raster Population raster path (.tif), administrative unit data (GeoDataFrame) DataFrame with total population per administrative unit

Getting help and contributing

If you have any questions, a feature request, or would like to report a bug, please open an issue. We also welcome any new contributions and ideas. If you want to add code, please submit a pull request and we will get back to you when we can. Thanks!

Citing this package

Please cite our paper McBrien et al (2025).

Authors

References

Our package is a fancy wrapper for the package exactextract.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

popexposure-1.0.0.dev12.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

popexposure-1.0.0.dev12-py3-none-any.whl (17.3 kB view details)

Uploaded Python 3

File details

Details for the file popexposure-1.0.0.dev12.tar.gz.

File metadata

  • Download URL: popexposure-1.0.0.dev12.tar.gz
  • Upload date:
  • Size: 15.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.12.6 Darwin/22.6.0

File hashes

Hashes for popexposure-1.0.0.dev12.tar.gz
Algorithm Hash digest
SHA256 e0dbec3d9b39f468a2319742ce3a6927a973b1f79545153e99707b7e3c538626
MD5 59e31ca0b682b8e062b5cb9c5b6ce7a9
BLAKE2b-256 02664ae4d048a9baee2e8d63ee21e957afb4ab5e50cb5a3b3743b73a11a64bd6

See more details on using hashes here.

File details

Details for the file popexposure-1.0.0.dev12-py3-none-any.whl.

File metadata

  • Download URL: popexposure-1.0.0.dev12-py3-none-any.whl
  • Upload date:
  • Size: 17.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.12.6 Darwin/22.6.0

File hashes

Hashes for popexposure-1.0.0.dev12-py3-none-any.whl
Algorithm Hash digest
SHA256 557c8714d50f97d4851d22cee457b9bd5b613fe0fa3526b0c61f07a27d68676f
MD5 b14e7fb7c751f05793ec5f031e2c600b
BLAKE2b-256 65c433e7d4d98c37eee703837113a310457ccb5d62f7ac289c7bc1704bf2e41e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page