Skip to content

Commit b274a65

Browse files
committed
feat: add licensing/citation details
1 parent 6859dad commit b274a65

5 files changed

Lines changed: 255 additions & 39 deletions

File tree

CITATION.cff

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
cff-version: 1.2.0
2+
message: "If you use this software, please cite it using the metadata below."
3+
type: software
4+
title: "Negev Shelter Access Analysis"
5+
version: 1.0.0
6+
date-released: 2026-07-17
7+
abstract: >-
8+
A real-time, browser-based interactive map for analyzing bomb shelter
9+
accessibility for Bedouin communities in the Eastern Negev. The tool
10+
identifies underserved areas and proposes optimal new shelter locations
11+
using precomputed DBSCAN and K-means spatial clustering, with a static
12+
web frontend (deck.gl) and offline Python analysis scripts.
13+
authors:
14+
- family-names: Gal
15+
given-names: "Noam J."
16+
affiliation: "Department of Geography, The Hebrew University of Jerusalem, Jerusalem, 919051, Israel"
17+
email: noamjgal@gmail.com
18+
- family-names: Nikitin
19+
given-names: Artem
20+
affiliation: "The Center for Urban Innovation, The Hebrew University of Jerusalem, Jerusalem, 919051, Israel"
21+
- family-names: Drogochinsky
22+
given-names: Michael
23+
affiliation: "The Center for Urban Innovation, The Hebrew University of Jerusalem, Jerusalem, 919051, Israel"
24+
email: michael.drogochinsky@mail.huji.ac.il
25+
- family-names: Cohen
26+
given-names: Yonatan
27+
affiliation: "Negev Urban Research Lab, Ben Gurion University, Be'er Sheba, 8452566, Israel"
28+
- family-names: Battat
29+
given-names: Merav
30+
affiliation: "Negev Urban Research Lab, Ben Gurion University, Be'er Sheba, 8452566, Israel"
31+
- family-names: Kaufmann
32+
given-names: Talia
33+
affiliation: "The Center for Urban Innovation, The Hebrew University of Jerusalem, Jerusalem, 919051, Israel"
34+
- family-names: Noyman
35+
given-names: Ariel
36+
affiliation: "Media Lab, Massachusetts Institute of Technology, Cambridge, MA 02139, USA"
37+
keywords:
38+
- shelter accessibility
39+
- spatial analysis
40+
- DBSCAN
41+
- K-means
42+
- facility location
43+
- Bedouin
44+
- Negev
45+
- GIS
46+
- deck.gl
47+
- humanitarian mapping
48+
license: MIT
49+
repository-code: "https://github.com/NegevUrbanResearch/shelter_access"
50+
url: "https://negevurbanresearch.github.io/shelter_access/"
51+
contact:
52+
- family-names: Gal
53+
given-names: "Noam J."
54+
email: noamjgal@gmail.com
55+
affiliation: "Department of Geography, The Hebrew University of Jerusalem, Jerusalem, 919051, Israel"
56+
references:
57+
- type: article
58+
authors:
59+
- family-names: Ester
60+
given-names: Martin
61+
- family-names: Kriegel
62+
given-names: "Hans-Peter"
63+
- family-names: Sander
64+
given-names: Jörg
65+
- family-names: Xu
66+
given-names: Xiaowei
67+
title: "A density-based algorithm for discovering clusters in large spatial databases with noise"
68+
year: 1996
69+
collection-title: "Proceedings of the Second International Conference on Knowledge Discovery and Data Mining (KDD '96)"
70+
start: 226
71+
end: 231
72+
- type: article
73+
authors:
74+
- family-names: Li
75+
given-names: Jing
76+
- family-names: Zheng
77+
given-names: An
78+
- family-names: Guo
79+
given-names: Wei
80+
- family-names: Bandyopadhyay
81+
given-names: Nivedita
82+
- family-names: Zhang
83+
given-names: Yi
84+
- family-names: Wang
85+
given-names: Qing
86+
title: "Urban flood risk assessment based on DBSCAN and K-means clustering algorithm"
87+
year: 2023
88+
journal: "Geomatics, Natural Hazards and Risk"
89+
volume: "14"
90+
issue: "1"
91+
doi: "10.1080/19475705.2023.2250527"
92+
- type: article
93+
authors:
94+
- family-names: Liao
95+
given-names: Ke
96+
- family-names: Guo
97+
given-names: Diansheng
98+
title: "A Clustering-Based Approach to the Capacitated Facility Location Problem"
99+
year: 2008
100+
journal: "Transactions in GIS"
101+
volume: "12"
102+
issue: "3"
103+
start: 323
104+
end: 339
105+
doi: "10.1111/j.1467-9671.2008.01105.x"

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2025 Negev Urban Research (NUR Lab) and contributors
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 114 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,131 @@
1-
# 🏠 Negev Shelter Access Analysis
1+
# Negev Shelter Access Analysis
22

3-
A real-time web-based tool for analyzing and optimizing shelter accessibility for Bedouin communities in the Negev region. This application provides instant feedback on optimal shelter placement using precalculated DBSCAN clustering and greedy optimization algorithms. The tool was covered in an [article](https://www.ynet.co.il/architecture/article/ry9tp9gtxe) by Yediot Ahronot.
3+
Interactive map for analyzing bomb shelter accessibility for Bedouin communities in the Eastern Negev. The app identifies underserved areas and proposes optimal new shelter locations using precomputed DBSCAN + K-means clustering. Covered in [Yediot Ahronot / Ynet](https://www.ynet.co.il/architecture/article/ry9tp9gtxe).
44

5+
**Live demo:** [negevurbanresearch.github.io/shelter_access](https://negevurbanresearch.github.io/shelter_access/)
56

6-
## 📊 Data & Analysis
7+
## How to cite
78

8-
### **Input Data**
9-
- **📍 Shelters**:
10-
- Distributed mobile shelter locations and permanent shelters in educational institutes supplied by [Eshkol Negev Mizrach](https://eastnegev.org/)
11-
- Other formal and informal shelter locations collected by [Bimkom](https://bimkom.org/eng/home-mobile/) field workers and through community submissions, including requests for shelters by community members
12-
- **🏘️ Buildings**: Footprint data from [MS Planetary Computer](https://planetarycomputer.microsoft.com/)
9+
If you use this software or its methods, please cite it. GitHub also exposes citation metadata via the **Cite this repository** button (from [`CITATION.cff`](./CITATION.cff)).
1310

14-
## 🛠️ Technical Architecture
11+
After the first Zenodo-archived release, replace the placeholder below with the minted DOI.
1512

16-
### **Frontend Stack (JS)**
17-
- **deck.gl**: High-performance WebGL visualization
18-
- **Turf.js**: Spatial operations (buffering, distance calculations)
19-
- **Vanilla JavaScript**: No framework dependencies
20-
- **Real-time data loading**: JSON files with precalculated results for quick updates
13+
```bibtex
14+
@software{gal_negev_shelter_access_2026,
15+
author = {Gal, Noam J. and Nikitin, Artem and Drogochinsky, Michael and Cohen, Yonatan and Battat, Merav and Kaufmann, Talia and Noyman, Ariel},
16+
title = {Negev Shelter Access Analysis},
17+
year = {2026},
18+
version = {1.0.0},
19+
url = {https://github.com/NegevUrbanResearch/shelter_access},
20+
note = {DOI to be added after Zenodo archive}
21+
}
22+
```
23+
24+
## License
25+
26+
This project is released under the [MIT License](./LICENSE).
27+
28+
## Authors
29+
30+
1. **Noam J. Gal** (corresponding) — Department of Geography, The Hebrew University of Jerusalem
31+
2. **Artem Nikitin** — The Center for Urban Innovation, The Hebrew University of Jerusalem
32+
3. **Michael Drogochinsky** — The Center for Urban Innovation, The Hebrew University of Jerusalem
33+
4. **Yonatan Cohen** — Negev Urban Research Lab, Ben Gurion University
34+
5. **Merav Battat** — Negev Urban Research Lab, Ben Gurion University
35+
6. **Talia Kaufmann** — The Center for Urban Innovation, The Hebrew University of Jerusalem
36+
7. **Ariel Noyman** — Media Lab, Massachusetts Institute of Technology
37+
38+
Project partners also include [Bimkom](https://bimkom.org/eng/home-mobile/) and East Negev / Civix.
39+
40+
## Data & analysis
41+
42+
### Input data
43+
44+
- **Shelters**
45+
- Distributed mobile shelters and permanent shelters in educational institutes from [Eshkol Negev Mizrach](https://eastnegev.org/)
46+
- Formal and informal shelter locations collected by [Bimkom](https://bimkom.org/eng/home-mobile/) field workers and community submissions
47+
- **Buildings**: footprints from [MS Planetary Computer](https://planetarycomputer.microsoft.com/)
48+
49+
Precomputed optimizer outputs ship under `data/optimal_locations/`. Building and administrative GeoJSON used by the map are included in `data/`.
50+
51+
### Site optimization algorithm (Python)
52+
53+
`scripts/shelter_optimizer_ensemble.py` runs an offline DBSCAN + K-means ensemble:
54+
55+
1. **DBSCAN**: natural building clusters across 10 `eps` multipliers (0.1–1.0) relative to coverage radius
56+
2. **K-means**: systematic centroids at `k=750` and `k=1500` (2 seeds each)
57+
3. **Selection**: choose non-overlapping candidates that maximize coverage, accounting for existing shelters
58+
59+
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).
2160

22-
### **Site Optimization Algorithm (Python)**
23-
```python
24-
DBSCAN + Kmeans Ensemble in shelter_optimizer.py
61+
## Quick start (web app)
2562

26-
Algorithm:
27-
1. DBSCAN Clustering: Find natural building clusters using 10 eps values (0.1-1.0)
28-
2. K-means Clustering: Find systematic centroids using k=750,1500 with 2 seeds each
29-
3. Combined Analysis: Calculate centroids and coverage for each cluster
30-
4. Optimal Selection: Choose clusters with most that maximize coverage while ensuring clusters don't overlap
63+
```bash
64+
npm install
65+
npm start
66+
```
67+
68+
Then open [http://localhost:3000](http://localhost:3000). For a live-reload server: `npm run dev`.
69+
70+
The site is static (HTML/CSS/JS + GeoJSON). No backend is required at runtime.
71+
72+
## Reproducing the analysis (Python)
3173

74+
Scripts under `scripts/` are one-off preprocessing jobs; outputs are already stored in `data/`. Re-run only when updating source assets.
75+
76+
```bash
77+
python -m pip install -r requirements.txt
78+
python scripts/shelter_optimizer_ensemble.py
3279
```
33-
## Deployment
34-
Deployed through Github Pages at [https://negevurbanresearch.github.io/shelter_access/](https://negevurbanresearch.github.io/shelter_access/)
3580

36-
## 📁 Project Structure
81+
Other utilities:
82+
83+
| Script | Role |
84+
|---|---|
85+
| `shelter_optimizer_ensemble.py` | DBSCAN + K-means shelter siting |
86+
| `create_lightweight_data.py` | Lightweight buildings GeoJSON for the map |
87+
| `calculate_accessibility_heatmap.py` | Accessibility heatmap JSON |
88+
| `generate_shelter_statistics.py` | Summary charts (writes to `output/`) |
89+
| `filter_geospatial_data.py` | Spatial filters for study area |
90+
| `simplify_statistical_areas.py` | Simplify statistical-area polygons |
91+
92+
### Alert analysis submodule
93+
94+
`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`](./alert-analysis/README.md).
95+
96+
## Technical architecture
97+
98+
| Layer | Stack |
99+
|---|---|
100+
| Visualization | deck.gl (WebGL), Turf.js, vanilla JS |
101+
| Analysis | Python (`numpy`, `scikit-learn`, `geopandas`, `shapely`) |
102+
| Deploy | GitHub Pages (static site) |
103+
104+
## Project structure
37105

38106
```
39107
shelter_access/
40-
├── index.html # Main application
41-
├── css/styles.css # Styling with new color scheme
108+
├── index.html # Main application
109+
├── css/styles.css
42110
├── js/
43-
│ ├── spatial-analysis-simple.js # Data loading & analysis logic
44-
│ └── app.js # Real-time UI controller
45-
├── data/
46-
│ ├── buildings_light.geojson # Building footprints (lightweight)
47-
│ ├── shelters.geojson # Existing + requested shelter
48-
│ └── optimal_locations/ # Precalculated optimization results
49-
├── scripts/ # all scripts should be run only once and outputs are already stored in data folder, only use if needed to update data assets
50-
│ ├── shelter_optimizer.py # DBSCAN + KMeans Ensemble
51-
│ ├── convert_to_geojson.py # Shapefile conversion
52-
│ └── create_lightweight_data.py # Data preprocessing
53-
└── README.md
111+
│ ├── app.js # UI / map controller
112+
│ └── spatial-analysis-simple.js
113+
├── data/ # GeoJSON + precomputed optimizer outputs
114+
├── scripts/ # Offline Python analysis (run once to refresh data)
115+
├── alert-analysis/ # Optional alert scrape / filter tooling
116+
├── CITATION.cff # Citation metadata (GitHub + Zenodo)
117+
├── LICENSE # MIT
118+
├── requirements.txt # Python deps for scripts/
119+
└── package.json
54120
```
55121

122+
## Zenodo archive
123+
124+
To mint a DOI via GitHub ↔ Zenodo:
125+
126+
1. Merge this citation-ready metadata to `main`.
127+
2. On [Zenodo](https://zenodo.org/), enable GitHub integration for `NegevUrbanResearch/shelter_access`.
128+
3. Create a GitHub Release (e.g. tag `v1.0.0`). Zenodo will archive the release and mint a DOI, using fields from `CITATION.cff`.
129+
4. Add the DOI under `identifiers` in `CITATION.cff` and update the BibTeX block above (and optionally a DOI badge in this README).
130+
131+
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.

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,13 @@
1414
"deckgl",
1515
"mapping"
1616
],
17-
"author": "NUR Lab",
17+
"author": "Negev Urban Research (NUR Lab) and contributors",
1818
"license": "MIT",
19+
"repository": {
20+
"type": "git",
21+
"url": "https://github.com/NegevUrbanResearch/shelter_access.git"
22+
},
23+
"homepage": "https://negevurbanresearch.github.io/shelter_access/",
1924
"dependencies": {
2025
"axios": "^1.13.2"
2126
}

requirements.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Python dependencies for offline analysis scripts in scripts/
2+
# Install with: python -m pip install -r requirements.txt
3+
numpy>=1.24,<3
4+
pandas>=2.0,<3
5+
geopandas>=0.14,<2
6+
shapely>=2.0,<3
7+
scikit-learn>=1.3,<2
8+
matplotlib>=3.7,<4
9+
tqdm>=4.65,<5

0 commit comments

Comments
 (0)