Интерактивный анализ торговых точек — геокодинг, поиск зданий и квартир в зоне охвата, конкуренты и инфраструктура через OpenStreetMap, демографический расчёт, обогащение из my-gkh.ru, экспорт в Excel.
| Функция | Описание |
|---|---|
| 🌐 Геокодинг | Почта России + Nominatim (резерв) |
| 🏘️ Дома и квартиры | In-circle API Почты России, квартиры → жители |
| 🏪 Конкуренты | Магазины, супермаркеты, гипермаркеты, алко, мясные, молочные (OSM) |
| 🏢 Офисы и образование | Бизнес-центры, ВУЗы, колледжи, ПТУ (OSM) |
| 📊 Демография | Модель домохозяйств с редактируемыми параметрами |
| 🏗️ Обогащение МКД | Год постройки, этажность, материал, УК, поставщики (my-gkh.ru) |
| 📑 Экспорт | Excel-отчёт (7 листов) |
git clone https://github.com/KrivchenkoEgor/retail_location_analyzer.git
cd retail_location_analyzer
pip install -r requirements.txt
streamlit run app.pyОткроется в браузере по адресу http://localhost:8501.
|
| Данные | Источник | Авторизация |
|---|---|---|
| Геокодинг | geo.pochta.ru + Nominatim | ❌ не требуется |
| Дома и квартиры | geo.pochta.ru (in-circle) | ❌ не требуется |
| Конкуренты / офисы / образование | OpenStreetMap (Overpass API) | ❌ не требуется |
| Характеристики МКД | my-gkh.ru |
retail_location_analyzer/
├── 🚀 app.py # Streamlit UI
├── ⚙️ config.py # Константы, таймауты, OSM-теги
├── 📦 requirements.txt
├── core/
│ ├── 🌐 geocoder.py # Адрес → координаты
│ ├── 🏘️ buildings.py # Здания и квартиры в радиусе
│ ├── 🏪 poi.py # Overpass: магазины, офисы, образование
│ ├── 👨👩👧👦 demographics.py # Квартиры → жители
│ ├── 🏗️ my_gkh.py # Обогащение из my-gkh.ru
│ └── 🔄 analyzer.py # Оркестратор
└── exporters/
└── 📑 excel_report.py # Excel-отчёт (openpyxl, 7 листов)
| Параметр | Значение |
|---|---|
| Базовая оценка | квартиры × 2,3 |
| Скорректированная | квартиры × 2,44 |
| 👤 1 чел | 23,5% |
| 👫 2 чел | 30% |
| 👨👩👧 3 чел | 23% |
| 👨👩👧👦 4 чел | 15% |
| 👨👩👧👧👦 5+ чел | 8,5% |
Все параметры редактируются в UI боковой панели
- Overpass API — медленный (~10 с на точку). Между точками автоматическая пауза для защиты от блокировки (429).
flats = 1трактуется как «нет данных по жилому фонду» (аналогично фронтенду Почты России).- my-gkh.ru — сервер может возвращать CAPTCHA при запросах к
/gethouse/. Модуль пытается получить данные напрямую; если не удаётся — детали пропускаются, базовая информация (адрес, УК) доступна всегда.
Made with ❤️ for retail analytics