Skip to content

d3xr/cadastral-map

Repository files navigation

🗺️ Интерактивная карта кадастровых участков

Python License

📋 Описание

Веб-приложение для визуализации кадастровых участков на интерактивной карте. Система автоматически обрабатывает Excel файл с данными из реестра лотов, извлекает кадастровые номера, геокодирует адреса и отображает все участки на карте с возможностью фильтрации и детального просмотра.

🚀 Основные возможности

Карта

  • Интерактивная карта на базе Leaflet с маркерами участков
  • Кластеризация маркеров для удобного отображения большого количества участков
  • Попапы с информацией при клике на маркер (кадастровый номер, площадь, цена, адрес, статус)
  • Цветовая индикация:
    • 🟢 Зеленые маркеры - точные координаты
    • 🟠 Оранжевые маркеры - примерные координаты

Боковая панель

  • Поиск по кадастровому номеру, адресу или описанию
  • Фильтры:
    • Все участки
    • С точными координатами
    • С примерными координатами
    • С указанной ценой
  • Список участков с возможностью прокрутки
  • Карточки участков с ключевой информацией:
    • Кадастровый номер
    • Адрес
    • Площадь
    • Цена (если указана)
    • Статус
    • Форма собственности
    • Вид торгов

Статистика

  • Общее количество участков
  • Количество участков с точными координатами
  • Количество участков с примерными координатами
  • Общая площадь всех участков
  • Количество участков с ценой
  • Общая сумма цен

📁 Структура проекта

cadastral-map/
├── cadastral_map_final.html                    # Главная страница с картой
├── cadastral_data_with_coords.json             # Обработанные данные (489 участков)
├── process_all_lots.py                         # ⭐ Основной скрипт (геокодирование OSM)
├── get_real_coordinates.py                     # Альтернатива (API Росреестра)
├── get_coordinates_api.py                      # Прямой доступ к ПКК API
├── cadastral_processor.py                      # Старая версия
├── Выгрузка результатов поиска в реестре лотов.xlsx  # Входные данные
└── README.md                                   # Документация

🛠️ Технический стек

  • Frontend: React 18, Babel (встроенная компиляция)
  • Карты: Leaflet 1.9.4, Leaflet.markercluster
  • Backend обработка: Python (pandas, requests)
  • Данные: JSON
  • Стилизация: CSS3 с градиентами и анимациями

🚀 Быстрый старт

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

pip install pandas openpyxl requests

2. Обработка данных

Поместите Excel файл в корень проекта и запустите:

python3 process_all_lots.py

Скрипт обработает все участки (~5-10 минут):

  • Извлечет кадастровые номера из Excel
  • Геокодирует адреса через OpenStreetMap Nominatim
  • Сохранит результат в cadastral_data_with_coords.json

Результат: 489 участков обработано, 322 с координатами (65%)

3. Запуск карты

Запустите локальный веб-сервер (требуется для работы из-за CORS):

python3 -m http.server 8000

Откройте в браузере:

http://localhost:8000/cadastral_map_final.html

💻 Использование карты

  1. Поиск - введите кадастровый номер или адрес
  2. Фильтры - выберите категорию участков
  3. Клик на карточку - карта центрируется на участке
  4. Клик на маркер - показывает детальную информацию
  5. "Показать все" - масштабирует карту на все участки

🔧 Методы геокодирования

Основной метод (process_all_lots.py) ⭐

OpenStreetMap Nominatim API

  • ✅ Стабильный и доступный
  • ✅ Не требует регистрации
  • ✅ Кэширование адресов (ускорение обработки)
  • ⚠️ Ограничение: 1 запрос/секунду
  • ⚠️ Примерные координаты (уровень населенного пункта)

Альтернативный (get_real_coordinates.py)

rosreestr2coord + API Росреестра

  • ✅ Точные координаты и границы участков
  • ✅ Полная геометрия
  • ⚠️ Требует доступа к API ПКК
  • ⚠️ Может быть недоступен (SSL/сеть)

Исправленные проблемы

  1. Все 489 участков (было: только 50)
  2. Реальные координаты (было: случайные точки вокруг Казани)
  3. Исправлена обрезка панели (добавлен flex-shrink: 0)
  4. Решена CORS проблема (локальный веб-сервер)

📊 Формат данных

Входные данные (Excel)

  • Файл из реестра лотов с колонками:
    • Характеристики имущества (содержит кадастровый номер)
    • Местонахождение имущества
    • Начальная цена
    • Статус лота
    • И другие...

Выходные данные (JSON)

{
  "cadastral_number": "16:33:060205:216",
  "area": 1393.0,
  "address": "Респ Татарстан, м.р-н Пестречинский",
  "price": 66000.0,
  "coordinates": {
    "lat": 55.7887,
    "lng": 49.1221,
    "approximate": true
  },
  ...
}

🎨 Особенности интерфейса

  • Адаптивный дизайн для мобильных устройств
  • Плавная анимация при наведении и переходах
  • Градиентный заголовок в фирменных цветах
  • Кластеризация маркеров для оптимизации производительности
  • Автоскролл к выбранному участку в списке
  • Визуальная обратная связь при взаимодействии

🚦 Статусы участков

  • 🟢 Прием заявок - активный статус
  • 🟠 Не состоялся - торги не состоялись
  • Другие статусы - нейтральное отображение

📝 Примечания

  • Для корректной работы требуется подключение к интернету (загрузка тайлов карты)
  • Примерные координаты генерируются для демонстрации, когда API недоступен
  • Можно обрабатывать больше 50 участков, изменив лимит в скрипте
  • Карта автоматически центрируется на Республике Татарстан

🔍 Поиск и навигация

  1. Поиск по тексту - введите часть кадастрового номера или адреса
  2. Фильтры - выберите нужную категорию участков
  3. Клик на карточку - центрирует карту на участке
  4. Клик на маркер - открывает информационное окно
  5. Кнопка "Показать все" - масштабирует карту для отображения всех маркеров

📈 Масштабирование

Система может обрабатывать:

  • До 10000+ участков с кластеризацией
  • Поиск в реальном времени
  • Динамическую загрузку координат

Разработано для работы с данными из реестра лотов Республики Татарстан

About

🗺️ Interactive web app for visualizing cadastral plots on a map with geocoding and filtering. Processes Excel data from land auction registry, geocodes addresses via OSM, displays 489 plots on Leaflet map | Интерактивная карта кадастровых участков

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors