Skip to content
View dasomaps's full-sized avatar
  • Spain
  • 17:11 (UTC +02:00)
  • Joined May 3, 2026

Block or report dasomaps

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
dasomaps/README.md

🌲 DasoMaps

Aplicación Android de cartografía y gestión forestal

License: GPL v3 Android Kotlin

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.


✨ Características Principales

🗺️ Mapas Base

  • 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)

📊 Capas Ráster

  • 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

📍 Capas Vectoriales

  • 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)

✏️ Captura de Geometrías

  • 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

🧭 Tracks de Campo

  • 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

🌐 Modo Offline

  • 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)

🛰️ DasoLayers

  • 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

🔧 Herramientas de Campo

  • 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

📱 Requisitos

  • 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)

🚀 Instalación

Desde APK

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/

📖 Uso Básico

Navegación

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

Gestos del Mapa

  • 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

Captura de Geometrías

  1. Ve a [Geo]Vector → Panel "Crear geometrías"
  2. Activa el tipo de captura (punto, línea, polígono)
  3. Elige modo GPS o Manual
  4. Captura y guarda con formulario opcional

Quick Track

  1. Activa el botón Quick Track en Tracks → Configuración (⋮)
  2. Pulsa ▶️ para iniciar grabación desde el mapa
  3. Usa ⏸️ para pausar sin perder datos
  4. Pulsa ⏹️ para finalizar y guardar KML

🏗️ Arquitectura

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ías

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

📂 Almacenamiento

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

🎨 Flavors de Compilación

Flavor Descripción
std Versión estándar (con funcionalidad profesional)
trk Versión para senderismo y montaña (interfaz simplificada)

🤝 Contribución

Las contribuciones son bienvenidas. Por favor:

  1. Haz fork del repositorio
  2. Crea una rama para tu feature (git checkout -b feature/nueva-funcionalidad)
  3. Haz commit de tus cambios (git commit -am 'Añade nueva funcionalidad')
  4. Push a la rama (git push origin feature/nueva-funcionalidad)
  5. Abre un Pull Request

Guía de estilo

  • Código en Kotlin con comentarios en español
  • Arquitectura MVVM
  • ViewModels exponen StateFlow
  • Logs con Timber

📄 Licencia

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.


👤 Autor

Jose Bengoa

  • Desarrollo de aplicaciones GIS para gestión forestal
  • Junta de Castilla y León

🙏 Agradecimientos


Software libre de código abierto, desarrollado con ❤️ para todos

Popular repositories Loading

  1. dasomaps dasomaps Public

    DasoMaps / dmaps — Aplicación Android de cartografía forestal y rutas de montaña

    Kotlin