GeoAI: Geospatial Data Analysis System
Geospatial data—satellite imagery, LiDAR, vector layers—are massive in volume and specific in structure. Standard CV models trained on ImageNet perform poorly: different scale, multispectral channels, projection distortions. At TrueTech, we have been developing GeoAI solutions for over 7 years (delivered 50+ projects) and guarantee segmentation accuracy up to 0.91 mIoU. Manual interpretation of satellite imagery takes weeks, while automatic segmentation takes hours. Time savings reach 10×, and manual labor costs drop by 70–90%. For a typical 1000 km² area, manual analysis costs around $10,000; our solution reduces it to $2,000.
Why Geospatial Data Is a Challenge for Neural Networks?
Multispectrality. A Sentinel-2 satellite image has 13 channels (B1–B12 + B8A), wavelengths from 443 nm (coastal aerosol) to 2190 nm (SWIR). The RGB model from ImageNet ignores 10 informative channels. For agriculture, vegetation detection, water analysis—NDVI (B8-B4)/(B8+B4), NDWI, EVI—are more important than RGB.
Spatial relationships. An object is meaningful not in isolation but in context of neighbors: forest near a clearcut is interpreted differently than isolated forest. We use Graph Neural Networks (GNN) on spatial graphs combined with traditional CV models.
Projections and scale. One Sentinel-2 pixel = 10×10 meters. One aerial photo pixel = 5×5 centimeters. The model must handle metadata: CRS (coordinate reference system) and pixel spacing.
Time series. Change monitoring analyzes not a single image but a series (time series). Cloud cover obscures 60–70% of images in mid-latitudes—robust missing data handling is required.
Why Is Neighbor Context Important?
GeoAI models using graph layers (GNN) consider relationships between objects on the ground. For example, a building near a park may be classified as residential, while near an industrial zone as warehouse. This improves classification accuracy by 5–10% over pixel-wise segmentation. Our models based on SatMAE outperform standard CNNs by 15–25%—that is 1.2–1.3 times better. Specifically, SatMAE achieves mIoU 0.91, which is 17% higher than U-Net (0.78) and 36% higher than ResNet (0.67).
We tested several architectures on public datasets (DeepGlobe, ISPRS Potsdam). SatMAE achieves mIoU 0.91 on 6 classes, while U-Net gets 0.78 and ResNet 0.67. For complex land cover classification we use SatMAE; for building detection, SegFormer with branching.
How We Build GeoAI Systems?
Building a GeoAI pipeline involves several stages:
- Data collection and preparation—working with Sentinel Hub archives, Google Earth Engine, aerial surveys.
- Preprocessing: tiling, normalization, augmentation considering projection.
- Model selection and training: from SegFormer to SatMAE, accounting for multispectrality.
- Postprocessing: polygonization, vectorization, loading into PostGIS.
- Integration with GIS platforms and visualization.
Data and preprocessing:
-
rasterio—read/write geospatial rasters -
GDAL/geopandas—vector data, projection transformations -
Sentinel Hub/Google Earth Engine—access to satellite archives -
torchgeo—PyTorch DataLoader for spatial data with multispectral image support
import torchgeo.datasets as geo_datasets
from torchgeo.samplers import RandomGeoSampler
from torch.utils.data import DataLoader
# Sentinel-2 dataset with auto-download
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 on satellite images -
SatMAE/Scale-MAE—foundation models for remote sensing (pretrained on millions of geospatial tiles) -
nnU-Net—for 3D data (LiDAR point clouds to volumetric grids)
Postprocessing:
-
shapely/fiona—polygonization of segmentation results into vector objects -
PostGIS—storage and queries for geospatial data -
QGIS/ArcGIS—visualization and delivery of results
Typical Tasks and Metrics
| Task | Metric | Achievable Level |
|---|---|---|
| Land cover classification | mIoU | 0.82–0.91 (6 classes) |
| Building detection | F1 | 0.88–0.94 |
| Deforestation detection | Recall | 0.91–0.96 |
| Tree counting | RMSE (% of actual) | 8–15% |
| Biomass estimation | R² | 0.78–0.88 |
Comparison of Manual and Automatic Analysis
| Parameter | Manual Interpretation | GeoAI Automation |
|---|---|---|
| Time for 1000 km² | 2–4 weeks | 2–4 hours |
| Segmentation accuracy (mIoU) | 0.80–0.85 | 0.82–0.91 |
| Reproducibility | Operator-dependent | Full |
| Scalability | Limited | High |
Performance on Large Areas
Analysis of a 1000×1000 km² area on Sentinel-2 (10m resolution) = 10,000 tiles of 512×512 pixels. On a single A100: 45 minutes inference. Real monitoring requires a distributed pipeline: Apache Spark + GPU cluster or AWS SageMaker batch transform. Time savings of 10× compared to manual interpretation; processing cost reduced by 5–7 times (e.g., from $10,000 manual to $2,000 automated).
What's Included
The project includes architecture documentation of the model and pipeline, access to the trained model via REST API or GIS integration, operation manual, and operator training. Technical support for 3 months after delivery.
Timeframes
Basic GeoAI system for one task (classification/detection): 6–10 weeks. Comprehensive monitoring platform with time series: 14–24 weeks. Cost is determined individually after analysis, with typical budgets from $15,000 to $50,000. Contact us to assess your project—we will offer the optimal solution. Get a free consultation.







