Find a file
Dmitriy Kazimirov dff93187c5 Initial commit: hospital evacuation portal placement script
Fetches hospital data from OSM + Wikipedia, calculates priority (1-5),
outputs CSV with WGS84 portal coordinates for Russia, US, EU.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-31 13:54:01 +06:00
.gitignore Initial commit: hospital evacuation portal placement script 2026-03-31 13:54:01 +06:00
CLAUDE.md Initial commit: hospital evacuation portal placement script 2026-03-31 13:54:01 +06:00
portals.py Initial commit: hospital evacuation portal placement script 2026-03-31 13:54:01 +06:00
README.md Initial commit: hospital evacuation portal placement script 2026-03-31 13:54:01 +06:00

Emergency Evacuation Portal Placement

Python-скрипт для определения оптимальных точек размещения экстренных эвакуационных порталов на базе данных больниц из OpenStreetMap и Википедии.

Результат

CSV-файл output/portals.csv со столбцами:

Столбец Описание
country Страна
city Город
hospital_name Название медицинского учреждения
priority Приоритет размещения портала (1-5, 5 = высший)
latitude Широта (WGS84)
longitude Долгота (WGS84)

Установка зависимостей

pip install requests shapely

Запуск

python portals.py

Скрипт последовательно проходит 4 этапа:

  1. OSM — загрузка больниц из Overpass API (Россия по субъектам, США целиком, 20 стран ЕС)
  2. Nominatim — заполнение городов для больниц без тега addr:city
  3. Википедия — дополнение числа коек из en/ru wiki
  4. Приоритет — расчёт и запись CSV

Полный прогон занимает 15-20 минут.

Покрытие

Регион Страны
Россия 85+ субъектов РФ (по ISO 3166-2)
США Все штаты
Европа DE, FR, NL, IT, ES, PL, SE, NO, FI, DK, AT, CZ, BE, CH, PT, IE, GR, HU, RO, BG

Приоритеты

Приоритет рассчитывается на основе:

  • Число коек (beds) — основной фактор. Берётся из OSM-тега beds=* или из инфобокса Википедии.
  • Наличие экстренной помощи (emergency=yes в OSM) — множитель x2 к скорингу.
  • Фоллбэки — если коек нет: emergency-больница получает базовый скор 200, обычная — 50.
Приоритет Скоринг (score) Критерий
P5 >= 1000 >500 коек (emergency) или >1000 коек (обычная)
P4 >= 400 >200 коек (emergency) или >400 коек (обычная)
P3 >= 150 >75 коек (emergency) или >150 коек (обычная) / emergency без коек
P2 >= 50 >25 коек (emergency) или >50 коек (обычная) / любая без коек
P1 < 50 Небольшие учреждения

Ограничения

  • OSM-данные: тег beds=* заполнен далеко не для всех больниц (хуже всего по РФ, лучше по Германии/Нидерландам).
  • Nominatim: лимит 1 запрос/сек, поэтому этап заполнения городов долгий для десятков тысяч больниц. Можно пропустить, если города не критичны.
  • Википедия: обогащение идёт только для emergency-больниц и первых 500 обычных (лимит API).
  • Overpass API: при таймаутах скрипт автоматически переключается на зеркала (lz4, z, kumi).