Conçue par des forestiers, pour les forestiers. Inventaire terrain, martelage, cartographie et synthèse dendrométrique — entièrement hors-ligne.
GeoSylva est la spécialisation forestière de Quintessences — écosystème d'intelligence environnementale propulsé par le moteur GSIE (General System Intelligence Engine).
Fonctionnalités · Captures d'écran · Architecture · Installation · Contribuer · Licence
GeoSylva remplace le carnet de terrain et les tableurs Excel par une application unique couvrant l'ensemble du workflow forestier : de la saisie des tiges sur le terrain jusqu'au rapport PDF de synthèse dendrométrique, en passant par la mesure de hauteur par clinomètre numérique, la cartographie, le calcul de volume et la simulation de martelage.
| Problème terrain | Solution GeoSylva |
|---|---|
| Saisie papier lente et sujette aux erreurs | Comptage par classe de diamètre avec boutons +/−, GPS automatique |
| Mesure de hauteur sans clinomètre physique | Clinomètre numérique intégré (capteur téléphone, ±0,5° à ±2°) |
| Calculs manuels fastidieux | 7 méthodes de cubage intégrées, calcul temps réel |
| Pas de visualisation sur place | Carte interactive avec 12 couches cartographiques (IGN, satellite, cadastre…) |
| Export compliqué vers SIG | Export Shapefile, GeoJSON, CSV-XY en un clic |
| Pas de réseau en forêt | 100% hors-ligne, tuiles cartographiques téléchargeables |
| Analyse difficile sur le terrain | Tableau de bord visuel avec graphiques temps réel |
GeoSylva digitalise l'inventaire forestier de terrain — un marché aujourd'hui dominé par le papier, les tableurs et des logiciels SIG de bureau inadaptés au terrain.
| 🌳 Marché | Forêt métropolitaine ≈ 17 M ha (~31 % du territoire), ~3,5 M de propriétaires privés, filière forêt-bois ≈ 400 000 emplois. Utilisateurs cibles : experts forestiers, coopératives, ONF, CRPF/CNPF, techniciens et propriétaires gestionnaires.(chiffres publics à confirmer en due diligence) |
| 🎯 Problème | L'inventaire et le martelage se font encore au carnet papier + Excel : lent, source d'erreurs, sans GPS, sans calculs normalisés, ré-saisie au bureau. |
| 💡 Solution | Une app Android tout-en-un, 100 % hors-ligne : saisie terrain, GPS de précision, 7 méthodes de cubage, IBP CNPF officiel, cartographie 12 couches, exports SIG/PDF. |
| 💰 Modèle économique | Logiciel propriétaire (voir LICENSE) : usage personnel et professionnel forestier autorisés, fork/redistribution/modification interdits. Une licence commerciale séparée existe pour les intégrations tierces/SaaS — voir COMMERCIAL_LICENSE.md. Potentiel d'abonnement pro & modules entreprise. |
| 🛡️ Atouts différenciants | IBP CNPF officiel, chiffrement SQLCipher, conformité RGPD documentée, 420+ tests, architecture Clean — maturité technique rare pour un produit de ce stade. |
📄 Dossier détaillé pour investisseurs & partenaires → INVESTORS.md 🤝 Contact direct : hydrogene.bonde@gmail.com — licence commerciale, partenariat, investissement.
- Scoring officiel CNPF — 0, 2 ou 5 points par critère, 10 critères, max 50 points
- Groupe A (×7 critères, max 35 pts) — E1/E2 essences à forte valeur, GB gros bois, BMS/BMC bois mort, DMH dendromicrohabitats, VS végétation sous-bois
- Groupe B (×3 critères, max 15 pts) — CF continuité forestière, CO connexions habitats, HC habitats complémentaires
- Conditions de croissance — Plaine/Colline, Montagne, Sub-alpin, Méditerranéen (IBP v3)
- 5 niveaux de potentiel : Très faible (0–9) / Faible (10–19) / Moyen (20–29) / Bon (30–39) / Très bon (40–50)
- Améliorations prioritaires — top 3 critères faibles mis en avant avec conseil actionnable par critère
- Radar chart intégré — visualisation normalisée des 10 critères
- Rétrocompatibilité — migration automatique des scores v1 (0/1/2) vers v2 (0/2/5)
- Historique IBP — suivi de l'évolution du score dans le temps
- Écran IBP Projets — liste globale de toutes les évaluations, classées par parcelle/date
- Onboarding dédié — 3 pages d'introduction avec explication du scoring
- Export PDF — rapport IBP complet avec niveaux, recommandations et graphiques
- Saisie rapide — comptage par essence et classe de diamètre avec boutons +/−
- Compteur G/ha en temps réel — surface terrière de l'essence affichée en live (N et G m²/ha) pendant la saisie
- Recherche d'essence — barre de recherche instantanée par nom ou code dans la grille des essences
- 95+ essences pré-configurées avec données forestières détaillées (densité, qualité, croissance, usage bois, tolérance ombre, dimensions max)
- 7 méthodes de cubage : Schaeffer 1E/2E, Algan, IFN Rapide/Lent, FGH, Coefficient de forme
- Classification produit automatique — bois d'œuvre (BO), bois d'industrie (BI), bois de chauffage (BCh), déroulage, traverse, charpente…
- Notation qualité bois A/B/C/D avec défauts visuels
- Auto-détection des capteurs — vecteur rotation (±0,5°), gyro+accél. (±1°), accél. seul (±2°), ou saisie manuelle
- Méthode des tangentes — angles vers la cime et la base pour précision sur terrain plat ou en pente
- Hauteur de référence par défaut 1,5 m — correspond à la hauteur de taille standard, ajustable
- Capture moyennée — moyenne des 8 dernières lectures pour éliminer les micro-vibrations
- Auto-capture — verrouillage automatique après 1,5 s de stabilité ≥ 82 %, anneau de progression visuel
- Retour haptique à chaque capture ; écran allumé pendant toute la mesure
- Chips de distances prédéfinies (10/15/20/25 m) + astuce comptage de pas
- Validation d'angle — avertissement orange si angle > 80° (trop près) ou < 5° (trop loin)
- Bouton Recapturer pour relancer sans quitter le dialogue ; indicateur d'étape (1/5, 2/5…)
- Application directe — pré-remplit automatiquement toutes les classes de diamètre vides
- Capture immédiate au tap — GPS déclenché instantanément lors de l'ajout d'une tige
- Profil optimal unique — 6 lectures (max 20m, timeout 15s) équilibre rapidité + précision
- Réutilisation intelligente — si une tige est supprimée puis re-ajoutée (même classe + essence), le dernier point GPS est réutilisé
- Persistance hors-page — la capture GPS continue en arrière-plan même si vous quittez l'écran
- Visualisation de la précision — cercles colorés sur la carte : 🟢 ≤3m (excellent) 🟡 ≤6m (bon) 🟠 ≤12m (modéré) 🔴 >12m (mauvais)
- Moyennage multi-lectures avec rejet d'outliers (MAD-based)
- Monitoring périodique de la qualité du signal GPS
- 12 couches cartographiques : OSM, IGN, satellite, cadastre, forêts, topographique…
- Affichage des tiges sur la carte avec clustering et code couleur par essence
- Tuiles hors-ligne — téléchargez la zone de travail pour utilisation sans réseau
- Import de shapefiles pour superposer vos couches parcellaires
- Filtre de fiabilité GPS — n'affiche que les points sous un seuil de précision configurable
- Tableau de bord visuel — graphiques donut (répartition essences), barres (classes de diamètre), surface terrière par essence
- Synthèse dendrométrique complète — N/ha, G/ha, V/ha, hauteur dominante, diamètre moyen
- Volume partiel intelligent — affiche les résultats disponibles avec % de complétude au lieu de bloquer
- Simulation de coupe — taux de prélèvement N/ha et G/ha, peuplement résiduel
- Garde-fous automatiques — vérification de cohérence des données (30+ contrôles)
- Partage en un tap — bouton ✉ envoie les métriques clés (N, G, V, Dg, valorisation) via toute appli de messagerie
- Tables de prix éditables par essence, produit et classe de diamètre
- Qualité bois A/B/C/D avec multiplicateurs automatiques (A=×2.5, B=×1.5, C=×1.0, D=×0.4)
- Ventilation par produit — décomposition du volume par essence (BO/BI/BCh/PATE) avec valorisation détaillée
- Onglet Évolution — chaque placette dispose d'un onglet "Évolution" à côté des essences, regroupant les tiges par année d'inventaire
- Cartes par année — vue synthétique : nombre de tiges, essences, diamètre moyen, répartition par catégorie de martelage (Avenir, Réserve, Enlever, Dépérir, Biodiversité)
- Page détaillée par année — clic sur une année pour accéder à une page complète :
- Indicateurs globaux — grille de tuiles : Tiges, Essences, Dm, Dg, G, G/ha, N/ha, Hm, Hg, Volume, V/ha, Biomasse, Carbone, Tiges habitat
- Distribution des diamètres — histogramme animé par classes de 5 cm
- Évolution temporelle — line charts canvas (tiges, Dm, G) sur toutes les années disponibles
- Tableau par essence — trié par % surface terrière (nom, N, Dm, G, V, % peuplement)
- Catégories de martelage — barres animées colorées avec proportions
- Indicateurs dendrométriques — liste détaillée avec unités (Dg, G, N/ha, Hm, Hg, V/ha)
- Calculs dendrométriques — Dm (diamètre moyen), Dg (diamètre quadratique), G (surface terrière AFNOR), Hm (hauteur moyenne), Hg (hauteur de Lorey), volume estimé, biomasse et carbone
- Surface automatique — G/ha et N/ha calculés depuis le rayon ou la surface de la placette
- 100% Canvas custom — tous les graphiques sont en Canvas Compose natif, sans dépendance externe
- PDF — rapport A4 avec tableaux dendrométriques, valorisation par essence
- Shapefile (SHP/SHX/DBF/PRJ) — ESRI compatible pour QGIS / ArcGIS
- GeoJSON — avec coordonnées Lambert 93 pour intégration SIG
- CSV / CSV-XY — export tabulaire avec coordonnées géographiques
- Excel (XLSX) — multi-feuilles avec métadonnées
- Cœur métier hors-ligne — inventaire, calculs, carte locale et exports restent disponibles sans compte ni connexion GSIE
- Sauvegarde automatique quotidienne via WorkManager
- Rappel hauteurs avec snooze — reportez les alertes de hauteurs manquantes (1h, 4h, 24h)
- Tri des parcelles — par nom, surface ou date de mise à jour
- Tips contextuels — aide intégrée sur chaque écran
- Onboarding complet — 14 écrans d'introduction interactifs avec consentement RGPD
- Compte facultatif — GeoSylva reste utilisable hors ligne sans créer de compte
- Connexion locale — adresse e-mail et mot de passe via l’identité commune Quintessences
- Connexion Google — Credential Manager Android avec nonce vérifié par GSIE
- Session chiffrée — jetons conservés dans un coffre Android séparé des données de terrain
- Espace compte — état de session, fournisseur courant, rôles et déconnexion
- Profil et vérification — modification du nom affiché et confirmation de l'adresse par code
- Récupération — nouveau mot de passe par code à usage unique, avec fermeture des anciennes sessions
- Options développeur — huit pressions sur la version ouvrent le diagnostic GSIE et la commande explicite de synchronisation
- Parcelles connectées en option — activation manuelle, file SQLCipher, reprise WorkManager, versions serveur et conflits sans écrasement silencieux
- Transport protégé — en production, HTTPS vers la bordure Cloudflare puis tunnel privé vers GSIE ; les JWT et rôles GSIE restent obligatoires
À venir — captures des écrans principaux
app/src/main/java/com/forestry/counter/
├── data/
│ ├── local/
│ │ ├── entity/ # Room entities (29 tables)
│ │ ├── dao/ # Data Access Objects
│ │ ├── CanonicalEssences.kt # 95+ espèces pré-configurées
│ │ ├── DatabaseMigrations.kt# Migrations v1→v33
│ │ └── ForestryDatabase.kt # Room database (v33, SQLCipher)
│ ├── sync/ # Contrat GSIE, file et politique de reprise
│ ├── preferences/ # DataStore (GPS, affichage, tarifs…)
│ ├── repository/ # Implémentations Repository
│ ├── mapper/ # Entity ↔ Domain mappers
│ └── work/ # WorkManager (sauvegardes)
├── domain/
│ ├── model/ # Modèles métier (Tige, Essence, Parcelle…)
│ ├── repository/ # Interfaces Repository
│ ├── calculation/
│ │ ├── ForestryCalculator.kt# Moteur dendrométrique principal
│ │ ├── SanityChecker.kt # Garde-fous & cohérence
│ │ ├── tarifs/ # 7 méthodes de cubage + conversion volume
│ │ └── quality/ # Qualité bois & classification produit
│ ├── location/
│ │ ├── GpsAverager.kt # Moyennage GPS + rejet outliers
│ │ ├── Lambert93Converter.kt# Conversion Lambert93 + Helmert WGS84→ETRS89
│ │ └── OfflineTileManager.kt# Gestion tuiles hors-ligne
│ ├── geo/ # Lambert 93, Shapefile parser, GeoImport
│ ├── security/ # Validation HTTPS, domaines autorisés, protection SSRF
│ └── usecase/export/ # ShapefileExporter, PdfSynthesisExporter, ExportDataUseCase
└── presentation/
├── screens/
│ ├── forestry/ # Inventaire, carte, martelage, dashboard, IBP
│ ├── settings/ # Paramètres, éditeur de prix
│ └── onboarding/ # Assistant d'accueil (14 écrans)
├── components/ # Composants réutilisables
├── navigation/ # Navigation graph (5 sous-graphes)
└── theme/ # Material 3 theming
Principes :
- Clean Architecture — séparation stricte domain / data / presentation
- Reactive — Kotlin Flow du DAO jusqu'à l'UI Compose
- Offline-first — Room + DataStore, aucune dépendance réseau pour les données
- Chiffrement — SQLCipher (Keystore Android) pour les données sensibles au repos
- Sécurité réseau — HTTPS obligatoire, autorités Android, domaines autorisés et protection DNS/SSRF
- Testable — 420+ tests unitaires couvrant calculs, tarifs, export, conversion, IBP
| Catégorie | Technologies |
|---|---|
| Langage | Kotlin 1.9 + Coroutines + Flow |
| UI | Jetpack Compose + Material 3 |
| Base de données | Room (SQLite) — 29 tables, DB v33, SQLCipher |
| Préférences | DataStore Preferences |
| Cartographie | MapLibre GL Native 10.3 |
| Géolocalisation | Google Fused Location Provider |
| Export | Apache POI (XLSX), OpenCSV, Shapefile (pur Java), PDF |
| Sérialisation | kotlinx.serialization |
| Background | WorkManager (sauvegardes et synchronisation réseau différée) |
| Sécurité | SQLCipher (Keystore), HTTPS obligatoire, liste blanche réseau et protection DNS/SSRF |
| Build | Gradle 8.2 + KSP + ProGuard/R8 |
- Android Studio Ladybug (2024.2) ou supérieur
- JDK 17
- Android SDK API 26+ (Android 8.0 Oreo)
- Gradle 8.2+
# 1. Cloner le repository
git clone https://github.com/NeooeN45/GeoSylva.git
cd GeoSylva
# 2. Ouvrir dans Android Studio
# File → Open → Sélectionner le dossier GeoSylva
# 3. Gradle sync automatique, puis :
# Run → Run 'app' (appareil ou émulateur)# Debug
./gradlew assembleDebug
# Release (APK signé)
./gradlew assembleRelease
# → app/build/outputs/apk/release/
# Bundle Play Store (AAB)
./gradlew bundleRelease
# → app/build/outputs/bundle/release/Ajouter les valeurs suivantes dans local.properties ou dans les variables
d’environnement de la CI :
GSIE_API_BASE_URL=https://api.example.org/
GOOGLE_WEB_CLIENT_ID=000000000000-example.apps.googleusercontent.comGSIE_API_BASE_URL doit être une URL HTTPS publique en release. Un build
debug accepte http://127.0.0.1:8000/ pour les essais locaux. Avec un
émulateur ou un appareil relié par ADB :
adb reverse tcp:8000 tcp:8000L'API locale fournit les courriels captifs sur http://localhost:8025.
Le client Google n’est
activé que si le serveur le publie comme disponible et si
GOOGLE_WEB_CLIENT_ID est renseigné. Le client ID OAuth n’est pas un secret ;
aucun secret OAuth ne doit être intégré dans l’application.
GeoSylva n'embarque ni token Cloudflare Access ni certificat mTLS partagé. Ces secrets sont réservés aux services de confiance : un secret placé dans un APK serait extractible. Le mobile s'authentifie toujours avec son compte et ses jetons GSIE.
# Tous les tests unitaires
./gradlew testDebugUnitTest
# Tests spécifiques
./gradlew testDebugUnitTest --tests "*.TarifCalculatorTest"
./gradlew testDebugUnitTest --tests "*.SanityCheckerTest"
./gradlew testDebugUnitTest --tests "*.ForestryCalculatorTest"Couverture des tests (420+ tests unitaires) :
- Calculs de volume (7 méthodes de cubage + conversion volume)
- Classification produit & qualité bois
- Garde-fous de cohérence (SanityChecker)
- Export GeoJSON / CSV-XY / WKT / PDF / XLSX
- Conversion Lambert 93 + transformation Helmert WGS84→ETRS89
- Parseur de formules
- IBP — scoring CNPF officiel (10 critères, groupes A/B)
- Tarifs forestiers (Schaeffer, Algan, IFN, FGH, coefficient de forme)
- Alias d'essences (normalisation noms communs)
- Triangles de structure (classes de diamètre)
- Formatage monétaire (CurrencyFormatter)
- Presets de prix régionaux (RegionalPricePresets)
GeoSylva est la projection forestière du jumeau numérique environnemental fédéré GSIE. L'application reste entièrement offline-first et publie, lorsque l'utilisateur l'autorise, des observations, peuplements, diagnostics, interventions et résultats versionnés vers GSIE.
Les données Ignis, Hydro, Flora et Artemis sont consommées via les contrats GSIE versionnés, jamais par accès direct à leurs bases. Le Hub GeoSylva permet ensuite d'explorer l'évolution de la forêt, comparer des scénarios de croissance, de rendement, de changement d'essences ou de restauration post-incendie sans modifier l'état réel tant qu'aucune décision n'est validée.
Voir GSIE_INTEGRATION.md et
Quintessences/GSIE/ARCHITECTURE/GSIE_ENVIRONMENTAL_DIGITAL_TWIN_PLATFORM.md.
La synchronisation actuellement livrée concerne les parcelles et reste explicitement activée par l'utilisateur. Le cœur forestier, les données de terrain et les calculs locaux restent utilisables hors ligne.
La future analyse stationnelle serveur est cadrée par RFC-0041 et DEC-000073,
encore respectivement Draft et Proposé côté Quintessences. GeoSylva ne
construira pas les règles, qualifications ou états globaux GSIE. Le futur
client enverra une intention avec un UUID de ressource GSIE déjà résolu ; la
préparation, l'hydratation, les preuves et les blocages resteront côté serveur.
La façade, le lien parcelleId → gsie_resource_id, la file Room dédiée et
l'écran de résultats ne sont donc pas présentés comme livrés dans cette
version. Les pages de martelage 3.0 restent indépendantes de cette première
boucle d'intégration.
Références : DEC-000048, RFC-0041, DEC-000073.
- ✅ Aucune publicité — expérience 100% professionnelle
- ✅ Aucun tracking / analytics — aucune télémétrie publicitaire ou comportementale
- ✅ Données de terrain locales par défaut — aucune synchronisation sans action explicite
- ✅ Synchronisation maîtrisée — seules les parcelles sont concernées après activation ; tiges, placettes, photos et diagnostics restent locaux
- ✅ Compte optionnel transparent — seules les données d’identité nécessaires sont transmises à GSIE lors d’une inscription ou connexion
- ✅ Chiffrement SQLCipher — base de données chiffrée au repos (Keystore Android)
- ✅ Réseau durci — HTTPS obligatoire pour GSIE, validation TLS système, refus des redirections non publiques et des résolutions DNS privées
- ✅ RGPD compliant — SCC (Standard Contractual Clauses) pour transferts US (Esri/MapLibre/CartoCDN)
- ✅ ProGuard/R8 — code obfusqué en release
- ✅ Code source auditable — open source sous AGPL-3.0
📄 Politique de confidentialité · 🔐 Registre des traitements RGPD · 📋 Audit forestier complet · 🌐 Audit global
| Document | Description |
|---|---|
| CHANGELOG.md | Historique des versions et modifications |
| QUICK_START.md | Guide de démarrage rapide |
| MASTER_PLAN.md | Vision produit et roadmap stratégique |
| AI_CONTEXT.md | Contexte technique du code pour IA |
| PRIVACY_POLICY.md | Politique de confidentialité RGPD |
| RECORD_OF_PROCESSING_ACTIVITIES.md | Registre des traitements RGPD (Art. 30) |
| AUDIT_FORESTIER_COMPLET.md | Audit scientifique forestier vague 1 |
| AUDIT_GLOBAL_GEOSYLVA.md | Audit global vague 2 (code, UX, sécurité) |
| AUDIT_UI_UX_GLOBAL.md | Audit UI/UX complet |
| RESEARCH_OPPORTUNITIES.md | 150+ opportunités de recherche |
| COMMERCIAL_LICENSE.md | Conditions de licence commerciale |
| GSIE_INTEGRATION.md | Intégration au jumeau numérique fédéré GSIE |
GeoSylva est un logiciel propriétaire — voir LICENSE pour le texte complet.
Usage personnel et professionnel forestier autorisés. Fork, redistribution et modification du code source sont formellement interdits. Le code source, la documentation, les ressources graphiques et les bases de données embarquées restent la propriété exclusive de GeoSylva.
Un accord commercial séparé est requis pour toute intégration tierce, SaaS ou service hébergé n'entrant pas dans le cadre de la licence par défaut. Voir COMMERCIAL_LICENSE.md.
GeoSylva est un logiciel propriétaire (voir LICENSE) — les forks et modifications du code source ne sont pas autorisés. Les retours d'expérience terrain, suggestions de fonctionnalités et rapports de bugs restent les bienvenus (voir contact ci-dessous). Les intégrations commerciales nécessitant des conditions différentes doivent faire l'objet d'un accord séparé — voir COMMERCIAL_LICENSE.md.
Ce projet est développé pour les professionnels de la forêt, et vos retours d'expérience terrain sont la meilleure source d'amélioration. N'hésitez pas, votre avis compte vraiment :
| Type de retour | Comment contribuer |
|---|---|
| 🐛 Bug constaté | Ouvrez une issue avec la description, les étapes de reproduction et votre version Android |
| 💡 Idée de fonctionnalité | Démarrez une discussion — les meilleures idées sont intégrées directement |
| 🌲 Retour d'usage terrain | Partagez vos cas d'utilisation réels — ils guident directement les priorités de développement |
| 📖 Erreur dans la doc | Signalez-la via une issue ou une discussion |
| 🔒 Vulnérabilité de sécurité | Suivez le processus décrit dans SECURITY.md — ne pas publier publiquement |
Vous souhaitez contribuer au code ? Contactez-nous directement via les discussions pour discuter des modalités de collaboration. Certaines contributions peuvent être acceptées sous forme de patches ou de pull requests au cas par cas.
Ouvrez une issue avec :
- Description du problème
- Étapes pour reproduire
- Version Android & modèle d'appareil
- Captures d'écran si applicable
Made with 🌲 by forestry professionals, for forestry professionals.
GeoSylva — L'inventaire forestier, simplifié.
Pour toute question, réclamation ou collaboration :