Aplicación Android de cartografía y gestión forestal
DasoMaps es una aplicación Android de cartografía que incluye funcionalidades pensada en el senderismo y la montaña junto a otras de carácter más técnico relacionadas con el mundo de los Sistemas de Información Geográfica y la gestión del medio natural
Esta app nació con la idea consultar en campo información relacionada con la gestión forestal (información dasométrica) pero creció explorando otros usos como son los relacionados con el ocio al aire libre.
DasoMaps permite usar diversos mapas base online (cacheables), como el MTN 25K del IGN (España), los mapas de OpenStreetMap, ortofotos de España (PNOA), imágenes de satélite/ortofotografía de todo el mundo (otros proveedores), etc.
También permite descargar desde la propia app mapas 25K del IGN en formato MBTiles para usarlos como mapa base offline y búsqueda de localidades usando los servicios online de OpenStreetMap.
Incluye funcionalidades propias de las app de senderismo y montaña (carga y grabación de tracks y rutas en los formatos habituales, kml y gpx).
DasoMaps también puede usarse para trabajar con información propia del usuario, para consultar en campo datos de capas ráster (GeoTIFF), visualizar MBTiles y trabajar con capas vectoriales (KML, GPX, GeoJSON, GeoPackage).
La lectura de GeoPackages (gpkg) creados en QGIS está restringida a capas vectoriales y proyectos QGIS incrustados.
DasoMaps puede registrar datos de campo asociados a puntos, líneas o polígonos capturados con GPS o dibujados manualmente, con formularios CSV configurables.
Por último, se han incorporado diversas funcionalidades y utilidades que complementan los cometidos principales de esta app, entre ellas un desplegable para la gestión de capas, un menú contextual con posibilidad de descargar información administrativa, dasométrica y de vegetación, herramientas para medir distancias, pendientes, etc.
- 10 proveedores: IGN Raster, OpenStreetMap, Ortofotografía PNOA, Satélite ESRI, OpenTopoMap, y más
- MBTiles locales: usa tus propios mapas offline o descarga los del IGN (25K)
- Modos de orientación: orientación dinámica al norte, rotación con dos dedos
- GPS: posicionamiento puntual, permanente, cruz GPS configurable
- Información en pantalla: escala, coordenadas (WGS84 / UTM), orientación, altitud, velocidad, rumbo
- Búsqueda de lugares con Nominatim (OpenStreetMap)
- GeoTIFF: lectura con GDAL, estilos automáticos (altura dominante LiDAR, NDVI, etc.)
- MBTiles: visualización con upscaling automático
- Consulta de valores: valor de píxel puntual o media en círculo configurable
- Opacidad ajustable y orden Z-index configurable
- Formatos soportados: KML, GPX, GeoJSON, GeoPackage (incluyendo agujeros en polígonos)
- Proyectos QGIS: carga estilos y simbología desde GeoPackage
- Persistencia de capas entre sesiones (SharedPreferences)
- Tap en features: info completa (longitud, área, coordenadas, atributos)
- Puntos, líneas y polígonos (GPS o manual)
- Formularios dinámicos configurables (CSV) con auto-incremento
- Exportación: GPX, KML, GeoJSON
- Quick Track: grabación rápida con backup automático y Foreground Service
- Pantalla Tracks con gestión completa de rutas y tracks
- Metadatos: nombre, modo de transporte, tipo de ruta, localidad (auto-GPS), color, grosor
- Perfiles de elevación y gráficos de velocidad
- Pausar/Reanudar: tramos inconexos en KML al pausar
- Foreground Service: grabación con pantalla apagada
- Caché automática de mapas base, gestión por proveedor
- GPS puro (funciona sin conexión a Internet)
- Proyectos locales (.dmp) para guardar configuración completa
- Apertura de ficheros externos desde otras apps (intents Android)
- Catálogo centralizado desde Google Drive (cuenta de servicio)
- Métricas LiDAR: Altura dominante, cobertura forestal, número de pies, volumen, etc.
- Descarga automática con carga en mapa tras descarga
- Información territorial: consulta de municipio y monte UP por GPS
- Medición de distancias en pantalla
- Búsqueda Nominatim: localiza lugares en el mapa
- Modo Admin: control granular de funcionalidades por flavor
- Android 8.0 (API 26) o superior
- ~50-100 MB de espacio para la aplicación
- Los mapas offline y la cartografía de referencia requieren espacio adicional
- GPS para funciones de localización
- Compatible con Android 15 (paginación 16 KB)
Disponible próximamente en la Play Store de Android.
Hasta entonces puedes compilar desde código fuente:
# Clonar repositorio
git clone https://github.com/jlbmdm/dasomaps.git
cd dasomaps
# Compilar flavor estándar
./gradlew assembleStdDebug
# El APK estará en app/build/outputs/apk/std/debug/La app tiene 4 secciones principales accesibles desde la barra inferior:
| Icono | Sección | Descripción |
|---|---|---|
| 🗺️ | Base | Selector de mapa base (10 proveedores) |
| 🧭 | Tracks | Grabación y gestión de tracks de campo |
| 🌐 | [Geo] | Sub-tabs: Raster, Vector, DasoLayers, GeoPackage, Proyectos |
| 🔧 | Tools | Herramientas, descarga de datos, configuración |
La pestaña [Geo] despliega una segunda fila con sub-tabs:
Raster | Vector | DasoLayers | GeoPackage | Proyectos
- Dos dedos: Zoom y rotación
- Pulsación larga: Menú contextual (copiar coordenadas, medir distancia, info territorial)
- Tap en coordenadas: Alternar UTM / WGS84
- Tap en feature vectorial: Ver atributos completos
- Ve a [Geo] → Vector → Panel "Crear geometrías"
- Activa el tipo de captura (punto, línea, polígono)
- Elige modo GPS o Manual
- Captura y guarda con formulario opcional
- Activa el botón Quick Track en Tracks → Configuración (⋮)
- Pulsa
▶️ para iniciar grabación desde el mapa - Usa ⏸️ para pausar sin perder datos
- Pulsa ⏹️ para finalizar y guardar KML
app/src/main/java/com/dasomaps/app/
├── data/
│ ├── carto/ # Cartografía territorial (municipios, montes UP)
│ ├── dasolayers/ # Capas desde Google Drive (cuenta de servicio)
│ ├── drive/ # Google Drive (DriveDataManager, DriveRasterProvider)
│ ├── form/ # Formularios dinámicos
│ ├── ign/ # Descarga MBTiles IGN
│ ├── local/ # Room Database (geometries, layers)
│ ├── mfe/ # Capas del Ministerio (MITECO)
│ ├── model/ # Modelos de datos
│ ├── otrascapas/ # Otras fuentes de capas
│ ├── project/ # Gestión de proyectos .dmp
│ ├── repository/ # Repositorios (Geometry, Layer, Raster)
│ └── track/ # QuickTrackManager
├── service/
│ └── TrackRecordingService.kt # Foreground Service
├── workers/
│ └── NewsUpdateWorker.kt # WorkManager: novedades/consejos
├── utils/
│ ├── geometry/ # GeometryCalculator
│ ├── CoordinateUtils.kt / GeoTIFFReader.kt / MBTilesManager.kt
│ ├── VectorFileParser.kt / GpkgProjectLoader.kt / QgisProjectReader.kt
│ └── PreferencesManager.kt / ...
└── ui/
├── navigation/ # DasoMapsNavHost, Screen
├── map/ # MapScreen (~267 KB) + subpaquetes
│ ├── touch/ # MapTouchHandler, MapSensorManager
│ ├── contextmenu/ # ContextMenuController, MapContextMenu
│ ├── geometry/ # SnippetBuilder
│ └── settings/ # SettingsComponents, ColorPickerSection
├── track/ # TracksScreen, StartTrackDialog, QuickTrackRecordingButton
├── Raster/ # RasterScreen, AddMBTilesDialog, AddGeoTIFFDialog, ...
├── vector/ # VectorScreen + components/, dialogs/, export/
├── geo/ # DasoLayersScreen, GeoPackageScreen, ProyectosScreen
├── tools/ # ToolsScreen + panels/, dialogs/, components/, utils/
├── geometry/ # GeometryComponents, GeometryViewModel
├── shared/ # SharedViewModel
└── components/ # Componentes comunes
| Tecnología | Versión | Uso |
|---|---|---|
| Kotlin | 1.9+ | Lenguaje principal |
| Jetpack Compose | — | UI moderna y declarativa |
| Material 3 | — | Diseño y temas |
| osmdroid | 6.1.20 | Visualización de mapas |
| GDAL | 3.7.0 | Lectura de GeoTIFF (16 KB page size) |
| Room | v6 | Base de datos local |
| JTS | — | Operaciones geométricas |
| NGA GeoPackage | 6.7.5 | Lectura de .gpkg |
| Google Drive API | — | DasoLayers (cuenta de servicio) |
| Retrofit/OkHttp | — | Comunicaciones HTTP |
La app utiliza el directorio /Android/media/com.dasomaps.app/:
Android/media/com.dasomaps.app/
├── carto/ # Cartografía de referencia (municipios, montes UP)
├── dasolayers/ # Capas descargadas desde DasoLayers
├── forms/ # Formularios CSV personalizados
├── geotiff/ # Archivos GeoTIFF locales
├── ign_new/ # MBTiles descargados del IGN
├── mbtiles/ # Mapas base MBTiles locales
├── projects/ # Proyectos guardados (.dmp)
├── tracks/ # Tracks rápidos exportados (KML)
└── vector/ # Capas vectoriales locales
| Flavor | Descripción |
|---|---|
std |
Versión estándar (con funcionalidad profesional) |
trk |
Versión para senderismo y montaña (interfaz simplificada) |
Las contribuciones son bienvenidas. Por favor:
- Haz fork del repositorio
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad) - Haz commit de tus cambios (
git commit -am 'Añade nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
- Código en Kotlin con comentarios en español
- Arquitectura MVVM
- ViewModels exponen
StateFlow - Logs con Timber
Este proyecto está licenciado bajo la GNU General Public License v3.0.
DasoMaps - Aplicación Android de cartografía y gestión forestal
Copyright (C) 2026 Jose Bengoa
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Ver LICENSE para más detalles.
Jose Bengoa
- Desarrollo de aplicaciones GIS para gestión forestal
- Junta de Castilla y León
- osmdroid — Librería de mapas
- GDAL — Lectura de formatos ráster
- NGA GeoPackage — Soporte GeoPackage
- Junta de Castilla y León — Información dasolidar
- IGN España — Servicios WMS/WMTS, MTN 25K, PNOA
- OpenStreetMap — Datos cartográficos y Nominatim
- Claude (Anthropic) — Asistente de desarrollo
Software libre de código abierto, desarrollado con ❤️ para todos