This repository contains the reproducible geospatial workflow used to assess access to veterinary services across Australia. The methodology relies exclusively on open, globally available datasets and open-source software, ensuring replicability in other jurisdictions with minimal adaptation.
This study models the spatial distribution of population beyond a one-hour drive from veterinary service locations (VSLs) and estimates the number of people potentially affected. The workflow consists of three main components:
- Data compilation and augmentation - Combining open baseline datasets with targeted API searches
- Routing infrastructure - Local Valhalla instance for generating drive-time isochrones
- Accessibility modeling - Generating isochrones and applying them to population data
vet-accessibility-aus/
├── vet-search/ # Google Places API tools for discovering and validating VSLs
├── valhalla/ # Docker-based Valhalla routing engine setup
├── vet-isochrones/ # Python tool for generating drive-time isochrones
└── README.md # This file
Tools for discovering and validating veterinary service locations using the Google Places API.
Key scripts:
vet_search.py- Targeted search for veterinary practices around H3 grid centroidsvet_validation.py- Validation of veterinary practice records against Google Places
This component implements the H3-based targeted augmentation strategy described in the paper, focusing API queries on geographic areas where additional VSLs would meaningfully alter the accessibility surface.
See vet-search/README.md for detailed documentation.
Docker configuration and preprocessing scripts for running a local Valhalla routing engine.
Key files:
docker-compose.yml- Valhalla server configurationreclassify_tracks.py- Preprocessing to include rural Australian roads
Valhalla processes OpenStreetMap road network data and provides isochrone generation capabilities via a local API endpoint.
See valhalla/README.md for setup instructions.
Python tool for generating drive-time isochrones from veterinary service locations.
Key script:
valhalla_isochrones.py- Multi-threaded isochrone generation and polygon merging
This tool queries the local Valhalla instance to generate 60-minute drive-time polygons from all VSL points, then merges them into a national accessibility surface.
See vet-isochrones/README.md for usage examples.
The complete analysis workflow is:
- Baseline Dataset: Extract veterinary services from Overture Maps Foundation "Places" dataset
- Completeness Benchmarking: Validate coverage using official registers (e.g., Queensland VSB)
- H3 Grid Generation: Create population-weighted hexagonal grid at resolution 5
- Cell Elimination: Remove H3 cells already within 20-minute drive of existing VSLs
- Targeted Augmentation: Search remaining cells using Google Places API (
vet_search.py) - Road Network Preparation: Download OSM data and reclassify rural tracks (
reclassify_tracks.py) - Valhalla Deployment: Build routing tiles and start server (
docker compose up) - Isochrone Generation: Generate 60-minute drive-time polygons (
valhalla_isochrones.py) - Population Analysis: Apply isochrone mask to GHSL population raster (QGIS)
All data sources are freely available and globally accessible:
- Overture Maps Foundation - Baseline veterinary service locations
- Google Places API - Targeted augmentation and validation
- OpenStreetMap (via Geofabrik) - Road network data
- Global Human Settlement Layer (GHSL) - Population distribution at 100m resolution
- Australian Bureau of Statistics (ABS) - Administrative boundaries (ASGS)
- Python 3.8+
- QGIS 3.44+ (for spatial analysis and visualization)
- Docker and Docker Compose (for Valhalla)
- WSL2 (if running on Windows)
Each component has its own requirements.txt file:
vet-search/requirements.txtvet-isochrones/requirements.txt
- Google Places API key (required for
vet-searchcomponent only)
git clone https://github.com/pukallus/vet-accessibility-aus.git
cd vet-accessibility-auscd valhalla
docker compose up -dSee valhalla/README.md for detailed setup including road network preparation.
For each component (vet-search and vet-isochrones):
cd vet-search # or vet-isochrones
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txtcd vet-search
cp .env.example .env
# Edit .env and add your Google Places API keyRefer to individual README files for usage examples:
- vet-search/README.md - VSL discovery and validation
- vet-isochrones/README.md - Isochrone generation
This workflow is designed for global reproducibility:
- All data sources have open licenses and global coverage
- All software tools are open-source and freely available
- The methodology uses standardized geographic frameworks (H3, WGS84)
- Parameters are tunable for different jurisdictions (drive times, population thresholds, H3 resolution)
To replicate this analysis in another country:
- Download Overture Places data for your region
- Obtain regional road network from Geofabrik (OpenStreetMap)
- Download GHSL population tiles for your area
- Adjust H3 resolution and drive-time parameters as needed
- Run the same workflow using the provided scripts
If you use this workflow in your research, please cite:
[Full paper citation once published]
MIT
This repository accompanies the paper:
[Full paper citation once published]
For questions or issues, please open an issue on GitHub or connect via LinkedIn:
This research was conducted using open data from:
- Overture Maps Foundation
- OpenStreetMap contributors
- European Commission Joint Research Centre (GHSL)
- Australian Bureau of Statistics
Routing engine provided by the Valhalla open-source community.