Представьте: понедельник утро. К вам приходит заказчик с флешкой. На ней — 47 shape-файлов, 12 таблиц Excel, 3 CSV с разными разделителями и один «экспорт из AutoCAD», который открывается только в блокноте. Задача: всё это объединить, привести к единой системе координат, почистить дубликаты и загрузить в PostGIS до обеда. Какой классический сценарий? Открываем QGIS, тащим слои по одному, вручную меняем СК, копируем-вставляем атрибуты, молимся, чтобы ничего не потерялось. А если завтра придут новые данные? Повторяем всё заново.
Так жить нельзя. Поговорим о ETL.
Что такое ETL и зачем он вам
ETL — Extract, Transform, Load. Три шага, которые избавят от рутины:
- Extract — забираем данные откуда угодно
- Transform — чистим, преобразуем, приводим к единому виду
- Load — загружаем в хранилище
Для геоданных это критично: как правило источники разрознены, форматы несовместимы, системы координат разные, а обновления приходят постоянно.
Реальный кейс: кадастровая база
Ситуация: ежедневно приходят обновления из трёх источников — API Росреестра, FTP местной администрации и собственные съёмки в поле. Архитектура простого пайплайна:

Главные инструменты
Для извлечения
- Python + requests — API с повторными попытками
- watchdog — мониторинг папки на новые файлы
- wget/curl + cron — регулярное скачивание с FTP
Для трансформации
- ogr2ogr — швейцарский нож конвертации форматов и СК
- GeoPandas — очистка атрибутов, фильтрация дубликатов
- PostGIS — сложная пространственная обработка
Для загрузки
- UPSERT — обновляем существующие записи, добавляем новые
- Версионирование — updated_at, data_source, version
- Логирование — что изменилось, когда и почему
Что почитать
- «PostGIS» — документация для пространственной обработки
- Документация GeoPandas — для Python-автоматизации
- GDAL/OGR utilities — для командной строки
ETL — это не про сложные технологии, а про системный подход. Начните с автоматизации одной рутинной операции, и через месяц вы не поверите, как жили раньше.