Этот проект состоит из двух скриптов для автоматической обработки кадастровых номеров:
- app.py - получение актуальных данных из Росреестра (координаты, адреса, площади и т.д.)
- app-norm.py - нормализация адресов с помощью Pullenti Address SDK
- Установка Python
- Установка зависимостей
- Структура проекта
- Использование
- Возобновление после остановки
- Устранение проблем
# Установка Homebrew (если еще не установлен)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Установка Python 3
brew install python- Скачайте установщик с python.org/downloads
- Запустите .pkg файл и следуйте инструкциям
- Скачайте установщик с python.org/downloads
- Запустите установщик
- ВАЖНО: Поставьте галочку "Add Python to PATH"
- Выберите "Install Now"
sudo apt update
sudo apt install python3 python3-pippython3 --version
pip3 --versionВы должны увидеть версию Python 3.8 или выше.
# Перейдите в папку проекта
cd "/Users/sanek/кадастр"
# Создание виртуального окружения
python3 -m venv venv
# Активация окружения
# macOS/Linux:
source venv/bin/activate
# Windows:
venv\Scripts\activatepip install pandas openpyxl rosreestr2coord tqdmСкрипт уже настроен на использование локальной папки pullenti_address.
- Скачайте Pullenti Address SDK с официального сайта или GitHub
- Распакуйте в папку проекта в директорию
pullenti_address - Проверьте, что путь в 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 # Этот файл
- Подготовьте Excel файл с кадастровыми номерами
- Убедитесь, что есть столбец с названием "Кадастровый №"
- Укажите имя файла в app.py:12:
INPUT_FILE = "40ТБ.xlsx" # Ваш файл
python3 app.py- Читает Excel файл с кадастровыми номерами
- Для каждого номера получает из Росреестра:
- Геометрию (координаты границ участка)
- Адрес
- Площадь
- Категорию земли
- Разрешенное использование
- Кадастровую стоимость
- Дату регистрации
- Тип собственности
- Сохраняет результаты каждые 10 строк в CSV файл
- По окончании создает финальные CSV и XLSX файлы
- Задержка между запросами: 1.0-1.6 секунды (случайная, чтобы избежать блокировки)
- Автосохранение: каждые 10 строк
- Формат вывода: CSV (промежуточный) + XLSX (финальный)
После завершения работы app.py запустите:
python3 app-norm.py- Читает файл
Кадастровые_номера_с_данными_f.xlsx(результат app.py) - Нормализует каждый адрес через Pullenti Address SDK
- Извлекает структурированные данные:
- Город
- Улица
- Дом
- Квартира
- GUID из ГАР (если доступен)
- Сохраняет результаты в CSV и XLSX
Скрипт app.py имеет встроенный механизм возобновления работы!
При каждом запуске скрипт автоматически загружает ранее обработанные данные из CSV файла, поэтому уже обработанные строки не будут потеряны.
-
Определите номер последней обработанной строки
- Посмотрите на последнее сообщение в консоли:
"Сохранено: до строки XXXX" - Или откройте файл
Кадастровые_номера_с_данными_f.csvи посмотрите последнюю заполненную строку
- Посмотрите на последнее сообщение в консоли:
-
Откройте файл app.py
-
Измените значение START_FROM_ROW в строке 21:
START_FROM_ROW = 5172 # Замените на нужный номер
ВАЖНО:
- Нумерация начинается с 0 (первая строка данных = 0)
- Если скрипт остановился на строке 5172, укажите
START_FROM_ROW = 5172 - Если последняя обработанная строка 5171, укажите
START_FROM_ROW = 5172(следующая)
-
Запустите скрипт снова:
python3 app.py
Ситуация: Скрипт остановился, последнее сообщение:
"Сохранено: до строки 5172"
Действия:
1. Откройте app.py
2. Найдите строку 21: START_FROM_ROW = 5172
3. Убедитесь, что значение = 5172 (или измените на нужное)
4. Сохраните файл
5. Запустите: python3 app.py
Скрипт app-norm.py обрабатывает данные за один проход и не требует механизма возобновления. Если он прервался, просто запустите его заново - он выполнится быстро (без задержек между запросами).
pip install pandas openpyxlpip install rosreestr2coordПроверьте, что в вашем Excel файле есть столбец именно с таким названием (с пробелом и знаком №).
- Убедитесь, что папка
pullenti_addressнаходится в директории проекта - Проверьте путь в app-norm.py:8
- Если SDK в другой папке, измените путь:
sys.path.append("ваш_путь_к_pullenti")
Это нормально! Между запросами к Росреестру установлена задержка 1.0-1.6 секунды для:
- Соблюдения правил использования API
- Избежания блокировки по IP
- Стабильной работы
Примерное время:
- 1000 записей ≈ 20-30 минут
- 10000 записей ≈ 3-5 часов
Некоторые кадастровые номера могут отсутствовать в базе или быть недоступны. Это нормально - скрипт пропустит их и продолжит работу.
Если нужно остановить скрипт:
- Нажмите
Ctrl+Cв терминале - Скрипт сохранит текущий прогресс
- При следующем запуске можно продолжить с помощью
START_FROM_ROW
- pandas - работа с таблицами Excel/CSV
- openpyxl - чтение/запись Excel файлов
- rosreestr2coord - получение данных из Росреестра
- tqdm - прогресс-бар в консоли
- pandas - работа с таблицами
- openpyxl - работа с Excel
- tqdm - прогресс-бар
- pullenti - SDK для нормализации адресов
- Все исходные колонки из входного файла
- Тип геометрии
- Координаты (GeoJSON)
- Площадь
- Категория
- Использование
- Адрес
- Статус
- Собственность
- Кад. стоимость
- Дата рег.
- Источник
- Нормализованный адрес
- Город
- Улица
- Дом
- Квартира
- GUID (если есть)
- Статус нормализации
- Запускайте скрипты последовательно: сначала app.py, затем app-norm.py
- Не закрывайте терминал во время работы app.py
- Регулярно проверяйте CSV файл с промежуточными результатами
- Делайте резервные копии результатов после завершения
- Используйте виртуальное окружение для изоляции зависимостей
- Не изменяйте задержку между запросами без необходимости
Проект использует следующие библиотеки:
- rosreestr2coord - получение данных из публичной кадастровой карты Росреестра
- Pullenti Address SDK - нормализация адресов
Убедитесь, что соблюдаете условия использования API Росреестра и лицензию Pullenti SDK.
При возникновении вопросов:
- Проверьте раздел Устранение проблем
- Убедитесь, что все зависимости установлены корректно
- Проверьте формат входных данных
Версия документа: 1.0 Дата обновления: 2025-11-07