Herramienta de extracción de footprints de edificios desde imágenes satelitales y aéreas. Genera polígonos vectoriales georeferenciados en formato GeoJSON.
Los modelos de segmentación satelital de edificios no están disponibles en la Inference API gratuita de Hugging Face — requieren GPU dedicada o se ejecutan localmente. Este script corre el modelo directamente en tu máquina.
# 1. Python 3.9+ requerido
python --version
# 2. Instalar dependencias
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
pip install transformers pillow rasterio shapely opencv-python numpy
# 3. (Opcional) Si tienes GPU NVIDIA
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118python satseg.py mi_imagen.tifpython satseg.py captura.jpg --lon -0.09 --lat 51.505 --zoom 18python satseg.py captura.jpg --bbox -0.095,51.500,-0.085,51.510python satseg.py imagen.tif \
--model segformer-ade \ # modelo a usar
--simplify 1.0 \ # tolerancia Douglas-Peucker (px)
--min-area 50 \ # área mínima de edificio (px²)
--output mis_edificios # prefijo de archivos de salida--model |
Descripción | Mejor para |
|---|---|---|
segformer-ade |
SegFormer-B5 ADE20k (150 clases) ← default | Imágenes variadas |
segformer-building |
SegFormer-B3 finetuneado en edificios | Satelital urbano |
mask2former-ade |
Mask2Former-Base ADE semantic | Alta precisión |
Recomendación: empieza con segformer-building para imágenes satelitales urbanas.
| Archivo | Contenido |
|---|---|
geoway_<imagen>_<ts>.geojson |
Polígonos de edificios en WGS84 (si hay georef) |
geoway_<imagen>_<ts>_mask.png |
Imagen con overlay cian de edificios detectados |
{
"type": "FeatureCollection",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" }},
"features": [
{
"type": "Feature",
"id": 1,
"properties": {
"id": 1,
"area": 245.3,
"model": "nvidia/segformer-b5-finetuned-ade-640-640",
"tool": "GeoWay SatSeg v3.1",
"georef": true
},
"geometry": {
"type": "Polygon",
"coordinates": [[ [-0.091, 51.506], ... ]]
}
}
]
}Imagen de entrada
│
▼
Carga + normalización
(GeoTIFF preserva transform)
│
▼
Modelo de segmentación
(SegFormer / Mask2Former)
│
▼
Máscara binaria de edificios
│
▼
Morfología (cierre, apertura)
→ elimina ruido, rellena huecos
│
▼
findContours (OpenCV)
│
▼
Simplificación Douglas-Peucker
(Shapely)
│
▼
Conversión px → lon/lat
(Affine transform rasterio)
│
▼
GeoJSON export
- Arrastra el
.geojsona QGIS - Clic derecho → Propiedades → Simbología → Relleno simple, sin relleno, borde cian
- Superpón con capa satelital (XYZ Tiles → Google/Mapbox)
- La precisión depende del modelo y de la resolución de la imagen
- Funciona mejor con imágenes aéreas/satelitales de alta resolución (< 0.5 m/px)
- Imágenes de baja resolución (Sentinel-2, 10 m/px) producen resultados pobres
- No distingue construcciones pequeñas de sombras o pavimento oscuro
© 2025 GeoWay Initiative · MIT License
