GEOINDEXR: UN CADRE R FLEXIBLE ET EXTENSIBLE POUR LE CALCUL D’INDICES SPECTRAUX ET GÉOSPATIAUX À PARTIR DE DONNÉES RASTER MULTISPECTRALES

Résumé

Les indices spectraux dérivés des données d’observation de la Terre multispectrales sont fondamentaux en télédétection environnementale, en agriculture de précision, au suivi hydrologique et à l’analyse de l’occupation urbaine des sols. Malgré leur simplicité mathématique, leur mise en œuvre pratique sur des capteurs satellitaires hétérogènes se heurte régulièrement à plusieurs difficultés techniques : désignations différentes des bandes selon les missions, résolutions spatiales et systèmes de référence de coordonnées divergents, différences d’échelle entre les nombres numériques bruts (DN) et la réflectance de surface physique, singularités numériques dues aux dénominateurs nuls dans les rapports normalisés, et risques de sécurité liés à l’évaluation dynamique des formules. Nous présentons GeoIndexR, un package R libre, léger et attentif à ses dépendances, conçu pour standardiser, accélérer et sécuriser le calcul d’indices spectraux et géospatiaux à partir d’images raster. Construit directement sur le moteur spatial moderne terra, adossé à C++, GeoIndexR comprend : (1) un registre centralisé et interrogeable de métadonnées décrivant 16 indices spectraux évalués par les pairs, couvrant la végétation, l’eau, les zones urbaines, l’humidité, les sols et la neige ; (2) un moteur intelligent de résolution des bandes prenant en charge l’affectation explicite des bandes, les préréglages de capteurs (Sentinel-2, Landsat 4–9) et l’identification heuristique par expressions régulières ; (3) un noyau numérique défensif avec division sécurisée contre les singularités ; (4) un moteur sécurisé de formules personnalisées reposant sur l’inspection récursive de l’arbre syntaxique abstrait (AST), empêchant l’exécution de code arbitraire ; et (5) des outils analytiques de post-traitement pour le profilage descriptif des distributions et la visualisation thématique. Nous décrivons l’architecture du système, évaluons ses mécanismes de gestion des erreurs sur des cas limites de singularité, présentons des flux de travail reproductibles au moyen d’un jeu de données synthétique intégré et évaluons ses performances. GeoIndexR est distribué sous licence GNU GPL v3.0. Il est accompagné d’une suite automatisée de tests unitaires comprenant 47 composants, dont les tests passent à 100 %, et respecte les normes de qualité du Comprehensive R Archive Network (CRAN).

Lire l’article complet sur GitHub — GeoIndexR →

1. Introduction

1.1 Fondements biophysiques des indices spectraux

Depuis le lancement du satellite Earth Resources Technology Satellite (ERTS-1 / Landsat 1) en 1972, la télédétection optique spatiale constitue un outil central pour observer et quantifier les systèmes terrestres et aquatiques (Rouse et al., 1974 ; Huete, 1988 ; Gao, 1996). Les capteurs optiques mesurent le rayonnement solaire réfléchi par la surface terrestre dans des bandes de longueurs d’onde discrètes du spectre électromagnétique. Les matériaux de surface présentent des signatures diagnostiques d’absorption et de diffusion, déterminées par leurs propriétés biophysiques et biochimiques (Gitelson et al., 1996 ; McFeeters, 1996 ; Xu, 2006).

Par exemple, la végétation photosynthétique verte absorbe fortement la lumière rouge (640–670 nm) grâce aux pigments chlorophylliens, tandis que la structure spongieuse du mésophylle des feuilles diffuse intensément le proche infrarouge (PIR/NIR, 850–880 nm) (Tucker, 1979). À l’inverse, l’eau libre absorbe presque entièrement le rayonnement PIR tout en réfléchissant modérément les longueurs d’onde vertes (McFeeters, 1996). Les surfaces bâties imperméables présentent, quant à elles, une réflectance dans l’infrarouge à ondes courtes (SWIR) relativement élevée par rapport au PIR (Zha et al., 2003).

Pour condenser les données multispectrales de grande dimension en indicateurs biophysiques sensibles, les spécialistes de la télédétection élaborent des indices spectraux, c’est-à-dire des combinaisons algébriques de bandes conçues pour mettre en évidence certaines caractéristiques tout en atténuant les effets de l’angle d’éclairement solaire, des ombres topographiques et du bruit atmosphérique (Liu et Huete, 1995 ; Rondeaux et al., 1996). L’indice de végétation par différence normalisée (NDVI) (Rouse et al., 1974) a établi le format standard du rapport normalisé. Par la suite, des indices spécialisés ont été développés : suppression de l’influence du sol (SAVI, MSAVI, OSAVI), résistance aux effets atmosphériques (ARVI), limitation de la saturation en présence d’une biomasse élevée (EVI, GNDVI), délimitation de l’eau de surface (NDWI, MNDWI, AWEI), cartographie des zones bâties (NDBI, IBI), humidité du couvert végétal (NDMI, MSI), détection des sols nus (BSI) et couverture neigeuse (NDSI).

1.2 Difficultés techniques des flux de travail opérationnels

Même si le calcul algébrique d’un indice spectral est élémentaire, son intégration dans des chaînes scientifiques reproductibles soulève plusieurs difficultés récurrentes :

  • Hétérogénéité des bandes selon les capteurs : les différentes missions satellitaires attribuent des désignations différentes à des canaux spectraux équivalents (par exemple, le PIR correspond à B08 sur Sentinel-2 MSI, à B5 sur Landsat 8/9 OLI et à B4 sur Landsat 4–7 TM). Un indexage des couches codé en dur peut introduire des erreurs difficiles à détecter.
  • Incompatibilité spatiale : la combinaison de bandes de résolutions natives différentes (par exemple, bandes visibles/PIR à 10 m et SWIR à 20 m sur Sentinel-2), sans contrôles explicites, peut provoquer un décalage spatial silencieux ou un échec de l’exécution.
  • Piège des nombres numériques (DN) : les rapports normalisés sont invariants à un facteur d’échelle commun, mais les formules sensibles à l’échelle et comportant des constantes additives ou des racines non linéaires (SAVI, EVI, MSAVI, AWEI, IBI, par exemple) sont fortement déformées lorsqu’elles sont calculées sur des DN entiers non convertis en réflectance physique de surface.
  • Singularités et division par zéro : les rapports normalisés peuvent avoir des dénominateurs nuls ou presque nuls (|A + B| < 10⁻⁶), notamment dans les ombres sombres, les eaux profondes ou les pixels de bord. Ils produisent alors des valeurs non finies IEEE 754 (Inf, NaN), susceptibles de fausser les analyses zonales ultérieures.
  • Sécurité du prototypage de formules : l’analyse dynamique naïve de chaînes au moyen de eval(parse(text = ...)) introduit des vulnérabilités critiques, notamment l’exécution de commandes arbitraires, ainsi que des plantages non gérés en environnement de production.
  • Dépendances de packages hérités : l’écosystème spatial de R passe du package historique raster au moteur terra, plus performant et fondé sur C++ (Hijmans, 2023), alors que plusieurs packages existants conservent des dépendances anciennes et lourdes.

1.3 Objectifs et contributions de GeoIndexR

Pour résoudre ces difficultés opérationnelles, nous avons développé GeoIndexR. Le package fournit une interface de haut niveau unifiée (geo_index(), geo_indices(), geo_index_all()), des noyaux algébriques vectorisés (calc_*()), un moteur intelligent de résolution des bandes doté de préréglages pour les capteurs Sentinel-2 et Landsat 4–9, une arithmétique tolérante aux singularités, un compilateur de formules personnalisées fondé sur l’arbre syntaxique abstrait (AST) et un registre centralisé de métadonnées couvrant 16 indices. Ses seules dépendances sont R de base et terra.

2. Contexte et travaux connexes

Le tableau 1 compare les fonctionnalités techniques de GeoIndexR à celles d’autres logiciels libres de télédétection en R et en Python.

Tableau 1. Matrice comparative des fonctionnalités de GeoIndexR et des logiciels existants de télédétection.

Tableau 1
FonctionnalitéGeoIndexRRStoolboxspyndex (Python)
Moteur principalterra (C++)raster / terraxarray / rasterio
Interface unifiéeOui (geo_index)Oui (spectralIndices)Oui (compute)
Noyaux vectorisésOui (calc_*)NonNon
Préréglages de capteursSentinel-2, Landsat 4–9, génériqueSentinel-2, Landsat 5, 7, 8Catalogue étendu
Heuristiques par expressions régulièresOuiPartiellesAucune
Alerte sur la mise à l’échelleOui, automatiqueNonPartielle
Division sécuriséeOui, tolérance 10⁻⁶Non (Inf/NaN)Non
Moteur AST sécuriséOui, liste blancheNonNon
Catalogue de métadonnéesOuiLimitéOui (JSON)
DépendancesR de base + terraImportantes (caret, etc.)NumPy, Pandas

RStoolbox (Leutner et al., 2023) a contribué au développement de l’analyse spectrale dans R, mais son architecture reste liée à l’ancien package raster et comporte des dépendances graphiques importantes. Le package Python spyndex (Montero et al., 2023) propose un catalogue étendu, mais n’est pas disponible nativement dans les chaînes de traitement R et ne dispose pas d’une désinfection des formules au niveau AST. GeoIndexR comble cette lacune en proposant une solution moderne, sécurisée et native à terra.

3. Architecture et conception de GeoIndexR

3.1 Objectifs de conception

GeoIndexR privilégie la programmation défensive, une modularité sans surcharge et une gestion de la mémoire évolutive. Les opérations manipulent directement les pointeurs C++ sous-jacents de terra sans créer de copies mémoire inutiles, afin d’assurer de bonnes performances sur de grands rasters.

3.2 Architecture logicielle

L’architecture de GeoIndexR comprend cinq couches modulaires : le registre des indices, le moteur de résolution des bandes, le noyau arithmétique numérique, le moteur de formules personnalisées fondé sur AST et la suite de diagnostic de post-traitement.

Figure 1. Architecture modulaire de GeoIndexR à cinq niveaux.
Figure 1. Figure 1. Architecture modulaire de GeoIndexR à cinq niveaux.

Lors de l’appel à geo_index(), le pipeline coordonne la validation des rasters, la résolution des bandes, l’application du facteur d’échelle et le calcul par le noyau.

Figure 2. Organigramme du flux opérationnel du pipeline unifié geo_index.
Figure 2. Figure 2. Organigramme du flux opérationnel du pipeline unifié geo_index.

3.3 Registre des indices spectraux

La fonction index_registry() constitue la base de connaissances du package et maintient des métadonnées structurées pour 16 indices évalués par les pairs. Les utilisateurs peuvent consulter les indices pris en charge avec list_indices() ou récupérer des profils techniques détaillés au moyen de get_index_meta().

3.4 Correspondance des bandes et préréglages des capteurs

GeoIndexR prend en charge trois mécanismes de résolution des bandes via resolve_bands() : l’affectation explicite par l’utilisateur, les préréglages prédéfinis des capteurs (Sentinel-2, Landsat 8/9 et Landsat 4–7) et les heuristiques automatiques fondées sur des expressions régulières.

Figure 3. Stratégies de résolution des bandes prises en charge par GeoIndexR.
Figure 3. Figure 3. Stratégies de résolution des bandes prises en charge par GeoIndexR.

3.5 Mise à l’échelle de la réflectance

Le paramètre scale_factor = 10000 convertit les nombres numériques entiers en réflectance physique de surface [0, 1]. Pour les indices sensibles à l’échelle, tels que EVI ou SAVI, GeoIndexR examine automatiquement les plages de valeurs du raster. Si des valeurs non mises à l’échelle supérieures à 10 sont détectées en l’absence de facteur d’échelle, un avertissement de diagnostic explicite est émis.

3.6 Formules d’indices personnalisées

Avant l’évaluation d’une formule personnalisée, l’arbre d’expression est inspecté récursivement et comparé à des listes strictes d’opérateurs autorisés (+, −, *, /, ^), de fonctions (sqrt, log, exp, abs, etc.) et de symboles déclarés. Ce mécanisme, implémenté dans formula_engine.R, neutralise les risques d’injection de code.

Figure 4. Validation de l’arbre syntaxique abstrait (AST) et exécution en environnement isolé (sandbox).
Figure 4. Figure 4. Validation de l’arbre syntaxique abstrait (AST) et exécution en environnement isolé (sandbox).

3.7 Validation et gestion des erreurs

Avant le calcul, check_spatial_compatibility() vérifie que les couches ont des dimensions et des emprises spatiales identiques. La routine safe_divide() applique une tolérance aux singularités :

« safe_divide(x, y, tol = 1e-6) = NA if |y| < tol or is.na(x, y) (1) »Équation (1) — division sécurisée

Sur les objets SpatRaster, safe_divide() exécute des appels compilés à terra::ifel(), évitant les copies de tableaux en mémoire et convertissant proprement les singularités en valeurs NA standard.

4. Indices spectraux

4.1 Catalogue des indices Implémentés

Le tableau 2 présente les formules mathématiques, les paramètres et les références bibliographiques fondamentales des 16 indices pris en charge par GeoIndexR.

Tableau 2. Formulation mathématique et paramètres définis par défaut des indices spectraux pris en charge.

Tableau 2
Indice (domaine)Formule mathématiqueParamètresRéférence
NDVI (végétation)(PIR − ROUGE) / (PIR + ROUGE)—Rouse, 1974
SAVI (végétation)((PIR − ROUGE) / (PIR + ROUGE + L)) × (1 + L)L = 0,5Huete, 1988
EVI (végétation)G × (PIR − ROUGE) / (PIR + C1×ROUGE − C2×BLEU + L)G = 2,5Liu, 1995
MSAVI (végétation)(2×PIR + 1 − √((2×PIR + 1)² − 8×(PIR − ROUGE))) / 2—Qi, 1994
OSAVI (végétation)((PIR − ROUGE) / (PIR + ROUGE + θ)) × (1 + θ)θ = 0,16Rondeaux, 1996
ARVI (végétation)(PIR − rb) / (PIR + rb), rb = ROUGE − γ×(BLEU − ROUGE)γ = 1,0Kaufman, 1992
GNDVI (végétation)(PIR − VERT) / (PIR + VERT)—Gitelson, 1996
NDWI (eau)(VERT − PIR) / (VERT + PIR)—McFeeters, 1996
MNDWI (eau)(VERT − SWIR1) / (VERT + SWIR1)—Xu, 2006
AWEI (eau)4×(VERT − SWIR1) − (0,25×PIR + 2,75×SWIR2)—Feyisa, 2014
NDBI (urbain)(SWIR1 − PIR) / (SWIR1 + PIR)—Zha, 2003
IBI (urbain)(NDBI − (SAVI + MNDWI)/2) / (NDBI + (SAVI + MNDWI)/2)L = 0,5Xu, 2007
NDMI (humidité)(PIR − SWIR1) / (PIR + SWIR1)—Gao, 1996
MSI (humidité)SWIR1 / PIR—Rock, 1986
BSI (sol)((SWIR1 + ROUGE) − (PIR + BLEU)) / ((SWIR1 + ROUGE) + (PIR + BLEU))—Rikimaru, 2002
NDSI (neige)(VERT − SWIR1) / (VERT + SWIR1)—Hall, 1995

4.2 Fondements biophysiques et formulations

Le catalogue couvre plusieurs domaines de suivi environnemental : vigueur de la végétation et absorption de la chlorophylle (NDVI, GNDVI), réduction de l’influence du sol dans les couverts végétaux clairsemés (SAVI, MSAVI, OSAVI), résistance aux aérosols atmosphériques (ARVI), limitation de la saturation en biomasse élevée (EVI), délimitation des eaux libres (NDWI, MNDWI, AWEI), cartographie des surfaces urbaines imperméables (NDBI, IBI), teneur en eau du couvert végétal (NDMI, MSI), détection des sols nus (BSI) et couverture neigeuse (NDSI).

5. Tests logiciels

5.1 Cadre de tests unitaires

GeoIndexR comprend une suite complète de tests reposant sur testthat (Wickham, 2023), composée de 47 blocs de tests unitaires répartis dans 9 fichiers. Elle vérifie la précision des calculs d’indices, la résolution des préréglages de capteurs, l’analyse des formules AST, les cas limites, la propagation des valeurs NA et la gestion des facteurs d’échelle. Le taux de réussite rapporté est de 100 %, en moins de deux secondes.

5.2 Intégrité numérique et protection contre les singularités

Les tests vérifient que les dénominateurs nuls (0/0), les dénominateurs proches de zéro (|den| < 10⁻⁶) et les nombres non finis (Inf, NaN) sont convertis en NA sans déclencher d’exceptions non interceptées, ce qui préserve l’intégrité des données pour les modèles spatiaux ultérieurs.

5.3 Génération de données de référence synthétiques

Pour permettre des tests reproductibles sans télécharger des scènes satellitaires de plusieurs gigaoctets, get_example_data() génère un objet SpatRaster à 6 bandes (10 × 10 pixels, EPSG:32631). Il simule des réflectances de surface réalistes pour une canopée forestière (PIR élevé), des plans d’eau (forte absorption dans le vert selon le scénario simulé) et des zones urbaines ou des sols nus (SWIR1 élevé), avec un pixel NA en bordure pour vérifier la propagation des valeurs manquantes.

6. Exemples reproductibles

Indice personnalisé (AST)

ci <- geo_index_custom(
img, formula = '(nir / green) - 1',
bands = c(nir = 'nir', green = 'green')
)

6.1 Flux de travail à un ou plusieurs indices

Le calcul d’indices spectraux ne nécessite que quelques lignes de code:

Indices NDVI / NDWI / NDBI / NDMI

library(GeoIndexR); library(terra)
img <- get_example_data()
ndvi <- geo_index(img, 'NDVI')
stack <- geo_indices(img, c('NDVI', 'NDWI', 'NDBI', 'NDMI'))

6.2 Extraction exhaustive par lots

La fonction geo_index_all() calcule automatiquement tous les indices compatibles avec les bandes disponibles:

Extraction exhaustive

all_idx <- geo_index_all(img)
names(all_idx) #16 couches calculées automatiquement

6.3 Profilage statistique des distributions

La fonction index_summary() calcule des statistiques descriptives pour les couches d’indices, comme illustré dans le tableau 3.

Tableau 3. Statistiques descriptives récapitulatives calculées sur l’ensemble des couches d’indices à l’aide de la fonction index_summary().

Tableau 3
IndiceMinMaxMoyenneMédianeÉcart-typeNA (%)
NDVI-0,3600,7110,1140,10950,1772,06
NDWI-0,6660,366-0,129-0,19250,1912,06
NDBI-0,5430,449-0,0100,00500,1522,06
NDMI-0,4490,5430,010-0,00500,1522,06

6.4 Visualisation géospatiale thématique

La fonction plot_index() produit des cartes thématiques des indices spectraux, en appliquant des palettes adaptées aux catégories : végétation, eau, zones urbaines et humidité.

Figure 5. Cartes thématiques des indices spectraux (NDVI, NDWI, NDBI et NDMI) générées à partir d’images multispectrales.
Figure 5. Figure 5. Cartes thématiques des indices spectraux (NDVI, NDWI, NDBI et NDMI) générées à partir d’images multispectrales.

6.5 Prototypage sécurisé d’indices personnalisés

Le moteur AST permet de prototyper un indice de chlorophylle personnalisé (CIgreen = PIR/Vert − 1) tout en validant la formule avant son évaluation:

7. Evaluation de performances

7.1 Évolutivité mémoire et traitement hors mémoire

Grâce à l’architecture de traitement par blocs de terra, GeoIndexR traite les grands rasters en flux, à l’aide de caches temporaires sur disque lorsque les scènes dépassent la mémoire vive disponible. Cela permet de traiter de manière fiable des tuiles Sentinel-2 complètes (10 980 × 10 980 pixels) sans débordement mémoire.

7.2 Vitesse de calcul et vectorisation

Les noyaux vectorisés calc_*() utilisent des opérations arithmétiques compilées en C++. Le calcul du NDVI sur une grille de 10 000 × 10 000 cellules (100 millions de cellules) prend moins de 1,8 seconde sur un matériel standard, selon les résultats rapportés par l’article.

8. Discussion

GeoIndexR traite plusieurs causes récurrentes d’échec dans les calculs de télédétection en combinant la résolution automatique des bandes selon les capteurs, la gestion défensive des singularités, l’analyse sécurisée des formules au niveau AST et une interopérabilité directe avec terra. Le cadre vise à garantir la reproductibilité mathématique tout en conservant une empreinte logicielle minimale.

9. Limites

GeoIndexR n’effectue pas de modélisation du transfert radiatif atmosphérique (par exemple 6S ou Sen2Cor). Les bandes d’entrée doivent avoir la même résolution spatiale et la même emprise avant le calcul des indices. Les utilisateurs qui travaillent avec des bandes de résolutions différentes doivent les rééchantillonner, par exemple avec terra::resample().

10. Travaux futures

Les prochaines versions devraient étendre les préréglages de capteurs aux constellations commerciales (PlanetScope SuperDove, WorldView-3), ajouter la lecture par plages des GeoTIFF optimisés pour le cloud (COG) et mettre en œuvre un traitement parallèle optionnel par blocs pour les cubes raster multitemporels.

11. Conclusion

GeoIndexR fournit un cadre moderne, robuste et extensible pour le calcul d’indices spectraux dans R. En reliant les cubes raster bruts à un traitement défensif des indices biophysiques, il favorise des flux de travail reproductibles et standardisés en observation de la Terre et en science des données géospatiales.

Disponibilité des données et du code

GeoIndexR est un package R libre distribué sous licence GPL-3. Le code source, la documentation, les vignettes et les tests sont disponibles à l’adresse : https://github.com/sowsalim01/GeoIndexR.

Remerciements

Le développement de GeoIndexR a été inspiré par la communauté de l’observation de la Terre en accès libre et par les auteurs du package terra.

Organisé par GeoIndexR

En savoir plus

Fichiers joints

Documents et figures associés à cet article.

Références bibliographiques

  1. [1] Drusch, M., Del Bello, U., Carlier, S., Colin, O., Fernandez, V., Gascon, F., Hoersch, B., Isola, C., Laberinti, P., & Martimort, P. (2012). Sentinel-2: ESA's Optical High-Resolution Mission for GMES Operational Services. Remote Sensing of Environment, 120, 25–36.
  2. [2] Feyisa, G. L., Meilby, H., Fensholt, R., & Proud, S. R. (2014). Automated Water Extraction Index: A new technique for surface water mapping using Landsat imagery. Remote Sensing of Environment, 140, 23–35.
  3. [3] Gao, B. C. (1996). NDWI—A normalized difference water index for remote sensing of vegetation liquid water from space. Remote Sensing of Environment, 58(3), 257–266.
  4. [4] Gitelson, A. A., Kaufman, Y. J., & Merzlyak, M. N. (1996). Use of a green channel in remote sensing of global vegetation from EOS-MODIS. Remote Sensing of Environment, 58(3), 289–298.
  5. [5] Hall, D. K., Riggs, G. A., & Salomonson, V. V. (1995). Development of methods for mapping global snow cover using moderate resolution imaging spectroradiometer data. Remote Sensing of Environment, 54(2), 127–140.
  6. [6] Hijmans, R. J. (2023). terra: Spatial Data Analysis. R package version 1.7-46. https://CRAN.R-project.org/package=terra
  7. [7] Huete, A. R. (1988). A soil-adjusted vegetation index (SAVI). Remote Sensing of Environment, 25(3), 295–309.
  8. [8] Jensen, J. R. (2007). Remote Sensing of the Environment: An Earth Resource Perspective (2nd ed.). Pearson Prentice Hall, Upper Saddle River, NJ, USA.
  9. [9] Kaufman, Y. J., & Tanré, D. (1992). Atmospherically resistant vegetation index (ARVI) for EOS-MODIS. IEEE Transactions on Geoscience and Remote Sensing, 30(2), 261–270.
  10. [10] Leutner, B., Horning, N., & Schwalb-Willmann, J. (2023). RStoolbox: Tools for Remote Sensing Data Analysis. R package version 0.4.0.
  11. [11] Liu, H. Q., & Huete, A. (1995). A feedback based modification of the NDVI to minimize canopy background and atmospheric noise. IEEE Transactions on Geoscience and Remote Sensing, 33(2), 457–465.
  12. [12] McFeeters, S. K. (1996). The use of the Normalized Difference Water Index (NDWI) in the delineation of open water features. International Journal of Remote Sensing, 17(7), 1425–1432.
  13. [13] Montero, D., Aybar, C., Mahecha, M. D., Martinuzzi, F., Sengupta, A., & Camps-Valls, G. (2023). A standardized catalogue of spectral indices to advance the use of remote sensing in Earth system research. Scientific Data, 10(1), 197.
  14. [14] Pebesma, E. (2018). Simple Features for R: Standardized Support for Spatial Vector Data. The R Journal, 10(1), 439–446.
  15. [15] Qi, J., Chehbouni, A., Huete, A. R., Kerr, Y. H., & Sorooshian, S. (1994). A modified soil adjusted vegetation index. Remote Sensing of Environment, 48(2), 119–126.
  16. [16] R Core Team. (2024). R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, Vienna, Austria.
  17. [17] Rikimaru, A., Roy, P. S., & Miyatake, S. (2002). Tropical forest cover density mapping. Tropical Ecology, 43(1), 39–47.
  18. [18] Rock, B. N., Vogelmann, J. E., Williams, D. L., Vogelmann, A. F., & Hoshizaki, T. (1986). Remote detection of forest damage. BioScience, 36(7), 439–445.
  19. [19] Rondeaux, G., Steven, M., & Baret, F. (1996). Optimization of soil-adjusted vegetation indices. Remote Sensing of Environment, 55(2), 95–107.
  20. [20] Rouse, J. W., Haas, R. H., Schell, J. A., & Deering, D. W. (1974). Monitoring the Vernal Advancement and Retrogradation (Green Wave Effect) of Natural Vegetation. NASA/GSFC Type III Final Report, Greenbelt, MD, USA.
  21. [21] Roy, D. P., Wulder, M. A., Loveland, T. R., Woodcock, C. E., Allen, R. G., Anderson, M. C., Helder, D., Irons, J. R., Johnson, D. M., & Kennedy, R. (2014). Landsat-8: Science and product vision for terrestrial global change research. Remote Sensing of Environment, 145, 154–172.
  22. [22] Tucker, C. J. (1979). Red and photographic infrared linear combinations for monitoring vegetation. Remote Sensing of Environment, 8(2), 127–150.
  23. [23] Wickham, H. (2023). testthat: Get Started with Testing. R package version 3.2.0.
  24. [24] Xu, H. (2006). Modification of normalised difference water index (NDWI) to enhance open water features in remotely sensed imagery. International Journal of Remote Sensing, 27(14), 3025–3033.
  25. [25] Xu, H. (2007). Extraction of urban built-up land features from Landsat imagery using a new index-based approach. International Journal of Remote Sensing, 29(14), 4267–4283.
  26. [26] Xue, J., & Su, B. (2017). Significant remote sensing vegetation indices: A review of developments and applications. Journal of Sensors, 2017, 1353691.
  27. [27] Zha, Y., Gao, J., & Ni, S. (2003). Use of normalized difference built-up index in automatically mapping urban areas from TM imagery. International Journal of Remote Sensing, 24(3), 583–594.

Discussion scientifique

Aucun commentaire publié pour le moment.

Connectez-vous pour participer Connexion