PostGIS spatial SQL project analyzing healthcare facility access, regional distribution, nearest services, and distance-based coverage using Ghana GIS data.
# PostGIS Healthcare Access Analysis
This repository demonstrates spatial SQL analysis of healthcare access in Ghana using PostgreSQL/PostGIS. It uses public GIS layers for administrative regions, health facilities, populated places, and roads to answer accessibility and service-distribution questions.
## Project Objective
Use PostGIS to analyze healthcare facility distribution, nearest-service access, distance-based coverage, and regional service patterns using Ghana geospatial data.
## Research Questions
- How are healthcare facilities distributed across Ghana's administrative regions?
- Which populated places are farthest from their nearest mapped health facility?
- Which communities fall within 5 km, 10 km, and 25 km of a health facility?
- How can spatial SQL support healthcare accessibility planning?
## Dataset Summary
| Layer | Geometry | Records | Use |
| --- | --- | ---: | --- |
| Ghana admin boundaries | Polygon | 16 | Regional aggregation and reporting |
| Health facilities | Point | 1,679 | Service locations |
| Populated places | Point | 8,052 | Demand/community locations |
| Roads | Line | 1,393 | Access context and transport network interpretation |
## Repository Structure
```text
.
|-- data/
| |-- admin_boundaries/
| |-- health_facilities/
| |-- population_places/
| `-- roads/
|-- docs/
| |-- data_notes.md
| |-- methodology.md
| `-- results_interpretation.md
|-- sql/
| |-- 00_create_database.sql
| |-- 01_import_with_shp2pgsql.md
| |-- 02_prepare_layers.sql
| |-- 03_healthcare_access_queries.sql
| `-- 04_analysis_views.sql
`-- README.md
```
## Analysis Included
- PostGIS extension setup
- GIS layer preparation
- spatial indexing
- region-level facility counts
- nearest health facility query
- distance from populated places to facilities
- 5 km, 10 km, and 25 km service coverage checks
- road proximity checks
- reusable SQL views
## Example Query
```sql
SELECT
p.name AS populated_place,
h.name AS nearest_facility,
R …