Skip to content
SashaEeePublic

About

Rosreestr cadastral data pipeline — fetch coords/addresses/areas from Excel and normalize addresses (Pullenti)

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект обработки кадастровых данных

Этот проект состоит из двух скриптов для автоматической обработки кадастровых номеров:

  1. app.py - получение актуальных данных из Росреестра (координаты, адреса, площади и т.д.)
  2. app-norm.py - нормализация адресов с помощью Pullenti Address SDK

Содержание


Установка Python

macOS

Вариант 1: Через Homebrew (рекомендуется)

# Установка Homebrew (если еще не установлен)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Установка Python 3
brew install python

Вариант 2: Официальный установщик

  1. Скачайте установщик с python.org/downloads
  2. Запустите .pkg файл и следуйте инструкциям

Windows

  1. Скачайте установщик с python.org/downloads
  2. Запустите установщик
  3. ВАЖНО: Поставьте галочку "Add Python to PATH"
  4. Выберите "Install Now"

Linux (Ubuntu/Debian)

sudo apt update
sudo apt install python3 python3-pip

Проверка установки

python3 --version
pip3 --version

Вы должны увидеть версию Python 3.8 или выше.


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

1. Создание виртуального окружения (рекомендуется)

# Перейдите в папку проекта
cd "/Users/sanek/кадастр"

# Создание виртуального окружения
python3 -m venv venv

# Активация окружения
# macOS/Linux:
source venv/bin/activate

# Windows:
venv\Scripts\activate

2. Установка библиотек для app.py

pip install pandas openpyxl rosreestr2coord tqdm

3. Установка Pullenti Address SDK для app-norm.py

Вариант А: Если у вас уже есть папка pullenti_address

Скрипт уже настроен на использование локальной папки pullenti_address.

Вариант Б: Скачивание SDK

  1. Скачайте Pullenti Address SDK с официального сайта или GitHub
  2. Распакуйте в папку проекта в директорию pullenti_address
  3. Проверьте, что путь в app-norm.py:8 соответствует расположению SDK:
    sys.path.append("pullenti_address")

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

кадастр/
├── app.py                              # Шаг 1: Получение данных из Росреестра
├── app-norm.py                         # Шаг 2: Нормализация адресов
├── 40ТБ.xlsx                          # Входной файл с кадастровыми номерами
├── Кадастровые_номера_с_данными_f.csv # Промежуточный результат (создается app.py)
├── Кадастровые_номера_с_данными_f.xlsx # Результат app.py
├── normalized_pullenti_no_gar1.csv    # Результат app-norm.py
├── normalized_32ТБ.xlsx               # Результат app-norm.py
├── pullenti_address/                  # SDK для нормализации адресов
├── rosreestr2coord/                   # Библиотека для работы с Росреестром
└── README.md                          # Этот файл

Использование

Шаг 1: Получение данных из Росреестра (app.py)

Подготовка входного файла

  1. Подготовьте Excel файл с кадастровыми номерами
  2. Убедитесь, что есть столбец с названием "Кадастровый №"
  3. Укажите имя файла в app.py:12:
    INPUT_FILE = "40ТБ.xlsx"  # Ваш файл

Запуск

python3 app.py

Что делает скрипт:

  • Читает Excel файл с кадастровыми номерами
  • Для каждого номера получает из Росреестра:
    • Геометрию (координаты границ участка)
    • Адрес
    • Площадь
    • Категорию земли
    • Разрешенное использование
    • Кадастровую стоимость
    • Дату регистрации
    • Тип собственности
  • Сохраняет результаты каждые 10 строк в CSV файл
  • По окончании создает финальные CSV и XLSX файлы

Параметры скрипта:

  • Задержка между запросами: 1.0-1.6 секунды (случайная, чтобы избежать блокировки)
  • Автосохранение: каждые 10 строк
  • Формат вывода: CSV (промежуточный) + XLSX (финальный)

Шаг 2: Нормализация адресов (app-norm.py)

После завершения работы app.py запустите:

python3 app-norm.py

Что делает скрипт:

  • Читает файл Кадастровые_номера_с_данными_f.xlsx (результат app.py)
  • Нормализует каждый адрес через Pullenti Address SDK
  • Извлекает структурированные данные:
    • Город
    • Улица
    • Дом
    • Квартира
    • GUID из ГАР (если доступен)
  • Сохраняет результаты в CSV и XLSX

Возобновление после остановки

Если app.py остановился или был прерван

Скрипт app.py имеет встроенный механизм возобновления работы!

Автоматическое восстановление

При каждом запуске скрипт автоматически загружает ранее обработанные данные из CSV файла, поэтому уже обработанные строки не будут потеряны.

Ручное возобновление с определенной строки

  1. Определите номер последней обработанной строки

    • Посмотрите на последнее сообщение в консоли: "Сохранено: до строки XXXX"
    • Или откройте файл Кадастровые_номера_с_данными_f.csv и посмотрите последнюю заполненную строку
  2. Откройте файл app.py

  3. Измените значение START_FROM_ROW в строке 21:

    START_FROM_ROW = 5172  # Замените на нужный номер

    ВАЖНО:

    • Нумерация начинается с 0 (первая строка данных = 0)
    • Если скрипт остановился на строке 5172, укажите START_FROM_ROW = 5172
    • Если последняя обработанная строка 5171, укажите START_FROM_ROW = 5172 (следующая)
  4. Запустите скрипт снова:

    python3 app.py

Пример

Ситуация: Скрипт остановился, последнее сообщение:
"Сохранено: до строки 5172"

Действия:
1. Откройте app.py
2. Найдите строку 21: START_FROM_ROW = 5172
3. Убедитесь, что значение = 5172 (или измените на нужное)
4. Сохраните файл
5. Запустите: python3 app.py

Для app-norm.py

Скрипт app-norm.py обрабатывает данные за один проход и не требует механизма возобновления. Если он прервался, просто запустите его заново - он выполнится быстро (без задержек между запросами).


Устранение проблем

Ошибка: "ModuleNotFoundError: No module named 'pandas'"

pip install pandas openpyxl

Ошибка: "ModuleNotFoundError: No module named 'rosreestr2coord'"

pip install rosreestr2coord

Ошибка: "Столбец 'Кадастровый №' не найден"

Проверьте, что в вашем Excel файле есть столбец именно с таким названием (с пробелом и знаком №).

Ошибка: "ModuleNotFoundError: No module named 'pullenti'"

  1. Убедитесь, что папка pullenti_address находится в директории проекта
  2. Проверьте путь в app-norm.py:8
  3. Если SDK в другой папке, измените путь:
    sys.path.append("ваш_путь_к_pullenti")

Скрипт app.py работает очень медленно

Это нормально! Между запросами к Росреестру установлена задержка 1.0-1.6 секунды для:

  • Соблюдения правил использования API
  • Избежания блокировки по IP
  • Стабильной работы

Примерное время:

  • 1000 записей ≈ 20-30 минут
  • 10000 записей ≈ 3-5 часов

Ошибки при получении данных из Росреестра

Некоторые кадастровые номера могут отсутствовать в базе или быть недоступны. Это нормально - скрипт пропустит их и продолжит работу.

Прерывание работы

Если нужно остановить скрипт:

  1. Нажмите Ctrl+C в терминале
  2. Скрипт сохранит текущий прогресс
  3. При следующем запуске можно продолжить с помощью START_FROM_ROW

Технические детали

Зависимости app.py

  • pandas - работа с таблицами Excel/CSV
  • openpyxl - чтение/запись Excel файлов
  • rosreestr2coord - получение данных из Росреестра
  • tqdm - прогресс-бар в консоли

Зависимости app-norm.py

  • pandas - работа с таблицами
  • openpyxl - работа с Excel
  • tqdm - прогресс-бар
  • pullenti - SDK для нормализации адресов

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

app.py создает файлы с колонками:

  • Все исходные колонки из входного файла
  • Тип геометрии
  • Координаты (GeoJSON)
  • Площадь
  • Категория
  • Использование
  • Адрес
  • Статус
  • Собственность
  • Кад. стоимость
  • Дата рег.
  • Источник

app-norm.py добавляет колонки:

  • Нормализованный адрес
  • Город
  • Улица
  • Дом
  • Квартира
  • GUID (если есть)
  • Статус нормализации

Рекомендации по использованию

  1. Запускайте скрипты последовательно: сначала app.py, затем app-norm.py
  2. Не закрывайте терминал во время работы app.py
  3. Регулярно проверяйте CSV файл с промежуточными результатами
  4. Делайте резервные копии результатов после завершения
  5. Используйте виртуальное окружение для изоляции зависимостей
  6. Не изменяйте задержку между запросами без необходимости

Лицензия и авторские права

Проект использует следующие библиотеки:

  • rosreestr2coord - получение данных из публичной кадастровой карты Росреестра
  • Pullenti Address SDK - нормализация адресов

Убедитесь, что соблюдаете условия использования API Росреестра и лицензию Pullenti SDK.


Контакты и поддержка

При возникновении вопросов:

  1. Проверьте раздел Устранение проблем
  2. Убедитесь, что все зависимости установлены корректно
  3. Проверьте формат входных данных

Версия документа: 1.0 Дата обновления: 2025-11-07

kadastr

About

Rosreestr cadastral data pipeline — fetch coords/addresses/areas from Excel and normalize addresses (Pullenti)

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages