Quantcast
Channel: qgis | Blog SIG & Territoires
Viewing all 122 articles
Browse latest View live

Tutoriel SCP:réussir un classement supervisé avec calcul de texture(2)-bandes RVB

$
0
0

Dans cette série d’articles nous utilisons le plugin SCP de QGis pour effectuer un classement supervisé avec calcul de texture. Nous allons voir trois traitements différents pour la même zone littorale:

  • le traitement classique des trois bandes RVB des images photographiques de drone
  • le traitement après calcul des valeurs de texture de ces mêmes images
  • le traitement après calcul des composantes principales des valeurs de texture

Classification basée sur les trois bandes d’origine ‘RVB)

Ce premier traitement est réalisé à partir du chargement des trois bandes originales, préalablement extraites de l’image RVB. On retrouve alors un band set tel que le suivant :

classement supervisé avec calcul de texture

Ce qui donne en visualisation :

Où l’on a entouré les trois grandes zones recherchées :la zone d’herbiers de Spartines, celle de zostères et les sédiments nus.

Comme nous le ferons pour toutes les autres configurations de bandes, on commence par effectuer une première série rapide de ROIs représentatifs des trois classes recherchées.

Ce qui donne au niveau des données d’entrainement la configuration suivante

On charge les trois classes dans le Graphique de Signatures Spectrales du plugin SCP pour avoir une vue de la signature spectrale de chacune des classes.

Le but est d’avoir une idée d’en quelle mesure nous arriverons à discriminer les trois classes recherchées.

On voit rapidement que, si la classe sédiments est bien séparée dans la première bande (rouge), la superposition des deux types d’herbier (Spartine et zostère) est importante.

Pour quantifier cette impression visuelle, on utilise l’outil « Calculer les distances spectrales » (bouton entouré dans l’image précédente).

Pour chaque paire possible de classes, on retrouve 4 calculs de distance différents. A partir de ces valeurs on a deux informations importantes :

  • Quel est le meilleur type d’algorithme de classification à utiliser
  • A quel point, cet algorithme sera capable de discriminer les classes recherchées.

Nous verrons plus loin en détail comment est réalisé le calcul de chacune de ces distances. Mais dès à présent on peut donner les critères de choix.

Nous avons trois algorithmes de classification :

  • Minimum Distance : Distance minimale
  • Maximum Likelihood : maximum de ressemblance
  • Spectral Angle Mapping : calcul de l’angle spectral

Le calcul des distances affiche les distances spectrales des signatures, qui sont utiles pour l’évaluation de la séparabilité des ROI. Pour plus de détails, consultez le manuel du plugin SCP

Les distances spectrales suivantes sont calculées :

Distance Jeffries-Matusita : plage [0 = identique, 2 = différente] ; utile en particulier pour les classifications de vraisemblance maximale. Cet indice s’applique à des distributions et non à des vecteurs comme les deux indices ci-après. Un avantage pratique de la distance J-M, c’est que cette mesure tend à supprimer les valeurs de séparabilité élevées, tout en exagérant les faibles valeurs de séparabilité.

Angle Spectral : plage [0 = identique, 90 = différent] ; utile en particulier pour les classifications de calcul d’angles spectraux ;

Distance euclidienne : utile en particulier pour les classifications de distance minimale ;

Similarité de Bray-Curtis: plage [0 = différente, 100 = identique] ; utile en général ;

Les valeurs sont affichées en rouge si les signatures sont particulièrement similaires.

Dans notre cas on observe :

On peut oublier l’algorithme de calcul de l’angle spectral car les trois valeurs indiquent l’impossibilité de discrimination de nos trois classes avec cet algorithme.

Pour ce qui est de l’algorithme de maximum de ressemblance, il n’arrivera pas à discriminer les deux types d’herbier.

Nous pourrons essayer le seul autre algorithme, celui de la distance minimale, mais en sachant que la distance affichée d’environ 50 (les unités de distance sont les mêmes que celles des bandes, dans notre cas de valeurs comprises entre 0 et 255) entre les deux types d’herbiers n’est pas très encourageante.

Une distance de 0 dirait que les deux signatures sont identiques, le maximum de différence possible sur les trois bandes étant de 441.

Enfin, l’indice de Bray-Curtis (0->100, 100=identique) n’est pas très encourageant non plus

Le coefficient de Bray-Curtis

.

Yij = fréquence pour la ième valeur de pixel de la première classe ;

Yik = valeur pour la ième valeur de pixel de la deuxième classe;

δjk = dissimilarité entre la premier et la deuxième classe pour les différentes valeurs de pixels présents; 

A = nombre de pixels de la ROI de la première classe ;

 B = nombre de pixels de la ROI de la deuxième classe; 

W = somme des valeurs de fréquence les plus faibles pour chaque valeur de pixel commune aux deux classes.

L’indice de dissimilarité de Bray-Curtis varie entre 0 (valeurs identiques pour toutes les espèces) et 1 (aucune espèce en commun), mais pour mieux comprendre le résultat ces valeurs sont multipliées par 100.

Conclusions

Nous verrons plus loin quels moyens on peut utiliser pour palier au plus ces inconvénients, quand on n’a pas d’autre choix.

Le fait de ne travailler qu’avec trois bandes, contrairement aux images satellite, diminue sensiblement les possibilités de discrimination des différentes classes.

De plus, en, milieu littoral les classes principales se différencient le plus souvent par une nuance de couleur plutôt que par des couleurs différentes. Une simple différence d’éclairage due à l’heure de prise de vue ou à la nébulosité, suffit à produire les mêmes effets de nuance.

Nous verrons dans le prochain article l’apport des données de texture calculées à partir des trois bandes d’origine.

The post Tutoriel SCP:réussir un classement supervisé avec calcul de texture(2)-bandes RVB first appeared on Blog SIG & Territoires.

Tutoriel SCP:réussir un classement supervisé avec calcul de texture(3)-bandes RVB+calculs de texture

$
0
0

Dans cette série d’articles nous utilisons le plugin SCP de QGis pour effectuer un classement supervisé avec calcul de texture. Nous avons vu dans l’article précédent le traitement classique des trois bandes RVB des images photographiques de drone sur une zone littorale.

Dans cet article nous allons voir le traitement après calcul des valeurs de texture de ces mêmes images.

Chargement des bandes

Ce deuxième traitement est réalisé à partir du chargement des trois bandes originales du traitement précédent, et des douze bandes normalisées issues du traitement r.texture sur la bande verte de l’image d’origine.

On retrouve alors un band set tel que le suivant :

Tutoriel SCP:réussir un classement supervisé avec calcul de texture(3)-bandes RVB+calculs de texture

On crée rapidement un fichier d’entrainement avec nos trois classes.

Si on commence par la zone d’herbier de Spartine, on a le message d’avertissement suivant :

Sur le ROI des zostères on obtient le même avertissement. Par contre pour le ROI de sédiments il n’en est rien.

Nous avons donc nos trois ROIs correspondants à nos trois classes recherchées.

Explication du message d’avertissement

Le message d’avertissement est dû à une seule raison : lors du calcul de la matrice de covariances des valeurs des différentes bandes, on obtient une matrice singulière.

Une raison fréquente est que la zone du ROI correspondant est trop petite ou quelle est trop homogène.

Dans notre cas c’est un peu plus compliqué. Voyons le graphe des signatures spectrales de la classe « herbier »:

De la classe « zostère »:

Et de la classe « sédiment »:

Notre problème vient de la prise en compte de deux bandes, les numéros 12 et 15, où les valeurs pour les deux types d’herbier sont 0. Ce n’est pas le cas pour les sédiments.

Étant donné que la méthode de maximum de vraisemblance calcule une distribution gaussienne pour chaque bande, avec des valeurs de 0 cela devient impossible.

Nous avons donc le choix entre garder ces bandes et exclure dès maintenant l’utilisation de cet algorithme pour notre classification, ou bien éliminer ces bandes en entrée et de garder cette possibilité.

Comme nous disposons d’un nombre important de bandes, il peut être plus avisé d’en éliminer deux et garder la possibilité de l’algorithme de maximum de vraisemblance.

On peut même aller plus loin. Nous avons vu que l’utilisation des trois bandes RVB d’origine n’est pas vraiment discriminante. Nous pouvons donc essayer un traitement qui ne prenne pas non plus en compte ces trois bandes.

Classification basée sur seulement les dix bandes issues de r.texture

Chargement des bandes

Ce troisième traitement est réalisé à partir du chargement des dix bandes normalisées issues du traitement r.texture sur la bande verte de l’image d’origine. Nous excluons les bandes 12 et 15 correspondantes aux valeurs de r.texture DV et MOC-2 ainsi que les trois bandes RVB d’origine.

On retrouve alors un band set tel que le suivant :

Avec un rendu différent des précédents, car nous n’avons plus les trois bande visibles RGV.

Nous créons rapidement un fichier d’entrainement avec nos trois classes.   Ce qui donne au niveau des données d’entrainement la configuration suivante:

Analyse des signatures spectrales

On charge les trois classes dans le Graphique de Signatures Spectrales du plugin SCP pour avoir une vue de la signature spectrale de chacune des classes.

Le but est d’avoir une idée d’en quelle mesure nous arriverons à discriminer les trois classes recherchées.

On ouvre la fenêtre de calcul des distances spectrales, comme lors du premier traitement :

L’ensemble des valeurs obtenus est bonne. Dans les distances de Jeffries-Matusita on voit que l’on peut utiliser l’algorithme de vraisemblance maximal, même pour discriminer les deux types d’herbier, avec une valeur de 1,79 (sur une échelle de 0 à 2). Les angles spectraux sont suffisamment éloignés pour pouvoir utiliser l’algorithme de calcul d’angle spectral. Les distances euclidiennes sont suffisamment grandes pour utiliser l’algorithme de distance minimal.

Maintenant que l’on a un band set adapté à nos objectifs, on pourrait commencer à affiner les critères de classification. Mais s’il y avait toujours un doute sur la discrimination d’une ou plusieurs classes, nous allons voir,dans le prochain article, une autre solution possible à de stade : l’utilisation de l’analyse en composantes principales.

The post Tutoriel SCP:réussir un classement supervisé avec calcul de texture(3)-bandes RVB+calculs de texture first appeared on Blog SIG & Territoires.

Modélisation spatio-temporelle avec une équation intégro-différentielle (IDE) avec QGis et R(suite)

$
0
0

Dans l’article précédent, nous avons considéré le cas d’un noyau spatialement invariant, c’est-à-dire le cas où le noyau m(s,r;θp) n’est qu’une fonction de r s . Dans cet article, nous considérons le cas où un ou plusieurs des paramètres θ sont variables spatialement. De tels modèles sont nécessaires lorsque le processus spatio-temporel présente, par exemple, une dérive qui varie selon l’espace.

Mais il faut des données…

Pour modéliser de telles données, nous avons besoin d’un grand nombre de points temporels,disons au moins 15. Cela est important, car il est difficile d’obtenir des estimations raisonnables des paramètres spatialement répartis, à moins que les données couvrent une grande partie du domaine spatial pendant au moins quelques points de temps consécutifs.

Les noyaux variables spatialement peuvent être introduits en spécifiant l’argument kernel_basis dans l’appel à IDE. Les fonctions de base utilisées par IDE sont de la même classe que celles utilisées par le package FRK (fixed rank krigging).

Rappel :Pour savoir ce qu’est IDE

Pour comprendre les modèles spatio-temporels dynamiques, reportez-vous au chapitre 5 de l’ouvrage Spatio-Temporal Statistics with R de Christopher K. Wikle, Andrew Zammit-Mangion, et Noel Cressie, piublié par Chapman & Hall/CRC et disponible en téléchargement ici.

La documentation de la bibliothèque R d’IDE est disponible ici.

C’est quoi des fonctions de base?

Une image valant plus qu’un long discours, voyons un exemple:

A gauche: fonctions de base A droite: processus que l’on veut modéliser

On a un phénomène représenté par la courbe rouge de l’image de droite. On peut essayer de trouver une seule fonction qui nous donne le bon y pour chaque x de la courbe, mais vous présentez que ce n’est pas simple.

Une autre manière d’aborder et de résoudre le problème, c’est de prendre une série de fonctions, toutes égales, mais qui sont décalées sur l’axe des x.

Si vous observez la figure de gauche, chaque courbe, à sa base couvre une vingtaine de valeurs de x.

On va avoir donc la première courbe, représentée par une fonction (dans cette image ce sont des fonctions bicarrées) f1(x), puis une deuxième f2(x), etc.

Il nous suffit de trouver un facteur ∝1 , ∝2, … à multiplier pour chaque fonction et à les additionner pour construire notre courbe rouge :

Y(x)= ∝1.f1(x) + ∝2.f2(x) + . . . + ∝n.fn(x)

On doit donc faire trois choix pour ajuster nos fonctions de base à notre processus:

  • le type de fonction
  • la taille de la base à utiliser que nous appellerons l’ouverture (aperture)
  • le nombre de résolutions. On verra plus loin à quoi cela correspond.

Les types de fonction

Parmi les nombreux types de fonctions existantes, le package FRK de R, qui est celui qui est utilisé pour la modélisation IDE, implémente quatre types de fonctions:

Les fonction bicarrées

Une petite formule pour définir ce type de fonction:

Et une image pour mieux comprendre:

Représentation de 5 fonctions bicarrées avec une ouverture R = 3.5

Dans la formule, R représente l’ouverture de la fonction.

Les fonctions Gaussiennes

Ces fonctions correspondent à la formule:

Et son image correspondante:

Représentation de 5 fonctions gaussiennes avec une ouverture σ=1

Dans la formule, σ, la déviation standard, représente l’ouverture de la fonction.

Les fonctions exp (exponentielles)

Ces fonctions correspondent à la formule:

Et son image correspondante:

Représentation de 5 fonctions exponentielles avec une ouverture τ=1

Dans la formule, τ, la valeur d’inflexion, représente l’ouverture de la fonction.

Les fonctions Matern32

Ces fonctions correspondent à la formule:

Et son image correspondante:

Représentation de 5 fonctions Matern32 avec une ouverture κ=1

Dans la formule, κ, la valeur d’échelle, représente l’ouverture de la fonction.

Ouverture des fonctions

Les images des fonctions précédentes permettent de voir le profil de celles-ci. Au niveau spatial (x/y) elles correspondent à des cercles ou des ellipses.

On doit s’assurer que les bases des fonctions couvrent complètement la zone d’étude et se superposent suffisamment pour que au moins cette surface corresponde à la moitié de la fonction adjacente. Si non, il y a des valeurs du processus qui ne pourraient pas être représentées, même en affectant un facteur multiplicatif plus fort.

Une fonction de R permet de tracer les emprises des fonctions de base retenues:

Cette image montre les emprises de 12 fonctions de base, réparties régulièrement. Notez que la zone d’étude est plus petite que le cadre de l’image.

Par défaut, l’aperture des fonctions est de 1. Selon le type de fonction, on peut ne pas retrouver une répartition telle que sur cette figure.

Si vous choisissez les fonctions bicarrées, vous n’aurez rien à faire. Par contre, pour les autres familles, il faudra ajuster l’aperture.

En changeant seulement le type de famille de bisquare à Gaussian, on obtient la distribution suivante:

Il faut augmenter l’aperture (scale_aperture) à 3 pour avoir la distribution suivante:

Le nombre de résolutions

Dans les images précédentes, on suppose qu’il y a un processus à ajuster sur l’ensemble de la zone d’étude. Ce processus est à l’origine des variations des paramètres du noyau.

Mais il se peut qu’on ait des raisons de penser qu’il n’y a pas qu’un seul processus mais, par exemple deux, mais d’échelle différente. On aurait un processus fin, et un processus plus global. Dans ce cas nous pouvons définir deux niveaux de résolution.

Par exemple:

L’ajustement des paramètres sera beaucoup plus fin, mais n’oubliez pas que tout ceci se paye au niveau du temps de traitement. Évitez la surenchère qu niveau des paramètres de modélisation, car si une demie douzaine de fonctions suffisent pour estimer les bons paramètres, en ajouter une centaine ne donnera pas un meilleur résultat, mais vous aurez le temps de partir en weekend avant d’obtenir le résultat du calcul.

Le script ide_auto_basis

Le script ide_auto_basis vous permet de tester les différentes valeurs, en produisant les images ci-dessus.

Si vous ne l’avez pas téléchargé à partir de l’article précédent, voici le lien pour le faire:

Si non, vous avez ici le code du script

Code du script ide_auto_basis
##modele IDE=group
##showplots
##Layer=vector
##t=Field Layer
##val=Field Layer
##basis=selection bisquare;Gaussian;exp;Matern32
##nresolution= number 1
##scale_aperture=number 1
library(IDE)
library(dplyr)
library(« sp »)
library(« spacetime »)
library(« sf »)
library(« FRK »)
df<-as.data.frame(Layer)
coords<-st_coordinates(Layer)
crs<-st_crs(Layer)$proj4string
dfc<-cbind(df,coords)
data<-dplyr::select(dfc,t,all_of(val),X,Y)
names(data)<-c(« t », »cnt », »X », »Y »)
data$cnt<-as.double(data$cnt)
data$X<-as.double(data$X)
data$Y<-as.double(data$Y)
data$t<-as.Date(data$t,origin= »0000-01-01″)
mSTIDF <- stConstruct(x = data, # data set
space = c(« X », « Y »), # spatial fields
time = t) # time field
if (basis==0) {base= »bisquare »}
if (basis==1) {base= »Gaussian »}
if (basis==2) {base= »exp »}
if (basis==3) {base= »Matern32″}
mbasis_1<-auto_basis(manifold=plane(),
data= mSTIDF,
nres=nresolution,
scale_aperture=scale_aperture,
type=base)
> »kernel basis »
>show_basis(mbasis_1)

Quand vous l’exécutez, vous obtenez une sortie avec le dessin des emprises de la fonction de base, que vous pouvez charger dans votre navigateur :

Une fois trouvés les bons paramètres, vous pourrez utiliser le script ide_modele_variant.

Le script ide_modele_variant

Le lien de téléchargement est le même que pour le script précédent.

Le code du script est le suivant:

Code du script ide_modele_variant
##modele IDE=group
##Layer=vector
##t=Field Layer
##val=Field Layer
##grid_size=number 50
##units=selection secs;mins;hours;days;weeks
##forecast=number 1
##itermax=number 100
##basis=selection bisquare;Gaussian;exp;Matern32
##nresolution= number 1
##scale_aperture=number 1
##amplitude=selection constant_basis();auto_basis
##aperture=selection constant_basis();auto_basis
##xshift=selection constant_basis();auto_basis
##yshift=selection constant_basis();auto_basis
##output= output vector
library(IDE)
library(dplyr)
library(« sp »)
library(« spacetime »)
library(« sf »)
df<-as.data.frame(Layer)
coords<-st_coordinates(Layer)
crs<-st_crs(Layer)$proj4string
dfc<-cbind(df,coords)
data<-dplyr::select(dfc,t,all_of(val),X,Y)
names(data)<-c(« t », »cnt », »X », »Y »)
data$cnt<-as.double(data$cnt)
data$X<-as.double(data$X)
data$Y<-as.double(data$Y)
data$t<-as.Date(data$t,origin= »0000-01-01″)
mSTIDF <- stConstruct(x = data, # data set
space = c(« X », « Y »), # spatial fields
time = t) # time field
if (basis==0) {base= »bisquare »}
if (basis==1) {base= »Gaussian »}
if (basis==2) {base= »exp »}
if (basis==3) {base= »Matern32″}
mbasis_1<-auto_basis(manifold=plane(),
data= mSTIDF,
nres=nresolution,
scale_aperture=scale_aperture,
type=base)
> »kernel basis »
if (amplitude==0) {
kernel_basis<-list(thetam1=constant_basis())
}else {
kernel_basis<-list(thetam1=mbasis_1)}
if (aperture==0 ) {
kernel_basis[2]<-(thetam2=constant_basis())
}else{
kernel_basis[2]<-(thetam2=mbasis_1)}
if (xshift==0 ) {
kernel_basis[3]<-(thetam3= constant_basis())
}else {
kernel_basis[3]<-(thetam3= mbasis_1)}
if (yshift==0) {
kernel_basis[4]<-(thetam4= constant_basis())
}else {
kernel_basis[4]<-(thetam4= mbasis_1)}
>kernel_basis
if (units==0) {unit= »secs »}
if (units==1) {unit= »mins »}
if (units==2) {unit= »hours »}
if (units==3) {unit= »days »}
if (units==4) {unit= »weeks »}
> »calcul du modele IDE… »
IDEmodel <- IDE(f = cnt ~ 1 + X + Y ,
data = mSTIDF,
dt = as.difftime(1, units = unit),
grid_size = grid_size,
forecast=forecast,kernel_basis=kernel_basis)
> »Ajustement du modele… »
fit_results <- fit.IDE(IDEmodel,method= »DEoptim »,itermax=itermax)
show_kernel(fit_results$IDEmodel)
kp<-fit_results$IDEmodel$get(« k ») %>% unlist()
> »kernel parameters: « 
>kp
co<-coef(fit_results$IDEmodel)
> »regression coefficients: « 
>coef(fit_results$IDEmodel)
sg<-fit_results$IDEmodel$get(« sigma2_eps »)
> »sigma2_eps : »
>sg
abs_ev <- eigen(fit_results$IDEmodel$get(« M »))$values %>%abs()
> »complex eigenvalues of the evolution matrix M »
> summary(abs_ev)
> »Realisation des predictions… »
ST_grid <- predict(fit_results$IDEmodel)
ST_grid_df <- ST_grid %>%
data.frame() %>%
mutate(IDE_predZse = sqrt(IDE_predse^2 +
fit_results$IDEmodel$get(« sigma2_eps »)))
ST_grid_df$t<-as.integer(format(ST_grid_df$t, »%d »))-1
coords<-dplyr::select(ST_grid_df,X,Y)
attr<-dplyr::select(ST_grid_df,-X,-Y)
spdfN <- SpatialPointsDataFrame(coords = coords, data = attr,proj4string=CRS(crs))
output<-st_as_sf(spdfN)

La première partie des paramètres est la même que celle du modèle invariant spatialement qui ont été décrits dans l’article précédent.

Les paramètres basis, nresolution et scale_aperture sont ceux obtenus avec le script ide_auto_basis.

Voyons maintenant les paramètres de définition de la variation spatiale du noyau.

Paramètres theta

Maintenant, rappelons-nous que θp1 corresponds à l’amplitude du noyau, θp2 à l’échelle ou ouverture, θp3 à la « dérive » de décalage directionnel X et θp4 au décalage de direction Y (dérive).

L’amplitude du noyau variant spatialement est donnée par θp1(s) et contrôle la stationnarité temporelle, le paramètre échelle de longueur (variance) variant spatialement θp2(s) correspond à un paramètre échelle du noyau (ouverture) (c.-à-d. que la largeur du noyau augmente quand θp2 augmente) et la moyenne des paramètres de décalage θp3(s) et θp4(s) correspondent à un décalage spatialement variable du noyau par rapport aux emplacements.

Pour chacun de ces quatre paramètres on peut choisir individuellement de les considérer comme invariant spatialement ou bien variant spatialement.

Dans le premier cas, il faut choisir l’option constant_basis. Si on souhaite le considérer comme variant spatialement et l’ajuster avec les froncions de base définies plus haut, il faut sélectionner auto_basis.

Il n’est pas facile d’expliquer le cas d’un noyau variant empaillement, tellement ceci est lié aux types de données et au type de processus sous-jacent.

Il faut bien comprendre qu’il ne s’agit pas d’ajuster la distribution spatiale comme on le ferait pour un krigeage. On ne considère pas la distribution des valeurs des observations à l’intérieur d’un pas de temps.

On considère ce qui arrive entre le moment t-1 et le moment t. Supposons qu’il s’agisse d’une population de poissons dans une rivière. Après la reproduction les individus auront une tendance à descendre le courant plutôt qu’à le remonter. Il y aura alors une dérive spatiale du paramètre θp3(s), le valeur du noyau correspondant à un grand nombre d’individus au moment t-1 sera légèrement en amont du même noyau au moment t.

Nous verrons dans l’exemple qui suit les sorties graphiques associées à ceux paramètres.

Données exemple

Chargez la couche MOcarolinawren dans QGis.

Dans la boîte de traitements->R->modele IDE double cliquez sur ide modele variant

Dans notre exemple nous demandons deux résolutions et nous considérons qu’il y a une dérive du noyau sur les deux axes, x et y.

La différence entre une et deux résolutions est que, dans le premier cas on cherchera à ajuster 12 fonctions par paramètre theta variable et que dans le deuxième cas on aura 120 fonctions par paramètre… avec ce que cela implique en temps de calcul.

Valeur de theta 3 avec un nombre de résolutions de 1

[[3]]
Number of basis functions: 12
Number of resolutions: 1
Type of manifold: plane
Dimension of manifold: 2
First basis function:
function (s) { stopifnot(ncol(s) == dimensions(manifold)) y <- distance(manifold, s, c) (1 - (y/R)^2)^2 * (y < R) }

Valeur de theta 3 avec un nombre de résolutions de 2

[[3]]
Number of basis functions: 120
Number of resolutions: 2
Type of manifold: plane
Dimension of manifold: 2
First basis function:
function (s) { stopifnot(ncol(s) == dimensions(manifold)) y <- distance(manifold, s, c) (1 - (y/R)^2)^2 * (y < R) }

Sortie dans le fichier R Plots

Que vous choisissiez temporaire ou permanent, vous verrez un tracé dans le fichier R Plots.

Vecteurs de variation du noyau

Dans le tracé on peut visualiser l’advection qui a été générée par les fonctions de base choisies. La longueur des vecteurs est proportionnelle à la variation induite.

Rappelez-vous que vous pouvez utiliser le script ide_auto_basis pour avoir les emprises des fonctions de base.

Couche résultante

Dans la couche en sortie on retrouve deux attributs, Ypred et Ypredse.

Le premier correspond aux prédictions de valeurs du processus Y, le deuxième à la déviation standard (l’erreur).

Pour pouvoir travailler sur cette sortie, il est nécessaire de filtrer les couches pour ne retenir qu’un pas de temps. Dans nos données exemple nous avons 21 pas de temps, et dans notre sortie nous en avons 22 (les 21 des données d’origine plus un pas de temps futur).

L’image suivante montre le résultat de Ypred pour le pas de temps 21, le dernier de nos données d’origine.

Et l’image qui suit la carte des erreurs (Ypredse).

A titre de comparaison, le traitement avec le script invariant, nous a donné pour le même pas de temps, comme valeurs de Ypred

Vous remarquerez que, nos seulement la distribution n’est pas la même, mais que les valeurs maximales ici sont autour de 28, tandis qu’avec le modèle variant ont observe des valeurs de 37.

Au niveau de la carte d’erreur, le résultat du modèle invariant est:

Il est plus difficile de comparer les deux sorties d’erreur, le modèle invariant ayant une amplitude beaucoup plus grande.

En tout état de cause, en ce qui concerne le sujet de cet article, nous sommes arrivés à la fin. Vous avez tous les éléments pour utiliser les scripts et obtenir les résultats du modèle. Mais en réalité, c’est maintenant que le gros du travail commence.

Lequel de ces deux modèles faut-il retenir? Et si vous essayer un modèle variant avec d’autres paramètres theta, ou si vous décidez d’utiliser une autre famille de fonctions de base, vous serez confrontés à d’autres résultats de modèle, différents mais à première vue plausibles.

Le travail qui commence ici est tout simplement la validation des différents modèles et la comparaison de ces modèles.

Ce n’est pas le sujet de cet article, mais celui d’un prochain.

The post Modélisation spatio-temporelle avec une équation intégro-différentielle (IDE) avec QGis et R(suite) first appeared on Blog SIG & Territoires.

Comment créer une carte monochrome hachurée dans QGIS

$
0
0

Tutoriel détaillé sur la création d’une carte de relief hachurée en utilisant les dernières fonctionnalités de QGIS (3.20)

Introduction

En cartographie, les hachures ont servi à indiquer les reliefs sur les cartes d’État-Major qui étaient imprimées en taille-douce. Leur usage, codifié au fil des années, permettait de lire facilement une carte, les hachures disposées dans le sens de la plus forte pente reliaient les lignes de niveau, et étaient d’une épaisseur proportionnelle à l’inclinaison de la pente, selon un « diapason » déterminé par calcul.

Nous n’allons pas, ici, reproduire cette technique en suivant scrupuleusement les calculs de l’époque. Mais nous allons obtenir un, résultat comparable visuellement, suffisamment proche.

Pour une explication détaillée de la technique de hachurage des cartes anciennes, voir https://fr.wikipedia.org/wiki/Carte_d%27%C3%A9tat-major#La_technique_des_hachures

Dans cet article nous allons suivre trois étapes:

  • 1- La préparation des données nécessaires (mnt, courbes de niveau,…)
  • 2-La réalisation de la carte de relief hachurée
  • 3-L’habillage avec l’ajout d’éléments du paysage (cours d’eau, routes, toponymes,…)

Pour la partie technique de hachurage nous avons repris le tutoriel publié par Robin Hawkes (https://robinhawkes.com)

Préparation des données

Obtention d’un MNT (modèle numérique de terrain)

Si vous disposez déjà d’un MNT pour votre zone d’intérêt, vous pouvez l’utiliser directement. Si non, vous pouvez télécharger un mnt à partir de plusieurs sources.

Pour la France, vous pouvez utiliser la BD ALTI de l’IGN. Pour d’autres régions, QGis vous propose le plugin SRTM downloader pour télécharger le mnt de la NASA.

Ici nous allons utiliser les données de l’IGN. Pour les télécharger vous devez disposer d’un outil pour ouvrir les liens ftp, de type Filezilla (https://filezilla-project.org/download.php?type=client)

Allez sur la page de téléchargement des données BD ALTI (https://professionnels.ign.fr/bdalti#telechargement).

application ftp de téléchargement

Téléchargez le ou les départements qui correspondent à votre zone de travail

téléchargement du fichier départemental

Décompressez le fichier téléchargé

décompression du fichier téléchargé

Les données sont contenues dans un sous-répertoire sous la forme de fichiers avec l’extension .asc

données au format .asc

Pour simplifier le travail, il est conseillé de créer un seul fichier avec l’ensemble des données. pour cela, ouvrez QGis et chargez l’ensemble des fichiers .asc

tuilage des images asc

Pour fusionner l’ensemble des fichiers, nous allons créer un raster virtuel. Allez dans le menu Raster -> Divers -> Construire un raster virtuel

construction d'un raster virtuel avec qgis

Cliquez sur l’icône … correspondant à Input Layers

Sélectionnez tous les fichiers, puis cliquez sur Exécuter

fichiers en entrée du raster virtuel

Vous avez maintenant un raster virtuel contenant le mnt de tout le département.

résultat du raster virtuel

Pour conserver ce fichier, qui pour l’instant est virtuel, cliquez droit sur la couche -> Exporter -> Enregistrer sous

enregistrement de la couche

Dans format, vous pouvez choisir à votre guise, mais si vous optez par GeoPackage, vous pourrez enregistrer les autres couches que nous allons générer dans cet article dans le même fichier.

Le raster virtuel n’ayant pas par défaut de définition du SRC, n’oubliez pas de mettre EPSG:2154 dans le champ SRC

sélection du format geopackage

Gardez dans la liste des couches seulement le dernier fichier.

Extraction du MNT de la zone de travail

Pour la suite, nous allons garder le mnt seulement pour la zone de travail. Zoomez sur votre zone de travail. Pour vous aider, vous pouvez charger la couche OSM

chargement d'OSM

emprise de la zone de travail

Pour extraire le mnt correspondant seulement à la zone affichée, allez sur le menu Raster -> Extraction -> Découper un raster selon une emprise

découpage du mnt pour la zone de travail

Dans Étendue de découpage, sélectionnez Utiliser l’emprise du canevas de carte

Cliquez sur Exécuter

utilisation de l'emprise du canevas de la carte

Si vous avez, comme ci-dessus, stocké votre MNT sans un fichier GeoPackage, vous pouvez garder l’extrait dans ce même fichier.

Cliquez sur la nouvelle couche (Découpe) -> Exporter -> Enregistrer sous

enregistrement du mnt extrait

Dans Format sélectionnez GeoPackage

Dans Nom de fichier sélectionnez le fichier gpkg que vouysd avez créé avec l’ensemble du département

Dans nom de la couche rentrer un nom pour votre zone de travail. Puis, cliquez sur OK.

création d'une table dans gpkg

Gardez pour la suite,dans la liste des couches raster, seulement cette dernière couche.

résultat du découpage

Pour construire les hachures nous aurons besoin de trois informations:

  • Les courbes de niveau
  • Les valeurs de pente
  • Les valeurs d’Exposition

Calcul des courbes de niveau

L’espacement de calcul des courbes doit être ajusté en fonction de la topographie de la zone. En effet, chaque courbe de niveau sera transformé en hachures. Si les courbes sont trop proches ou trop éloignées, le résultat ne sera pas très esthétique.

L’image suivante montre une densité correcte de courbes de niveau. Dans ce cas précis le choix d’espacement est de 200 m.

densité des courbes de niveau

Calcul du raster Exposition

Allez dans le menu Raster -> Analyse -> Exposition

menu raster, analyse, exposition

Indiquez la couche du MNT de la zone comme Couche source. Comme le raster est une étape de calcul intermédiaire, vous pouvez laisser l’option de création d’un fichier temporaire.

calcul de l'exposition

Le résultat est affiché dans la fenêtre cartographique

résultat du calcul d'exposition

Calcul du raster Pente

Allez dans le menu Raster -> Analyse -> Pente

menu raster analyse pente

Indiquez la couche du MNT de la zone comme Couche source. Comme le raster est une étape de calcul intermédiaire, vous pouvez laisser l’option de création d’un fichier temporaire.

calcul de la pente du mnt

Le résultat est affiché dans la fenêtre cartographique

résultat du calcul de pente

Placement des points le long des contours

Nos hachures seront tracées à partir de différents points le long de chaque ligne de contour en échantillonnant les valeurs de l’aspect et de la pente que nous venons de générer. Nous allons donc passer des lignes de contour à des points placés le long de ces lignes.

Vous aurez besoin de la Boîte à outils de traitement ouverte pour cela, donc si vous ne la voyez pas déjà, vous pouvez l’ouvrir via le menu Boîte à outils de traitement.

Vous pouvez maintenant générer les points le long des contours :

Allez dans l’item Géométrie vectorielle -> Points le long d’une géométrie

Définissez comme couche source la couche des contours.

La distance correspond à la séparation entre deux points. Ce sera donc la séparation entre chaque hachure. Vous devrez l’ajuster en fonction de l’étendue de votre zone. Ici notre zone fait 35 km de large et nous avons choisi une distance de 100 m.

calcul de point le long des lignes de niveau

Le résultat est affiché dans la fenêtre cartographique

résultat du calcul des points le long des courbes de niveau

Affectation de la pente et de l’exposition à chaque point

Pour construire les hachures nous avons déjà dans les attributs des points le long des lignes de contour l’angle de la ligne à chaque point

attributs de la couche de points

Nous avons maintenant à ajouter dans les attributs la valeur de pente et d’exposition pour chacun des points.

Il y a plusieurs façons de faire ceci, mais la plus simple est d’utiliser le plugin Point Sampling Tool de QGis.

Installez le plugin. Assurez vous que les rasters Pente et Exposition sont visibles, puis allez dans le menu Extensions -> Analyses -> Point Sampling Tool

lancement du plugin Point Sampling Tool

Définissez la couche vecteur contenant les points avec la couche « points interpolés » issus des lignes de contour.

Dans la fenêtre « Couches avec les champs d’où extraire les valeurs: cliques sur les attributs ID, ELEV, distance, angle de points interpolés, ainsi que sur Pente et Exposition.

Pour le fichier en sortie vous pouvez sélectionner le fichier gpkg créé plus haut. C’est cette couche que nous allons utiliser pour générer les hachures. Cliquez sur OK.

couches utilisés pour le plugin Points sampling Tool

Une fenêtre s’ouvre, donnez un nom à la table, par exemple pointshachures

La nouvelle couche est chargée. Vous pouvez voir dans la table d’attributs les valeurs qui ont été ajoutées.

table d'attributs mise à jour

Vous pouvez supprimer toutes les autres couches car elles ne seront plus nécessaires.

Nous avons fini la préparation des données, nous allons voir maintenant la réalisation de la carte de relief hachurée.

Réalisation de la carte de relief hachurée

Ouvrez la fenêtre de Propriétés de cette dernière couche et sélectionnez l’onglet Symbologie. Tout le travail de génération des hachures va se faire ici.

Ce travail va consister à remplacer la représentation ponctuelle des entités par des représentations linéaires. Nous allons utiliser pour cella l’opérateur de QGis « générateur de géométries » pour :

  • utiliser le point existant comme point de départ de chaque hachure
  • utiliser l’angle de la courbe de niveau originale pour déterminer la direction perpendiculaire à la courbe de niveau
  • utiliser la valeur de pente pour déterminer la longueur de la ligne (plus longue en fonction de la pente plus forte)
  • donner une forme à chaque hachure (plus épaisse à la base, plus fine à son extrémité)

Pour finir et améliorer le rendu final, nous allons affecter une transparence aux hachures en fonction de leur exposition , par exemple plus transparentes quant elles font face au Nord et plus foncées quand elles sont orientées au Sud.

Pour commencer, cliquer sur le Type de symbole et sélectionnez « Générateur de géométrie » à la place de « Symbole simple »

type de symbole générateur de géométrie

Dans type de géométrie, sélectionnez Poliligne/Multi-polyligne, car ce que nous voulons générer c’est des lignes de hachure.

options du générateur de géométries

La fenêtre affiche $geometry. C’est à dire la valeur de géométrie contenue dans la couche. Nous allons remplacer ce texte par une expression qui construise les lignes de hachure.

Cette expression est la commande make_line(point de départ, point d’arrivée)

Comme nous connaissons le point de départ, c’est à dire le point déjà présent dans la couche, l’expression commencera par

make_line ( $ geometry ,

Pour calculer le point d’arrivée nous allons utiliser la commande project(point de départ, distance,direction)

Le point de départ est le point de la couche : $geometry.

Pour la distance, c’est à dire la longueur de notre hachure, nous voulons changer la longueur de la hachure en fonction de la pente à ce point – plus longue pour une pente plus raide, plus courte pour une pente plus faible. Les valeurs de pente sont un angle entre 0 et 90, 0 étant un sol plat et 90 une paroi verticale. Nous pouvons donc utiliser la pente pour trouver une valeur de distance dynamique.

Tout d’abord il faut convertir la valeur de la pente dans une plage comprise entre 0 et 1, que nous pourrons ensuite utiliser comme facteur multiplicatif d’une distance standard que nous définirons.

Étant donné que nous savons que les valeurs de pente sont entre 0 et 90, nous allons diviser la valeur par 90 pour obtenir une plage d’unités entre 0 et 1.

« Pente » / 90

Il faut compléter cette formule avec une valeur minimale de longueur de hachure quand la pente est nulle, ici nous allons utiliser la valeur de 100 m. Et la longueur maximale à ajouter quand la pente est de 90°, ici 200 m. Notre expression sera alors :

100 + 300 * « Pente »/90

Quand la pente sera de 0° la longueur de la hachure sera de 100 m et quand la pente sera de 90° la longueur sera de 400 m. Bien évidement, vous devrez ajuster ces valeurs en fonction de votre zone de travail.

Trouver la direction est relativement simple car nous avons déjà l’angle des points échantillonnés le long de la ligne du contour. Nous voulons que l’angle soit perpendiculaire au contour, donc tout ce que nous avons à faire est de soustraire 90 degrés à l’attribut « angle ».

Nous ajouterons également un peu de bruit aux lignes en ajoutant une valeur aléatoire entre 0 et 10 degrés. Tout ce qu’il reste à faire est de convertir la direction en radians, nécessaire pour la fonction project().

radians ( « angle » – 90) + rand(0,10)

La fonction complète sera donc:

make_line(
	$geometry,
	project(
		$geometry, 
		100 + 300 * "Pente" / 90, 
		radians(("angle" - 90) + rand(0, 10))
	)
)

Rentrez ce code dans la fenêtre correspondante

fonction de génération des hachures

Cliquez sur Appliquer pour voir le résultat et modifier si nécessaire les valeurs utilisées.

résultat de la génération de géométries pour les hachures

Changer l’épaisseur de chaque hachure

Nous pouvons aller un peu plus loin et réduire les hachures afin qu’elles soient légèrement plus épaisses à la base du contour, diminuant jusqu’à un point lorsqu’elles s’éloignent du contour.

Sélectionnez la ligne simple dans le générateur de géométrie pour la couche hachure. Nous allons utiliser une nouvelle fonctionnalité dans QGIS 3.20 appelée lignes interpolées, donc sélectionnez-la dans le menu déroulant du type de symbole.

utilisation de la fonction qgis 3.20 ligne interpolée

Nous voulons que les lignes soient plus épaisses à une extrémité, alors sélectionnez Largeur variable dans la liste déroulante de la largeur de trait.

paramétrer la largeur variable

Rentrez les valeurs suivantes :

  • Valeur de départ = 1 , pour que la base soit la partie la plus épaisse
  • Valeur d’arrivée = 0
  • Valeur min = 0
  • Valeur max = 1
  • Largeur min= 0
  • Largeur max = 30
  • Changez la valeur de Millimètres en mètres à l’échelle.

Comme pour le reste, vous serez peut-être amené à changer la valeur de largeur max en fonction de votre zone de travail.

paramétrage de la ligne interpolée

Il ne nous reste qu’à voir comment changer l’opacité en fonction de l’exposition.

Modifier la transparence en fonction de l’exposition

Pour définir l’opacité de la ligne interpolée nous devons modifier le type de couleur. Ouvrez le menu déroulant du mode de couleur et sélectionnez Couleur variable.

changer en couleur variable

Rentrez les valeurs suivantes:

  • Pour valeur de départ et valeur d’arrivée rentrez l’expression 1 – abs(« Exposition » – 180)/ 180
  • Pour Valeur min rentrez 0
  • Pour Valeur max rentrez 1
  • Laissez le mode d’interpolation à Linéaire

paramétrage de la couleur variable

Dans la fenêtre des classes, sélectionnez les classes 0.25, 0.5 et 0.75 et cliquez sur le signe – pour les effacer

garder que les deux classes extrêmes

Double cliquez sur la couleur correspondante à la classe 0 et définissez une couleur Noire et transparente

paramétrage couleur noire transparente

Double cliquez sur la couleur correspondante à la classe 1 et définissez une couleur Noire et transparente à 75%

paramétrage couleur noire 75% transparente

Vous devez avoir une fenêtre comme suit

fenêtre finale de paramétrage

Cliquez sur OK et le résultat final apparaît

résultat final du hachurage

Habillage avec l’ajout d’éléments du paysage

Le relief hachuré est terminé. Reste à ajouter des éléments de paysage pour rendre la carte plus attractive.

En principe vous devez disposer d’autres couches permettant d’ajouter les cours d’eau, etc. Si ce n’est pas le cas, il y a la possibilité d’ajouter rapidement des éléments à partir d’OpenStreetMaps.

Pour cela vous avez besoin du plugin QuickOSM. Installez le plugin si ce n’est pas déjà le cas.

Il est possible de télécharger tous les éléments OpenStreetMap dont nous avons besoin avec une seule grande requête. Mais dans ce cas tous les différents types d’éléments seront mélangés dans une seule couche et ceci rendra le travail de symbologie plus ardu.

Ici nous chargerons chaque type d’élément pas séparé pour simplifier la mise en place de la symbologie.

Ajout d’entités

Cliquez sur le bouton QuickOSM

bouton QuickOSM

La fenêtre de requête s’ouvre

fenêtre de requêtes QuickOSM

Pour chaque type d’élément que vous souhaitez vous devez sélectionner une Cle et une Valeur. Les menus déroulants vous seront utiles pour retrouver les élément recherchés. Vous pouvez rentrer plusieurs couples Clés/Valeur en une seule requête en cliquant sur le signe + dans la colonne Ajouter. Dans ce cas pensez à modifier la première colonne en remplaçant le AND par défaut par OR.

Avant d’exécuter la requête vous devez définir l’étendue de téléchargement. Modifier la condition « Dans » par « Emprise d’une couche » et assurez vous que la couche utilisée soit la couche avec le hachurage.

étendue de la zone de requête

Cliquez alors sur Exécuter la requête. Chaque requête, quand elle est exécutée, génère une couche virtuelle. Elle porte le nom de la première paire Clé/Valeur de la requête.

Par exemple, voici le résultat pour obtenir les zones forestières (Clé=natural, Valeur= forest).

Si vous voulez garder cette information (les couches virtuelles sont perdues à la fermeture de QGis), vous devez Enregistrer la couche dans un fichier permanent (par exemple le gpkg du MNT).

enregistrement du résultat de la requête QuickOSM dans un gpkg

Vous pouvez alors définir la symbologie souhaitée pour la couche et l’enregistrer comme symbologie par défaut dans le fichier gpkg.

Par exemple, si on défini une couleur noire pour les forêts avec une transparence de 20% nous aurons le rendu suivant:

ajout des zones forestières

Pour garder cette symbologie par défaut, ouvrez la fenêtre de propriétés de la couche -> symbologie, cliquez sur le bouton Style->Enregistrer par défaut

enregistrement de la symbologie par défaut

Puis cliquez sur le bouton « Base de données source pour qu’il soit enregistré dans le fichier gpkg.

choix de l’enregistrement dans le fichier gpkg

En plus des forêts, nous allons ajouter, en suivant les mêmes étapes:

Les cours d’eau avec deux paires Clé/valeur:

waterway/river et

waterway/stream

Nous appliquerons un symbole en ligne trait-pointillé noir avec une transparence de 60%

ajout des cours d'eau à la carte

Les lacs et étangs avec la paire Clé/valeur

natural/water

auxquels nous appliquerons un symbole noir avec une opacité de 60%

ajouts des lacs et étangs à la carte

Les routes avec deux paires Clé/Valeur

highway/primary et

highway/trunk

auxquels nous appliquerons un symbole de ligne noire avec une épaisseur de 0.75

ajout des routes à la carte

Les zones rocheuses à nu avec deux paires de Cle/valeur

natural/bare_rock et

natural/scree

Auxquelles nous affecterons un symbole SVG de roches éparses

symbole rochers nus svg

ajout des zoners de rochers nus à la carte

Pour finir nous allons ajouter des points de toponymie: villages et pics remarquables avec les Clé/valeur natural/peak et place/village

Et nous avons notre résultat final

ajout des villages et pics remarquables à la carte

Et voici une vue zoompée de cette carte finale :

zoom sur une zone de la carte finale

The post Comment créer une carte monochrome hachurée dans QGIS first appeared on Blog SIG & Territoires.

Tutoriel SCP:Réglages fins de la classification supervisée

$
0
0

Dans cette série d’articles nous avons vu un tutoriel qui aborde la classification d’images aériennes de drone en milieu littoral. Il utilise QGis dans sa version 3.20 et le plugin SCP dans sa version 7.3.

Le but de ce tutoriel est de trouver un moyen de multiplier les trois bandes RGB des images aériennes en utilisant des calculs de texture de sol et de l’analyse en composantes principales.

Pour compléter ce tutoriel, nous verrons ici comment réaliser les réglages fins d’une classification supervisée.

Lors des traitements présentés dans les articles du tutoriel, nous avons créé rapidement trois ROIs correspondantes aux trois classes que nous cherchions à identifier.

Ceci nous a permis de déterminer quelles bandes utiliser et d’avoir une quantification de la discrimination des différents algorithmes disponibles. Tout d’abord, quel outil peut-on utiliser pour affiner notre classification ? Il s’agît de la prévisualisation de la classification :

Prévisualisation de la classification

La prévisualisation de la classification permet d’afficher les classifications temporaires (c.-à-d. les prévisualisations de la classification). Les aperçus de classification sont utiles pour tester l’algorithme dans une petite zone de l’ensemble de bandes, avant de classer l’image entière qui peut prendre du temps.

La prévisualisation de la classification est effectuée selon les paramètres définis dans Algorithm.(Onglet Traitement de bande->Classification)

ATTENTION : les ROI et les prévisualisations sont effectuées sur le jeu de bandes actif.

En plus de la matrice de classification, une matrice d’algorithme (algorithm raster) peut être affichée, qui est utile pour évaluer la distance d’un pixel classé comme classe X à partir de la signature spectrale correspondante X.

Dans les aperçus de classification du raster algorithm, les pixels noirs sont éloignés de la signature spectrale correspondante (c.-à-d. probablement une nouvelle ROI, ou signature spectrale, doit être collectée dans cette zone) et les pixels blancs sont plus proches de la signature spectrale correspondante (c.-à-d. probablement la signature spectrale identifie correctement ces pixels).

Après la création d’un nouvel aperçu, les anciens aperçus sont placés dans les calques QGIS à l’intérieur d’un groupe de calques nommé Class_temp_group (le nom personnalisé peut être défini dans Nom de groupe temporaire et est supprimé lorsque la session QGIS est fermée).

ATTENTION : les aperçus de classification sont automatiquement supprimés du disque lorsque la session QGIS est fermée ; un message QGIS (qui peut être ignoré) pourrait demander le chemin des couches manquantes lors de l’ouverture d’un projet précédemment enregistré.

Zoom la carte de QGis sur l’étendue de la dernière prévisualisation de classification.

Le bouton permet d’afficher/cacher la dernière prévisualisation de classification.

Active le pointeur pour la création d’un aperçu de la classification ; clic-gauche sur la carte pour lancer le processus de classification et afficher l’aperçu de la classification ; clic-droit pour lancer le processus de classification et afficher l’algorithme matriciel (algorithm raster) de l’aperçu.

Génère une nouvelle prévisualisation centrée sur le même pixel que précédemment

Modifie dynamiquement la transparence de prévisualisation de la classification, ce qui est utile pour comparer la classification à d’autres couches

Taille de la zone de prévisualisation en pixels.

Voici un exemple de prévisualisation :

Les pixels non classés apparaissent en noir.

Il y a deux grandes raisons pour que des zones ne soient pas classées.

Une raison peut être une trop grande amplitude des classes qui amènent à une trop grande superposition des signatures spectrales. En sélectionnant une zone assez grande pour les ROIs on inclue sans le vouloir des pixels isolés avec des signatures différentes de la classe recherchée.

A l’opposé, le fait de sélectionner une seule zone ROI pour une classe peut ignorer certaines valeurs naturelles de la classe mais absents dans cette zone en particulier.

Dans le premier cas on cherchera à enlever des pixels (leurs valeurs) de la signature spectrale de la classe, dans le deuxième on cherchera à compléter les valeurs de la signature spectrale avec les valeurs absentes.

Les seuils automatiques

Dans la fenêtre du Graphique de  Signature spectrale on a un pavé intitulé « Seuils automatiques ».

Par défaut, les seuils sont définis en Min Max

Au niveau de chaque bande, l’enveloppe de la classe se situe entre la valeur du pixel avec la valeur la plus faible et la valeur du pixel le plus fort. Une méthode de réduire cette amplitude est l’utilisation de la distribution des valeurs des pixels par bande. On calcule l’écart type des valeurs des pixels pour chaque bande, et l’outil « écart-type »

permet de définir les seuils en multipliant cet écart type par un facteur entré par l’utilisateur.

On rentre une valeur dans le champ du centre et on l’applique aux bandes surlignées en cliquant sur le bouton > à droite.

Voici son fonctionnement avec la classe « sédiments ». Le graphique de départ, basé sur les valeurs Min-Max est le suivant :

Si nous entrons la valeur « 1 » pour l’écart type est appuyons sur le bouton >, un message nous demande si nous voulons bien changer les seuils des bandes surlignées, puis il affiche le nouvel graphique spectral :

On voit bien que l’amplitude spectrale de chaque bande a diminué. Chaque modification de seuil sera suivi d’une prévisualisation de la classification dans la même zone test. On verra alors les effets des modifications et on pourra adapter la valeur du seuil en conséquence.

Ces deux outils affectent l’ensemble des bandes d’une classe.

Ajout ou soustraction de valeurs de pixels

Nous avons vu plus haut que les seuils peuvent ne pas correspondre à nos souhaits à cause, soit de zones ou pixels en trop lors de la création des ROI d’entrainement, soit par le manque de zones ou pixels lors de la création de ces mêmes ROIs.

La deuxième partie du panneau « Seuils automatiques » est utile pour résoudre ces problèmes.

Cette partie du pavé permet de choisir l’opération à réaliser :

  • Si le plus est coché, on ajoute des valeurs à la signature spectrale de la classe
  • Si le moins est coché, on enlève des valeurs à la signature spectrale de la classe

Pour utiliser la fonction « From ROI »  il faut créer un polygone ROI temporaire sur la carte de QGis. Vous n’avez pas à l’ajouter dans les données d’entrainement.

En cliquant sur cette option dans le pavé « Seuils automatiques », le plugin récupère les valeurs des pixels situés à l’intérieur de la ROI temporaire et ajoute ou soustrait ces valeurs de la signature spectrale.

Un réglage plus fin encore peut être fait à partir d’un pixel individuel de l’image globale.

Si on clique sur « From pixel », le plugin attend qu’on clique sur l’image globale, récupère les valeurs du pixel pour chaque bande et effectue l’opération d’ajout ou de soustraction de la signature spectrale.

Voyons maintenant un exemple concret.

Nous avons trouvé un ensemble de courbes spectrales qui nous convient pour une image :

Nous voulons maintenant tester si ces courbes spectrales sont adaptées à une deuxième image adjacente à la première.

Pour cela, nous allons charger les dix rasters correspondants aux bandes utilisées pour la première image dans un deuxième « band set » :

Dans la fenêtre « Jeu de bandes » on va :

  1. Cliquer sur le bouton « Ajouter un nouveau jeu de bandes » . On aura alors un deuxième onglet Band set 2, vide.
  2. Cliquer sur le bouton « Ouvrir un fichier » et pointer sur les rasters de la deuxième image. En cliquant sur « Ouvrir » ces rasters seront chargés dans la liste des bandes et dans le band set actif, celui qu’on vient de créer.

N’oubliez pas de trier les bandes de la deuxième image dans le même ordre que celles de la première image.

On a comme résultat dans la fenêtre cartographique de QGis :

Faisons le point de la situation :

Vous avez deux zones de travail, chacune correspondant à un band set différent (le 1 et le 2). L’onglet actif dans la fenêtre « Jeu de bandes » détermine sur quelle zone les commandes et outils de SCP vont agir. Par exemple, si vous voulez faire un aperçu de classification sur la première zone avec l’onglet 2 activé, vous aurez un message d’erreur en vous indiquant de cliquer à l’intérieur de la deuxième zone.

Par contre, les données d’entraînement et ses courbes spectrales sont uniques et s’appliquent à tous les band sets.

Nous commençons par effectuer un aperçu de classification sur notre nouvelle zone pour voir si les courbes spectrales calculées sur la première zone s’appliquent correctement.

La zone vert foncé correspond à la classe « Sédiments ». Mais nous savons qu’ici, cette zone correspond à un herbier de zostères. Le problème est que lors de la prise de vue la journée était nuageuse et la plus grande partie de la zone classée en sédiments correspond à de l’herbier affecté par l’ombre d’un nuage. Comme nous avions configuré la méthode de classification pendant le travail dans la première zone avec les options LCS et Algorithme, cet aperçu est réalisé avec ces options.

Pour voir exactement le résultat de ce qui correspond strictement à nos courbes spectrales on doit désactiver l’option Algorithme, car, si non, tout ce qui est en dehors de ces courbes est classé avec la la classe qui est la plus proche. En désactivant l’algorithme, on aura, en noir les zones qui ne correspondent pas à nos courbes spectrales.

On voit alors qu’il y a des petites zones de sédiments, mais que les zones d’herbier à l’ombre du nuage ne sont pas comprises dans nos courbes spectrales. Nous allons modifier ces courbes pour qu’elles les prennent en compte avec le bouton « From ROI » du panneau Seuils automatiques.

Tout d’abord, on va créer une ROI temporaire dans la zone noire non classée :

Nous n’allons pas cliquer sur le bouton du panneau ROI et listes de signatures pour ajouter cette ROI aux données d’entraînement.

Cette ROI nous allons l’utiliser avec le panneau Seuils automatiques.

Nous allons noter les détails de la signature de l’herbier avant la prise en compte de cette ROI

La ligne 3 c’est celle qui correspond à l’herbier. On voit les min-max des 6 premières bandes :

1-10,48.99-170,17-51.9,1-34,146-255,207-255,…

On vérifie que la case + est cochée dans le panneau Seuils automatiques. Ceci indique au plugin d’ajouter les valeurs des pixels de la ROI à la signature de la classe.

Cliquez sur le numéro de ligne de la classe à modifier pour la mettre en surbrillance. Si vous oubliez cette étape, les valeurs de la ROI seront ajoutées à TOUTES LES CLASSES.

Puis nous cliquons sur From ROI.

Si on observe les min-max, on voit qu’ils ont été modifiés :

1-11,18-170,14-132,1-61,70-255,186-255,…

Nous cliquons sur le bouton « Redo the classification preview at the same point » pour voir ce que cette opération a modifié sur le résultat :

Une vaste zone qui était précédemment non classée et maintenant classée en herbier.

On peut alors continuer à traiter le reste des zones non classées en les ajoutant aux signatures correspondantes.

Pensez à vérifier que ces modifications n’entraînent pas de problème par rapport au classement de la première image. Pour cela, dans la fenêtre « Jeu de bandes » cliquez sur Bandset 1 et refaites une prévisualisation.

A la fin de cette étape vous aurez obtenu un ensemble de signatures opérationnelles. Pour pouvoir les réutiliser facilement, vous pouvez sauvegarder un fichier de signatures, sans les ROIs des données d’entraînement.

Dans le panneau SCP, vous avez un bouton « Exporter des signatures spectrales »

Vous trouvez aussi cette option dans la fenêtre SCP->Outils basiques

Vous avez le choix entre différents formats, mais celui qui ne stocke pas les ROIs c’est le format csv.

The post Tutoriel SCP:Réglages fins de la classification supervisée first appeared on Blog SIG & Territoires.

Tutoriel SCP : Les méthodes de classification supervisée

$
0
0

Dans cette série d’articles nous avons vu un tutoriel qui aborde la classification d’images aériennes de drone en milieu littoral. Il utilise QGis dans sa version 3.20 et le plugin SCP dans sa version 7.3.

Le but de ce tutoriel est de trouver un moyen de multiplier les trois bandes RGB des images aériennes en utilisant des calculs de texture de sol et de l’analyse en composantes principales.

Pour compléter ce tutoriel, nous verrons ici comment définir les méthodes de classification supervisée.

On a deux types de calculs, complémentaires, pour classer les images. Nous utiliserons, si nécessaire, un algorithme de calcul des distances spectrales de chaque pixel de notre image globale par rapport au signatures spectrales retenues.

Indépendamment de ces distances, on utilise une méthode de classification d’occupation des sols pour décider l’affectation d’une classe à chaque pixel.

En réalité, toutes les combinaisons sont possibles. Voyons ces deux types de procédés en détail.

Les algorithmes de classification

Nous avons trois algorithmes de classification :

  • L’algorithme de la distance minimale
  • L’algorithme de maximum de vraisemblance
  • L’algorithme du calcul de l’angle spectral

Algorithme de la distance minimale

C’est la méthode la plus simple. On calcule la distance euclidienne entre les valeurs sur chaque bande du pixel à classer et la signature sur chaque bande des différentes classes du fichier d’entrainement.

On fait le carré de la distance de chaque bande, on les additionne, et on calcule la racine carrée de cette somme.

On retient pour ce pixel la classe qui se situe à la plus petite distance calculée.

Algorithme du maximum de vraisemblance

Tout d’abord on calcule pour les données de signature spectrale d’entrainement, la distribution des probabilités pour chaque bande. On aura alors, pour chaque classe et chaque bande une courbe de probabilités avec une moyenne et un écart type donnés. Le tout constitue un modèle normal multivarié.

La figure donne un exemple de deux classes (ga et gb) et de deux pixels à classer X1 et X2 sur la bande spectrale X. Pour chaque valeur de pixel on cherche la probabilité correspondante et on retient la classe avec la plus forte probabilité.

Algorithme du calcul de l’angle spectral

Chaque classe de signature spectrale peut être tracée en fonction des différentes paires de bandes. Dans l’image suivante on prend la paire Bande 1 – Bande 2 et on trace la position des signatures spectrales de la classe a (en rouge) et de la classe b (en vert).

Chaque pixel à classer est placé dans l’espace Bande1-Bande 2, x dans la figure.

On calcule alors l’angle q avec la signature de a et avec la signature de b. On retiendra la classe correspondante au plus petit angle.

Cette méthode est insensible à l’éclairage puisque l’algorithme SAM utilise uniquement la direction du vecteur et non la longueur du vecteur.

Les méthodes de classification

La méthode Land Cover Signature Classification (LCS)

Cette classification permet de définir des seuils spectraux pour chaque signature d’entraînement (une valeur minimale et une valeur maximale pour chaque bande). Les seuils de chaque signature d’entrée d’entraînement définissent une région spectrale appartenant à une certaine classe de couverture du sol.

Les signatures spectrales des pixels d’image sont comparées aux signatures spectrales d’entraînement ; un pixel appartient à la classe X si la signature spectrale des pixels est entièrement contenue dans la région spectrale définie par la classe X. En cas de pixels tombant à l’intérieur de régions se chevauchant ou en dehors de toute région spectrale, il est possible d’utiliser des algorithmes de classification supplémentaires (c.-à-d. distance minimale, probabilité maximale, cartographie d’angle spectral) en tenant compte des caractéristiques spectrales de la signature d’entrée originale.

Dans l’image, on illustre la classification de la signature de couverture du sol (LCS) pour un cas simple de deux bandes spectrales x et y. Les régions spectrales définies par l’utilisateur définissent trois classes (ga, gb et gc). Le pixel  p1 appartient à la classe ga et le pixel p2 à la classe gb. Cependant, le pixel p3 se trouve à l’intérieur des régions spectrales des deux classes gb et gc (régions qui se chevauchent); dans ce cas, le pixel p3 sera non classifié ou classé selon un algorithme de classification supplémentaire. Le pixel p4 se trouve en dehors de toute région spectrale, il sera donc non classifié ou classé selon un algorithme de classification supplémentaire.

Pour utiliser ce système de classement, il faut cocher LCS dans la fenêtre de classification.

LSC est le classificateur strict . Il est le classificateur initial. Cette méthode assigne un pixel dans une classe seulement si les valeurs de celui-ci dans chacune des bandes entrent dans la « gamme » de la signature spectrale de cette classe (comme on peut le voir dans la figure), si elle n’entre dans aucune classe, le pixel n’est attribuée à aucune classe (« Non classé »), si la signature du pixel correspond à plusieurs classes (« superposition ») il n’est pas non plus attribué, même si une seule valeur dans une bande qui diffère de la signature de la classe reste non classée. C’est pourquoi lorsque nous exécutons une classification uniquement avec cette méthode, il nous reste de vastes zones non classées. Cependant, cette méthode nous garantit que les portions de l’image qui sont classifiées sont adaptées (elles sont contenues) à l’intérieur des signatures spectrales des classes de couverture.

C’est un bon point de départ pour notre classification, nous verrons quelles zones sont bien différenciées (classifiées) et celles qui présentent plus de confusion, ces dernières pouvant être attribuées par les autres algorithmes.

Comment s’intègrent les différents algorithmes ?

On verra ici quatre cas :

1er Cas n’est sélectionné que l’option LSC, alors la classification est générée par cette méthode. Les pixels non classés par LCS restent non classés. L’algorithme, ici Maximum de vraisemblance, n’est pas utilisé.

2ème cas : sont sélectionnés à la fois LSC et Algorithme, alors les deux méthodes se combinent. Ce qui n’est pas classé par LSC sera classé par l’algorithme de distance sélectionné, ici le Maximum de vraisemblance.

3ème Cas : seul algorithme est sélectionné, alors le classement est effectué sans LSC, en utilisant uniquement l’algorithme choisi, ici Maximum de vraisemblance.

4ème Cas : cette sélection « Superposition seulement » avec LSC et/ou Algorithme sélectionné, c’est une option intéressante pour affiner notre classification, il effectue le processus de classement seulement des zones où il y a confusion, c’est à dire que le pixel tombe dans deux ou plusieurs classes possibles, mais pas des pixels ne tombant dans aucune classe.

The post Tutoriel SCP : Les méthodes de classification supervisée first appeared on Blog SIG & Territoires.

Tutoriel SCP:Post-traitement de la classification

$
0
0

Dans cette série d’articles nous avons vu un tutoriel qui aborde la classification d’images aériennes de drone en milieu littoral. Il utilise QGis dans sa version 3.20 et le plugin SCP dans sa version 7.3.

Pour compléter ce tutoriel, nous verrons ici comment traiter les sorties d’une classification supervisée pour intégrer les résultats dans un SIG.

Mesure de la précision de classification

Après le processus de classification, il est utile d’évaluer l’exactitude de la classification de la couverture, afin d’identifier et de mesurer les erreurs cartographiques.  Habituellement, l’évaluation de l’exactitude est effectuée au moyen du calcul d’une matrice d’erreurs, qui est un tableau qui compare le résultat de la classification avec des données de référence (c.-à-d. les données de la vérité terrain.

La classification est comparée à une matrice de référence ou à un vecteur de référence (qui est automatiquement converti en matrice). Si le vecteur est sélectionné comme référence, il est possible de choisir un champ décrivant les valeurs de classe.

Plusieurs statistiques sont calculées telles que la précision globale, la précision de l’utilisateur, la précision du producteur et le coefficient Kappa. En particulier, ces statistiques sont calculées selon la matrice d’erreur basée sur la superficie, où chaque élément représente la proportion estimée de la superficie de chaque classe. Ceci permet d’estimer loa précision de l’utilisateur sans biais et la précision du producteur, la zone sans biais des classes selon les données de référence, et l’erreur type des estimations de surface. où les valeurs de pixels représentent les catégories de comparaison (c.-à-d. les combinaisons identifiées par le code de matrice d’erreurs dans la matrice d’erreurs) entre la classification et la référence. De plus, un fichier texte contenant la matrice d’erreurs (i.e. un fichier.csv séparé par tabulation) est créé avec le même nom défini pour le fichier .tif.

La couche de « réalité terrain » peut donc être une couche raster ou une couche vecteur. La seule condition à respecter est que les codes des classes soient les mêmes entre la couche réalité terrain et le résultat de la classification que nous souhaitons évaluer.

Cette couche peut être construite manuellement en numérisant des polygones à partir des images sources de la classification.

Le plugin SCP va construire une matrice d’erreurs en comparant les classes des pixels communs aux deux couches : la couche de classification et la couche réalité terrain.

Les cellules diagonales de la matrice contiennent le nombre de pixels de chaque classe qui ont été bien classés. Le reste des cellules de la matrice contiennent les pixels mal classés.

Exemple

Prenons un exemple de sortie de classification :

Le résultat contient 4 classes, codées 0 – 2 – 3 – 4.

Nous utiliserons une couche vecteur de réalité terrain sur une partie de l’image :

Nous exécutons la commande « Précision » du menu « Post-traitement »

Le résultat s’affiche sous forme de couche

Mais pour comprendre cette couche il est- indispensable de se référer au tableau de sortie. Ce tableau s’affiche dans la fenêtre SCP dans l’onglet Sortie de « Précision » mais il est aussi disponible au format csv avec le même nom que la couche de résultat.

Le premier pavé donne les informations nécessaires à l’interprétation de la couche géographique :

La première colonne indique l’étiquette utilisée pour la couche géographique. Les deux colonnes suivantes indiquent la classe de référence et la classe de classement, puis, la dernière colonne, le nombre de pixels pour cette combinaison.

Dans cet exemple, la première ligne indique que la classe de couleur 5 indique les pixels de classe 2 sur le terrain (spartine) qui sont non classés dans notre sortie de classification, et qu’il y a 2191 pixels dans ce cas.

La deuxième ligne indique que la classe de couleur 6 indique les pixels de classe 2 sur le terrain (spartine) qui sont bien classés (2) dans notre sortie de classification, et qu’il y a 13619 pixels dans ce cas.

Le deuxième pavé donne ces résultats sous forme de matrice, indiquant pour chaque cellule de la matrice le nombre de pixels correspondants.

Le troisième pavé converti le nombre de pixels en surface, en utilisant la taille des pixels et les unités du SCR.
Mais les indicateurs importants pour aider à l’évaluation sont les indicateurs suivants :

Précision utilisateur et précision producteur

Ces termes un peu barbares recouvrent un calcul très simple.

Pour chaque classe on fait le rapport des pixels bien classés par rapport au total de la ligne et au total de la colonne de la matrice d’erreur.

Le total de chaque ligne correspond au nombre total de pixels de la classe dans notre sortie de classification.

Le total de chaque colonne correspond au nombre total de pixels de la classe dans notre réalité terrain.

On appelle »Précision utilisateur » le rapport nombre de pixels de la classe/nombre total de pixels par ligne, c’est-à-dire le nombre total de pixels de la classe dans notre sortie de classification.

On appelle »Précision producteur » le rapport nombre de pixels de la classe/nombre total de pixels par colonne, c’est-à-dire le nombre total de pixels de la classe dans notre réalité terrain.

Indice Kappa

Sans rentrer dans trop de considérations techniques, disons que ce coefficient nous indique dans quelle mesure on aurait pu obtenir le même résultat de classification en faisant cette classification au hasard.

Geodesia et Descriptio Terrarum 13 (1-2) 2014

Précision globale

A partir de la matrice d’erreur , il est possible de calculer la précision globale comme le rapport entre le nombre d’échantillons correctement classés (la somme de la diagonale principale) et le nombre total d’unités d’échantillonnage n.

Élimination du bruit

Suite à la procédure de classification, il subsiste généralement un faible taux de pixels isolés, généralement mal classés ou non classés, souvent situés à la limite entre deux plages d’affectations distinctes. Ceux-ci donnent un aspect « pointilliste » à l’image qui peut s’avérer gênant pour une représentation cartographique. Il est alors souhaitable d’homogénéiser la classification en réaffectant ces pixels à l’une ou l’autre classe. Pour ce faire, on utilise également des techniques de filtrage.

Le filtre majoritaire consiste à affecter un pixel isolé à la classe dominante au sein de laquelle il se trouve. Pour chaque pixel, l’image est analysée au moyen d’une fenêtre mobile de 3×3 pixels afin de déterminer la classe la plus représentée autour du pixel central. Celle classe est alors attribuée au pixel central. L’inconvénient majeur du filtrage majoritaire est de trop favoriser les classes dominantes, particulièrement aux frontières entre deux classes, aux dépens des classes moins représentées ou des classes présentant des structures linéaires comme le réseau routier ou encore des classes représentant l’habitat dispersé.

Le plugin SCP inclue une autre façon de réduire le bruit , l’option « Cribler la classification (sieve). Cette commande supprime les polygones matriciels inférieurs à une taille de seuil fournie (en pixels) et les remplace par la valeur de pixel du plus grand polygone voisin. Il est utile si vous avez une grande quantité de petites zones sur votre carte matricielle. L’algorithme est dérivé de l’utilitaire GDAL sieve.

On peut définir un nombre quelconque de pixels connectés, contrairement au filtre qui ne prend que les pixels isolés. On peut aussi définir le type de voisinage souhaité :

4 : dans une fenêtre 3×3, les pixels diagonaux ne sont pas considérés comme connectés ;

8 : dans une fenêtre 3×3, les pixels diagonaux sont considérés comme connectés

Attention à ne pas confondre le bruit avec les petits patchs isolés. Ces derniers peuvent être éliminés à la fin du post-traitement en définissant une taille minimale de zone. Par définition, le bruit correspond à des pixels isolés ou à des petits groupes de pixels isolés, surtout dans le cas où la taille réelle du pixel est petite.

Il ne faut pas oublier que la plupart de ces traitements d’image ont été conçus pour des applications satellitaires avec des pixels qui étaient de l’ordre de 5 à 10 mètres. Des images de drone pouvant produire des pixels de quelques millimètres, la notion de bruit doit aussi s’adapter à l’échelle.

Exemple

Nous pouvons voir un exemple d’utilisation du criblage SCP sur une zone de notre image classée.

Image en sortie de la classification SCP

Image résultante du criblage SCP avec un seuil de taille de 10 pixels et un voisinage de 8.

Image résultante du traitement Filtre majoritaire avec ArcMap

On observe que le « nettoyage » du bruit est bien plus net avec le criblage qu’avec le filtre majoritaire.

The post Tutoriel SCP:Post-traitement de la classification first appeared on Blog SIG & Territoires.

QGIS et FELT: 1-présentation de FELT


QGIS et FELT: 2-le travail collaboratif

Comment créer une version portable de QGis 3.0 à 3.18

$
0
0

Qu’est-ce qu’une application portable? Une application portable (ou logiciel portable) est un programme informatique caractérisé par sa portabilité, c’est à dire sa capacité à fonctionner dans différents environnements d’exécution. Il ne requiert pas d’installation préalable, ne dépend pas de composants externes et n’engendre pas de modification durable du système par... Continuer à lire...

The post Comment créer une version portable de QGis 3.0 à 3.18 first appeared on Blog SIG & Territoires.

Capturer images,video et sons sur le terrain avec le nouveau QField 2.7(1)

Capturer images,video et sons sur le terrain avec le nouveau QField 2.7(2)

$
0
0

1-Configurer le projet dans QGis(article précédent) 2- Utilisation sur un appareil de terrain Installation du paquet sur l’appareil de terrain Vous pouvez installer le paquet de projet directement par câble sur votre appareil ou utiliser QFielCloud. Cette deuxième option est beaucoup plus pratique: copie de votre projet sur le Cloud... Continuer à lire...

The post Capturer images,video et sons sur le terrain avec le nouveau QField 2.7(2) first appeared on Blog SIG & Territoires.

Comment intégrer SAGA à QGis à partir de la version 3.30

Intégrer un service WMTS de tuiles raster dans QGis 3 et Felt

Comment trouver le systèmes de coordonnées d’une couche avec QGis 3.X?

$
0
0

Quand vous travaillez avec des données spatiales dans un logiciel SIG, vous rencontrez régulièrement le problème de fichiers qui n’ont pas de système de coordonnées clairement défini. Lorsqu’un fichier manque de son système de coordonnées (SCR), il peut entraîner des couches mal alignées, des mesures incorrectes et une foule d’autres... Continuer à lire...

The post Comment trouver le systèmes de coordonnées d’une couche avec QGis 3.X? first appeared on Blog SIG & Territoires.

Perry-Castañeda Library: cartes gratuites scannées de 1943:comment les géoréférencer?

$
0
0

La Perry-Castañeda Library Map Collection, située à l’Université du Texas, est l’une des plus grandes collections de cartes numérisées au monde. Cette collection contient des cartes de tous les continents et de nombreux pays, ainsi que des cartes topographiques, nautiques, géologiques et historiques. En particulier, les cartes topographiques de 1943... Continuer à lire...

The post Perry-Castañeda Library: cartes gratuites scannées de 1943:comment les géoréférencer? first appeared on Blog SIG & Territoires.

Introduction aux systèmes de référence

Le plugin Green View Index de QGis

$
0
0

Le plugin QGIS Green View Index est un outil puissant pour mesurer la couverture végétale d’une zone donnée. Il est facile à utiliser et fournit des informations précieuses aux urbanistes, aux architectes paysagistes et aux environnementalistes. En utilisant le plugin Green View Index, nous pouvons améliorer la durabilité urbaine, suivre... Continuer à lire...

The post Le plugin Green View Index de QGis first appeared on Blog SIG & Territoires.

Tutoriel du plugin QGis Green View Index

QGis plugin Green View Index: comparaison avec des images aériennes

Viewing all 122 articles
Browse latest View live