Interactive map for analyzing bomb shelter accessibility for Bedouin communities in the Eastern Negev. The app identifies underserved areas and proposes model-suggested new shelter locations using precomputed DBSCAN + K-means clustering. Covered in Yediot Ahronot / Ynet.
Live demo: negevurbanresearch.github.io/shelter_access
This project is released under the MIT License.
- Shelters
- Distributed mobile shelters and permanent shelters in educational institutes from Eshkol Negev Mizrach
- Formal and informal shelter locations collected by Bimkom field workers and community submissions
- Buildings: footprints from MS Planetary Computer
Precomputed optimizer outputs ship under data/optimal_locations/. Building and administrative GeoJSON used by the map are included in data/.
scripts/shelter_optimizer_ensemble.py runs an offline DBSCAN + K-means ensemble:
- DBSCAN: natural building clusters across 10
epsmultipliers (0.1–1.0) relative to coverage radius - K-means: systematic centroids at
k=750andk=1500(2 seeds each) - Selection: choose non-overlapping candidates that maximize coverage, accounting for existing shelters
Assumptions encoded in the optimizer include ~7 people per building footprint and a 500-shelter planning target (see constants at the top of the script).
npm install
npm startThen open http://localhost:3000. For a live-reload server: npm run dev.
The site is static (HTML/CSS/JS + GeoJSON). No backend is required at runtime.
Scripts under scripts/ are one-off preprocessing jobs; outputs are already stored in data/. Re-run only when updating source assets.
python -m pip install -r requirements.txt
python scripts/shelter_optimizer_ensemble.pyOther utilities:
| Script | Role |
|---|---|
shelter_optimizer_ensemble.py |
DBSCAN + K-means shelter siting |
create_lightweight_data.py |
Lightweight buildings GeoJSON for the map |
calculate_accessibility_heatmap.py |
Accessibility heatmap JSON |
generate_shelter_statistics.py |
Summary charts (writes to output/) |
filter_geospatial_data.py |
Spatial filters for study area |
simplify_statistical_areas.py |
Simplify statistical-area polygons |
alert-analysis/ scrapes and filters historical rocket-alert places. Large alert GeoJSON files are gitignored; regenerate with the Node export/filter scripts documented in alert-analysis/README.md.
| Layer | Stack |
|---|---|
| Visualization | deck.gl (WebGL), Turf.js, vanilla JS |
| Analysis | Python (numpy, scikit-learn, geopandas, shapely) |
| Deploy | GitHub Pages (static site) |
shelter_access/
├── index.html # Main application
├── css/styles.css
├── js/
│ ├── app.js # UI / map controller
│ └── spatial-analysis-simple.js
├── data/ # GeoJSON + precomputed optimizer outputs
├── scripts/ # Offline Python analysis (run once to refresh data)
├── alert-analysis/ # Optional alert scrape / filter tooling
├── CITATION.cff # Citation metadata (GitHub + Zenodo)
├── LICENSE # MIT
├── requirements.txt # Python deps for scripts/
└── package.json
- Noam J. Gal (corresponding) — Department of Spatial Sciences, The Hebrew University of Jerusalem
- Artem Nikitin — The Center for Urban Innovation, The Hebrew University of Jerusalem
- Michael Drogochinsky — The Center for Urban Innovation, The Hebrew University of Jerusalem
- Yonatan Cohen — Negev Urban Research Lab, Ben Gurion University
- Merav Battat — Negev Urban Research Lab, Ben Gurion University
- Talia Kaufmann — The Center for Urban Innovation, The Hebrew University of Jerusalem
- Ariel Noyman — Media Lab, Massachusetts Institute of Technology
Project partners also included local partners at Bimkom and East Negev / Civix, as well as consultation and data provided by Arch. Lobna Alsana.
To add with details by paper publication
Instructions for adding before publication:
- Merge this citation-ready metadata to
main. - On Zenodo, enable GitHub integration for
NegevUrbanResearch/shelter_access. - Create a GitHub Release (e.g. tag
v1.0.0). Zenodo will archive the release and mint a DOI, using fields fromCITATION.cff. - Add the DOI under
identifiersinCITATION.cffand update the BibTeX block above (and optionally a DOI badge in this README).
Do not add a competing .zenodo.json unless you need Zenodo-only fields; if both exist, Zenodo prefers .zenodo.json and ignores CITATION.cff for deposit metadata.