GeoAI: система анализа геопространственных данных
Растровые снимки, векторные слои, облака точек LiDAR, GPS-треки — геопространственные данные огромны по объёму и специфичны по структуре. Стандартные CV-модели, обученные на ImageNet, работают плохо: другой масштаб, мультиспектральные каналы, проекционные искажения. GeoAI — это отдельная инженерная дисциплина.
Чем геопространственные данные отличаются от обычных изображений
Мультиспектральность. Спутниковый снимок Sentinel-2 — 13 каналов (B1–B12 + B8A), длины волн от 443 нм (coastal aerosol) до 2190 нм (SWIR). RGB-модель из ImageNet игнорирует 10 информативных каналов. Для задач сельского хозяйства, детекции растительности, анализа воды — NDVI (B8-B4)/(B8+B4), NDWI, EVI важнее чем RGB.
Пространственные отношения. Объект значим не сам по себе, а в контексте соседей: лес рядом с вырубкой интерпретируется иначе, чем лес в изоляции. Graph neural networks (GNN) на пространственных графах + традиционные CV модели.
Проекции и масштаб. Один пиксель Sentinel-2 = 10×10 метров. Один пиксель аэрофотоснимка = 5×5 сантиметров. Модель должна работать с метаданными CRS (coordinate reference system) и pixel spacing.
Временная серия. Мониторинг изменений — это не анализ одного снимка, а сравнение серии снимков (time series). Облачность перекрывает 60–70% снимков в умеренных широтах — нужна робастная обработка пропусков.
Стек для GeoAI
Данные и препроцессинг:
-
rasterio— чтение/запись геопространственных растров -
GDAL/geopandas— векторные данные, трансформации проекций -
Sentinel Hub/Google Earth Engine— доступ к спутниковым архивам -
torchgeo— PyTorch DataLoader для геопространственных данных с поддержкой мультиспектральных снимков
import torchgeo.datasets as geo_datasets
from torchgeo.samplers import RandomGeoSampler
from torch.utils.data import DataLoader
# Датасет Sentinel-2 с автоматической загрузкой
dataset = geo_datasets.Sentinel2(
root="data/sentinel2",
bands=["B02", "B03", "B04", "B08"], # RGB + NIR
transforms=normalize_sentinel2
)
sampler = RandomGeoSampler(dataset, size=256, length=10000)
dataloader = DataLoader(dataset, sampler=sampler, batch_size=16)
Models:
-
SegFormer/Swin-UNet— semantic segmentation на спутниковых снимках -
SatMAE/Scale-MAE— foundation models для дистанционного зондирования (претренированы на миллионах геопространственных тайлов) -
nnU-Net— для 3D данных (LiDAR облака точек в объёмные сетки)
Постобработка:
-
shapely/fiona— полигонизация результатов сегментации в векторные объекты -
PostGIS— хранение и запросы к геопространственным данным -
QGIS/ArcGIS— визуализация и доставка результатов
Типовые задачи и метрики
| Задача | Метрика | Достижимый уровень |
|---|---|---|
| Land cover classification | mIoU | 0.82–0.91 (6 классов) |
| Детекция зданий | F1 | 0.88–0.94 |
| Детекция вырубок | Recall | 0.91–0.96 |
| Подсчёт деревьев | RMSE (% от факта) | 8–15% |
| Оценка биомассы | R² | 0.78–0.88 |
Performance на больших территориях
Анализ области 1000×1000 км² на Sentinel-2 (10м разрешение) = 10 000 тайлов 512×512 пикселей. На одной A100: 45 минут inference. Для реального мониторинга нужен распределённый пайплайн: Apache Spark + GPU кластер или AWS SageMaker batch transform.
Сроки
Базовая GeoAI система для одной задачи (классификация / детекция): 6–10 недель. Комплексная платформа мониторинга с временными сериями: 14–24 недели. Стоимость рассчитывается индивидуально.







