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

QGis et le WEB:faisons le point

$
0
0

Le WEB n’est plus réservé aux grands comptes. Les moyens techniques et les coûts des solutions ne sont plus un obstacle pour que tout un chacun puisse diffuser sur le WEB ses données et ses cartes. Mais cette évolution est allé de paire avec une multiplication des solutions techniques et l’obstacle majeur aujourd’hui est de choisir la solution la mieux adaptée à ses besoins. Nous verrons ici un panorama non exhaustif, mais qui, je l’espère, vous aidera à bien choisir avant de vous lancer.

Cartes et/ou données?

La première question à se poser est, toujours, QUOI? Qu’est-ce que vous voulez diffuser? Vous pouvez diffuser des cartes, c’est à dire l’équivalent de ce que vous voyez dans votre interface QGis sur votre poste. L’utilisateur rentre l’URL de votre carte et il retrouve une interface SIG simplifiée et une carte mise en forme par vos soins. Il peut zoomer, afficher ou éteindre les différentes couches, mais il n’a pas accès directement à vos données. Vous diffusez le résultat de votre travail, pas les moyens que vous avez utilisé.

Vous pouvez aussi choisir de mettre en ligne vos données, c’est à dire rendre accessibles des couches de données, sans mise en forme particulière. Dans ce cas, l’utilisateur fera une connexion WFS ou WMS sur vos données et il pourra les intégrer dans ses projets en les mélangeant à ses propres données.

Selon les outils choisis, vous pourrez faire soit l’un, soit l’autre, soit les deux.

Volume?

La deuxième question est COMBIEN? Sans essayer de prévoir au Mo près, vous devrez savoir à l’avance si vous voulez partager des données raster ou non. Si vous vous cantonnez aux données vecteur vos volumes de données seront, en principe, bien au-deçà des limites des outils proposés. Par contre, si vous travaillez avec des données raster (images, mnt, etc) vous dépasserez ces limites dès le début.

Investissement?

Le coût de la solution choisie ne se limite surtout pas aux coûts des logiciels ou des hébergements. Le volet principal sera votre temps. Partons de la base que vous connaissez déjà QGis. Vous avez des solutions où la mise en ligne de vos cartes et/ou données se limitent à l’utilisation d’un plugin dans QGis. Vous en aurez d’autres où il faudra s’investir pour apprendre d’autres logiciels, avec ce que cela implique en temps et en efforts.

Certaines solutions fonctionneront sur votre poste de travail, d’autres nécessiteront la mise en place d’un serveur WEB. Si votre monde se limite à Windows, vous aurez de fortes chances d’avoir à faire avec Linux.

Essayez donc de rester au plus près de vos besoins.

Mettre en ligne que vos données.

La mise en ligne de données géographiques se fait à travers ce que l’on appelle des flux WFS ou WMS. Ces deux termes barbares se référent simplement à deux protocoles standard d’échange de données. Le premier, WFS, correspond aux données vectorielles? Le deuxième, WMS, correspond aux données raster à proprement parler, mais aussi aux données vectorielles mais échangées sous forme d’images (comparez ça à l’envoi d’une copie d’écran de vos couches vecteur).

Geoserver

Toutes les solutions autour de QGis que nous aborderons ici permettent de mettre à disposition du WEB les flux WMS et WFS de vos données. Mais si vous disposez d’un serveur WEB la solution la meilleure est de mettre en place Geoserver. Logiciel Open Source, gratuit, puissant et au top de la sécurité, ce sera un bon investissement. Pour une utilisation de base normale, vous n’aurez pas besoin de plus d’une journée pour l’installer, le configurer et commencer à mettre en place vos flux de données.

Vous pouvez mettre en ligne des couches shapefile mais si vous voulez vraiment exploiter toute la puissance de Geoserver  il est conseillé de le coupler à PostgreSQL/Postgis.

Pour avoir plus d’informations sur cette solution, je vous invite à lire l’article « Débuter avec Geoserver ».

Mettre en ligne vos cartes et vos données

QGis Cloud

QGis Cloud est un plugin de QGis associé à un service Cloud. Le plugin vous permet de prendre votre projet QGis, de le charger sur le Cloud, de charger vos données sur une base du Cloud et d’obtenir en retour une URL qui permet de visualiser votre carte avec une interface SIG simplifiée et une autre URL pour accéder au flux WMS de vos données. La carte est donc accessible avec un simple navigateur WEB et,par défaut, le public peut se connecter au flux WMS du Cloud pour intégrer vos données dans leurs propres projets.

Avec quelques petits réglages très simples, vous pouvez mettre en ligne vos données sous forme de couches vecteur (WFS) et même autoriser les utilisateurs à mettre à jour les données (WFS-T).

Vous n’avez donc pas à vous occuper de la partie serveur de cette solution. QGis Cloud gère les bases de données et les outils de mise en ligne de la carte.

Voilà pour les plus. Maintenant, quels sont les moins de cette option? Tout d’abord les volumes de données. Pour un projet vous ne pouvez pas, dans l’option gratuite, dépasser 50Mo. Ceci vous interdit de fait, d’avoir des couches raster dans votre projet. Ceci ne concerne pas un fond de carte raster comme Goggle Satellite, OSM, Bing, etc, car QGis Cloud vous permet de définir une de ces sources comme fond de carte, mais il ne la compte pas dans le volume des données (elle n’est pas chargée dans votre base de données).

Vous pouvez passer à l’option payante (unique) et vous aurez droit à 500Mo pour un prix de 65€/mois, à laquelle vous pouvez ajouter 20€/mois par gigaoctet supplémentaire.

Mais si vous mettez en parallèle le coût de l’hébergement d’un serveur complet, chez OVH par exemple, qui tourne pour une option Pro avec 250 Go à moins de 10€ par mois, soyons honnêtes, cette solution n’est vraiment valable que pour les projets relativement petits ou pour ceux qui préfèrent payer cher et ne pas s’investir dans la gestion d’un serveur, car toutes les solutions qui suivent impliquent la mise en place d’un serveur.

Pour plus d’informations sur cette solution, je vous invite à consulter l’article Publiez vos cartes QGis sur le web avec QGis Cloud.

QGis server

C’est la version serveur du projet QGis. Vous aurez donc besoin d’un serveur physique et de disposer sur ce serveur(versions minimales) d’Apache 2.4, PHP 5.5 et PostgresSQL 9.3, avant d’installer QGis Server.

Le principe est simple (même si l’installation peut devenir vite un cauchemar) : vous créez votre projet avec QGis Desktop, vous transférez vos données et le projet sur votre serveur, puis vous paramétrez manuellement la mise en ligne du projet en modifiant des tables de la base PostgreSQL d’administration de QGis Server.

L’utilisateur peut accéder à votre carte ainsi qu’aux flux WFS et WMS . Avec cette solution vous vous affranchissez du problème de volume de vos données.

L’interface dans le navigateur est une interface SIG simplifié (zoom, mesure, affichage des attributs).

Pour plus d’informations sur QGis Server, reportez vous à l’article Installer QGis Server sous Windows 10

Mettre en ligne que vos cartes

QGis2Web

Avec cette solution vous avez la possibilité de mettre en ligne vos cartes mais pas les flux WFS et WMS.

QGis2WXeb est un plugin de QGis Desktop. Ce plugin vous permet d’exporter votre projet QGis local sur un serveur HTML classique. Aucun logiciel particulier est nécessaire sur le serveur.

La partie cartographique sera du code LeafLet ou OpenLayers, au choix, contenu dans une page HTML. Vos données seront incluses dans un fichier de données au format GeoJson. Il suffit de copier sur votre serveur la page html et le fichier Json pour que votre carte soit en ligne.

Le gros avantage est de n’avoir rien à faire côté serveur. Le deuxième est que cette solution est un premier pas facile pour aborder la dernière des options que nous verrons après. En effet, la génération du code OpenLayers ou LeafLet peut servir de base pour développer des pages avec des fonctionnalités beaucoup plus riches.

Le principal inconvénient est l’absence de flux WFS et WMS d’une part, et le fait de figer les données tout en les recopiant autant de fois qu’elles sont utilisées dans un projet.

Pour plus d’informations sur QGis2Web, reportez vous à l’article Comment exporter votre projet QGis en page html en deux clics : Qgis2Leaf.

Et si vous devez aller plus loin

Si vos besoins dépassent ce qui a été exposé jusqu’ici, il faut envisager de laisser de côté QGis comme base de votre cartographie sur le WEB. Plusieurs architectures sont possibles, c’est le moins que l’on puisse dire. Pour commencer à réfléchir vous pouvez partir sur l’idée Postgres/Geoserver/OpenLayers. En tout cas l’architecture comprendra forcément:

  • un système de gestion de base de données (Postgresql, Oracle, …)
  • un serveur de données (WFS,WMS,…)
  • un langage d’écriture des pages HTML pour l’interface cartographique (LeafLet,OpenLayers,…)

Vous trouverez un exemple de développement d’une application de Webmapping (recherche d’itinéraire), depuis la base de données à la page HTML, dans la suite d’articles Développer une application avec pgrouting sous Windows (1 à 7)


Comment exporter votre projet QGis en page html en deux clics : le plugin Qgis2Web

$
0
0

Comment communiquer votre travail sous QGis à des partenaires qui n’ont pas d’outils SIG? Sous forme de page html consultable avec n’importe quel navigateur Internet, c’est l’option la plus pertinente.

Le plugin QSGis2Web fournit un moyen facile de distribuer et de visualiser votre travail QGIS sous forme de carte Web utilisant, sans que vous ayez à les connaître, OpenLayers ou LeafLet.

Avec ce plugin, en quelques clics vous exportez votre projet QGis sous forme de page html. Vous créez un répertoire contenant la page index.html et des sous-répertoires avec tous ce qui est nécessaire pour visualiser votre carte, ainsi que les données utilisées.
Un projet QGIS classique contient des données différentes: vecteur et  raster. QGIS2WEBf exporte les couches vecteur en format GeoJSON, crée la base de la carte web en utilisant la version actuelle de Leaflet ou d’OpenLayers(au choix). En plus, le plugin ajoute les données raster sous forme de superposition d’images avec un curseur d’opacité.

Installez le plugin QGis2Web à partir du gestionnaire de plugins (Extensions -> Gérer/Installer des extensions).

Le plugin est accessible à partir du menu Internet -> QGis2web

Généralités

Vous pouvez choisir entre plusieurs couches de fond de carte et définir l’étendue initiale de la carte, ainsi que les dimensions de la carte dans votre document HTML. Pour faciliter l’export de couches volumineuses, vous pouvez désactiver l’option de chargement automatique des données dans votre projet QGis, ou décocher l’affichage de la couche. La carte web générée ayant un contrôle d’affichage des couches, vous pourrez les activer une fois terminé la création de la carte. Si votre couche a plus de 1000 enregistrements, elle ne sera pas affichée dans la fenêtre d’aperçu, mais elle sera incluse dans les données exportées.

L’interface du plugin qgis2web

interface du plugin qgis2web de qgisVous trouverez 4 panneaux, 3 onglets et une barre de boutons.

Commençons par cette dernière.

La barre d’outils

barre d'outils du plugin qgis2web de qgisVous avez deux options pour la bibliothèque de code à utiliser par le plugin pour générer la page HTML. Si vous comptez utiliser le plugin pour créer une carte de base et que vous comptez l’enrichir ou modifier ultérieurement, vous choisirez évidement l’option qui vous correspond. Si non, cela v dépendre des caractéristiques de votre projet. En effet, le plugin essaye de reproduire au mieux votre projet (symbologie, étiquettes, transparence,…). Mais vous verrez à l’usage que tout ne peut pas être reproduit. Leaflet et OpenLayers n’ayant pas les mêmes possibilités, selon les cas votre projet sera mieux reproduit par l’un ou par l’autre.

Si vous changez d’option dans l’interface, l’affichage de la fenêtre d’aperçu est mis à jour automatiquement, et vous verrez le rendu avec la nouvelle bibliothèque de code. Par contre, pour toutes les autres modifications apportées dans les autres panneaux, la mise à jour de l’aperçu ne se fera que si vous cliquez sur le bouton Update preview.

Le bouton Export génère la page html et exporte les données en Json.

La fenêtre d’aperçu.

fenêtre d'aperçu du plugin qgis2web de qgisVous pouvez voir un aperçu du rendu final dans cette fenêtre. N’oubliez pas de cliquer sur le bouton Update preview pour voir les modifications apportées au paramètres du plugin. Tous les éléments ne seront pas forcément à l’échelle finale. Comme vous pouvez le voir dans l’image précédente, la barre de légende a la taille définitive, mais pas la carte en elle-même.

Cette fenêtre n’est pas simplement une image, elle réagit comme le fera la page finale (clics, surbrillances, etc…)

Le panneau layers et groupes.

panneau layers and groups du plugin qgis2web de qgisCe panneau permet de configurer deux choses:

  • le fait que la couche soit affichée part défaut ou pas: si vous cochez la case Visible, la couche sera affichée dès le chargement de la page HTML. Si la case n’est pas cochée, votre couche apparaîtra dans la barre de légende et il faudra cocher sa case dans la page HTML pour qu’elle soit affichée.
  • le rendu des fenêtres popup avec les attributs des entités: cette option ne sera appliquée que dans le cas où vous cocherez l’option Show popups on hover dans le panneau de réglages généraux du plugin.

La gestion des groupes ne fonctionne pas toujours. Si vous avez groupé des couches et que vous ne les voyez pas dans ce panneau, dégroupez les couches dans votre projet.

Les trois options proposées pour la mise en forme des infobulles donnent les résultats suivants:

mise en forme des infobulles du plugin qgis2web de qgisLe panneau de réglages généraux

panneau de réglages généraux du plugin qgis2web de qgisRéglages de l’exportation des données

Vous pouvez exporter le résultat, soit dans un répertoire de votre machine, soit sur un site ftp de votre serveur. Selon le cas, cliquez sur le bouton … pour définir , soit le répertoire, soit les paramètres de connexion.

La Mapping library location vous permet de charger la bibliothèque OpenLayers ou Leaflet dans le répertoire qui sera créé, ou bien de mettre une ligne d’appel de ces bibliothèques en ligne. La première option est plus volumineuse mais plus sûre quant à son fonctionnement.

L’option Minify GeoJson files élimine les espaces inutiles des fichiers GeoJson. Si vos données sont volumineuses, c’est un moyen de réduire leur taille.

L’autre moyen de réduire la taille des données est de jouer sur le niveau de détail des géométries. L’option Precision permet de généraliser les géométries de type ligne et polygone. L’option maintain ne change pas les géométries. Les valeurs de 1 à 15 déterminent le degré de généralisation apporté aux géométrises, avant leur export. La valeur 1 correspond à la plus forte généralisation, la valeur 15 à la plus légère.

Réglages de l’échelle et du zoom.

Extent vous permet de définir l’étendue de la carte au moment de son affichage. Canevas extent prend l’étendue de la vue actuelle de votre projet QGis. Fit to layers extent affichera l’étendue de la carte correspondant à l’étendue de la couche la plus grande. Ceci est calculé seulement sur les couches locales, qu’elles soient vecteur ou raster, pas sur les couches éventuelle issues de connexions WFS ou WMS.

Max et min zoom level permettent de définir la fourchette de zoom autorisée pour la carte.

Restrict to extent, si cochée, empêche de sortir du cadre défini de la carte.

Réglages de l’apparence
  • Add address search ajoute un champ qui permet de rentrer une adresse et de positionner la carte sur celle-ci, en utilisant le geocodage d’adresses.
  • Add layers list ajoute la barre de légende des couches.
  • Geolocate user place un bouton qui permet, en cliquant dessus, de centrer la carte sur la position de l’utilisateur. Attention, avec Chrome cette option ne marche que si votre carte est hébergée en HTTPS.
  • Highlight on hover met les entités en surbrillance quand la souris passe dessus.
  • Layer search permet de configurer un champ de recherche sur un attribut d’une des couches. Une fois entré une valeur dans ce champ, si la valeur est retrouvée dans la table attributaire, la carte est centrée sur l’entité
  • Match project CRS défini le système de coordonnées de la carte en sortie. Si la case est cochée, le système utilisé par la carte sera le même que celui du projet QGis. Par défaut, si la case n’est pas cochée, c’est le système sphérique Mercator (EPSG:3857) qui sera appliqué.
  • Add measure tool ajoute un outil de mesure sur la carte résultante.
  • Show popups on hover, si cochée, affiche une infobulle avec les attributs
  • Template permet de choisir le modèle de carte en sortie. L’option full-screen créera une carte qui aura la taille de l’écran de l’utilisateur, canevas-size créera une carte de la même taile que votre fenêtre cartographique dans votre projet QGis. Vous pouvez ajouter d’autres modèles dans le répertoire user/nom/.qgis2/qgis2web/templates.

Le panneau de réglage du fond de carte

choix du fond de carte dans le plugin qgis2web de qgisCe panneau vous permet de définir un ou plusieurs fonds de carte. Vous pouvez faire une sélection multiple en appuyant sur la touche CTRL et en cliquant sur un élément de la liste. Le résultat sur la carte produite sera un bloc dans la légende permettant d’activer le fond de carte souhaité.

définition de plusieurs fonds de carte dans le plugin qgis2web de qgisPréparation du projet QGis.

Une partie du rendu de la carte finale doit être préparé directement dans votre projet QGis.

Dans l’onglet Projet->Propriétés du projet->Général vous avez trois propriétés de la carte à configurer: le titre du projet, la couleur de surlignage et la couleur de fond.

propriétés du prjet pour le plugin qgis2web de qgisLe titre n’apparaîtra que si vous sélectionnez Leaflet comme bibliothèque

titre de la carte dans le plugin qgis2web de qgisDans Propriétés de la couche-> Général vous pouvez modifier le texte du nom de la couche, celui qui apparaîtra dans la barre de légende de votre carte, pour le rendre plus compréhensible, ainsi que définir les échelles entre lesquelles la couche sera affichée.

options généralkes d'une couche avec le plugin qgis2web de qgisDans propriétés de la couche->Style vous pouvez définir le style de votre couche parmi symbole unique, catégorisé et gradué. D’après les concepteurs du plugin le style 2.5D devrait aussi fonctionner, mais moi je n’ai pas réussi…A suivre.

Dans propriétés de la couche->champs vous pouvez définir le nom qui sera affiché pour chaque champ, en remplissant la colonne Alias.

mise enj forme des champs dans le plugin qgis2web de qgisLe champ Outil d’Edition contrôle ce qui va apparaître dans les infobulles si vous sélectionnez le réglage Show popups on hover. Si vous cliquez sur la valeur d’une case de l’Outil d’Edition vous aurez la fenêtre suivante:

mise en forme des infobulles du plugin qgis2web de qgisVous pouvez choisir parmi trois options (les autres n’ont aucun effet sur la carte générée):

  • Cachée: le champ n’apparaîtra pas dans l’infobulle
  • Edition de texte: l’option par défaut, affiche la valeur du champ attributaire dans l’infobulle
  • Photo: si votre champ contient un lien vers une image, l’image sera incluse dans l’infobulle.

Un exemple de la dernière option est montré ici:

inclusion d'une image dans les infobulles du plugin qgis2web de qgisPour finir, l’étiquetage de votre projet QGis sera exporté sur la carte résultante, avec quelques limitations:

  • Les expressions pour les étiquettes ne sont pas supportées,
  • les buffers autour des étiquettes ne sont exportés qu’avec OpenLayers 3,
  • Les fonds et les bordures ne sont exportés qu’avec Leaflet
  • L’export indique la police de caractères utilisée, mais ne les inclue pas dans le répertoire exporté. Si l’utilisateur n’a pas la police utilisée, l’étiquette n’apparaîtra pas.

 

Débuter avec PostgreSQL/Postgis -Introduction à pgAdmin4

$
0
0

Suite de l’article (Débuter avec Postgres/Postgis ), nous aborderons dans celui-ci une introduction à l’administration des bases Postgresql/postgis, le chargement d’un shapefile et la connexion et chargement de la couche Postgis à partir de QGis.

La manière la plus pratique d’administrer des bases de données PostgreSQL est d’utiliser l’interface graphique pgAdmin4.

Cet outil s’installe automatiquement lors de l’installation de PostgreSQL. Vous pouvez le lancer à partir de la barre de programmes:

Pour les objectifs de cet article, charger un shapefile en tant que couche Postgis dans votre nouvelle base de données, vous n’avez pas réellement besoin d’opérations d’administration. Mais c’est plus facile de comprendre le fonctionnement en suivant les modifications de la base.

Mais rassurez-vous, vous n’aurez pour l’instant rien à créer. Nous avons demandé au moment de l’installation de Postgis la création d’une base de données exemple. C’est cette base que nous utiliserons dans la suite de l’article.

pgAdmin4vous permet d’administrer une base de données PostgreSQL/Postgis sans vous soucier de la syntaxe SQL correspondante.

Quand vous lancez l’application, le premier écran vous permet de vous connecter au serveur et base de données souhaités.

Le clic-droit sur un élément ouvre le menu contextuel qui vous propose les différentes opérations possibles pour cet élément.

Au moment de l’installation nous avons créé automatiquement deux bases:

  • une base de données PostgreSQL classique, appelée postgres
  • une base de données PostgreSQL/Postgis, appelée postgis_24_sample

C’est cette deuxième que nous allons utiliser pour charger un shapefile. Mais auparavant, profitons pour jeter un coup d’œil et voir quelles sont les différences entre ces deux bases.

Si vous regardez les extensions de chacune d’elles, vous constaterez que la base Postgis possède toute une série d’extensions spécifiques qui permettent de gérer les informations spatiales. C’est la présence de ces extensions qui rend une base PostgreSQL en une base Postgres/Postgis.

Quand vous créez une base de données, vous devez ajouter ces extensions pour la rendre utilisable avec Postgis.

En cliquant droit sur extensions, puis Create -> Extension, vous aurez la liste des extensions possibles.

Ajouter un fichier shapefile dans une base Postgis.

Tout d’abord, qu’est-ce que ça veut dire ajouter un fichier shapefile à une base de données Postgis? Un « fichier » shapefile est en réalité un groupe de fichiers avec le même nom et différentes extensions. Par exemple:

exemple de fichier shapefileL’ensemble de ces fichiers constitue le « shapefile » ouessantCLC_L93. Un fichier contient les géométries, un autre les données attributaires, etc.

Les informations contenues dans les fichiers, seront chargées en tant que Table de la base de données. Une seule table contiendra l’ensemble des informations dispersées dans les fichiers shapefile.

Vous voyez dans l’image précédente à quel niveau les données seront stockées, et vous remarquerez que le niveau « Tables » est un sous-niveau d’un « Schéma » qui est un sous-niveau de « Base de données ». Vous devrez donc indiquer au moment du chargement du shapefile quelle base de données et, éventuellement, quel schéma doivent être utilisés.

Dans notre base d’exemple il y a un schéma « Public » qui a, contrairement aux autres schémas présents, la totalité des fonctions (1454). Nous laisserons ce concept pour plus tard. Retenons seulement que l’on ajoute des fonctions à un schéma au fur et à mesure des besoins. Dans notre exemple, toutes les fonctions étant déjà chargées, ça nous évite ces opérations supplémentaires.

Nous pouvons charger le shapefile avec le programme « Postgis 2.0 Shapefile and DBF Loader ».

Vous pouvez le lancer en tant qu’application autonome, à partir de la barre de programmes Windows :

A la différence de pgAdmin III, vous ne trouverez plus de bouton dans pgAdmin 4 permettant de lancer cette application.

La fenêtre de l’application s’ouvre:

shapefile loadfer dans postgisVous devez commencer par établir la connexion avec votre base de données

Cliquez sur « Add File » et naviguez pour sélectionner le fichier shapefile à charger. Cliquez sur Ouvrir, les informations du fichier à charger s’affichent dans l’Import List

pg30Cliquez sur le bouton Import

Voilà! C’est fait. Vous pouvez voir maintenant sur votre console pgAdmin 4 (après avoir actualisé l’affichage) votre table importée

Renseigner le système de coordonnées

Peut-être vous avez remarqué dans la fenêtre de l’Import List qu le SRID (système de coordonnées) est à zéro. Ceci indique que le programme de chargement n’a pas pu interpréter correctement le fichier .prj du shapefile. Dans notre cas il devrait être 2154 (code EPSG du Lambert 93/RGF93).

Nous allons donc mettre à jour l’information de la colonne géométrie de la table que nous avons créée.

Ouvrez la fenêtre SQL de pgAdmin 4:

Dans la fenêtre Editer SQL tapez la requête suivante:

SELECT UpdateGeometrySRID(‘ouessantclc_l93′,’geom’,2154);

Changez seulement le nom de la table (ouessantclc_l93) par le nom de votre table et le code du SRID (2154) par le code EPSG de votre système de coordonnées.

Exécutez la requête en ckiquant sur le bouton Exécuter (indiqué par la flèche bleue sur l’image).

Vous aurez un message indiquant que la requête s’est bien exécutée:

Charger la couche Postgis dans QGis

Pour nous assurer que tout s’est passé correctement, ouvrez QGis et sélectionnez le bouton de chargement d’une couche Postgis

pg33La fenêtre de connexion s’ouvre. La première fois que vous vous connectez à une base de données il faut configurer sa connexion.

Cliquez sur « Nouveau« , puis renseignez les informations de connexion

Vous avez tout ce qui est nécessaire dans la fenêtre de la console pgAdmin 4. Au niveau du Serveur si vous cliquez droit sur « PostgreSQL 10 » -> Properties , vous aurez toutes les informations nécessaires : Hôte et Port. Le Nom n’est utilisé que pour afficher le menu déroulant des connexions. Vous êtes libre de rentrer n’importe quel nom. Le Service vous le laissez en blanc.

La base de données où vous avez chargé le shapefile est « postgis_24_sample ».

Vous devez rentrer le nom d’utilisateur : on utilisera pour l’instant « postgres » et le mot de passe que vous avez défini pour cet utilisateur au moment de l’installation.

Cliquez sur « Tester la connexion » pour vous assurer que toutes les informations sont bien entrées, puis sur OK.

La nouvelle connexion est ajoutée à la liste. Cliquez sur « Connecter« . Vous aurez les différents Schémas disponibles et dans chacun la liste de tables spatiales:

Sélectionnez la ligne correspondante à la couche chargée du schéma Public et cliquez sur le bouton Ajouter.

La fenêtre de définition du système de coordonnées s’affiche. Sélectionnez le SRC des donnés (dans cet exemple Lambert 93)

pg36La couche est chargée dans QGis.

pg37

Vous pouvez maintenant travailler sur cette couche comme sur toute autre couche dont vous aviez l’habitude (affichage, symbologie, mise à jour géométrique ou attributaire,…)

 

*

Corriger la géométrie d’une table Postgis

$
0
0

Nous avons déjà abordé le sujet de la validation des géométries dans une série d’articles:

Dans cet article nous verrons plus spécifiquement comment détecter et corriger les problèmes géométriques dans une table PostgreSQL/Postgis en utilisant des requêtes SQL.

Vérification des erreurs avec QGis.

Vous pouvez détecter rapidement les erreurs géométriques en utilisant QGis. Il suffit de charger la couche et de lancer le menu Vecteur -> Outils de géométrie -> Vérifier la validité

Vous avez le choix entre trois méthodes :

  • deux méthodes de validation : soit GEOS, soit QGIS, et
  • une méthode qui peut être imposée pour la vérification interactive lors de la création de nouvelle géométrie (Préférences → onglet numérisation).

La méthode GEOS est plus rapide mais n’indique que la première erreur rencontrée pour chaque objet. Elle renvoie un fichier ‘Sortie invalide’ qui est une couche de polygones complétée par une colonne  _errors  :


La méthode Qgis peut renvoyer plusieurs erreurs par objet. Cette méthode renvoie dans le fichier ‘Sortie invalide’ une couche de polygones complétée par une colonne _errors avec un message moins normalisé que par la méthode GEOS :

Personnellement, j’utilise cet outil pour vérifier s’il y a des erreurs ou pas. J’exécute les deux méthodes et, si elles ne renvoient aucune erreur je considère que la couche est valide.

Par contre si des erreurs existent je passe directement sur pgAdmin 4 (ou à défaut dans le gestionnaire de base de données de QGis) pour travailler en SQL.

Détection des erreurs géométriques avec Postgis

La première étape est l’identification des erreurs. Notons que PostGIS est conforme au standard OGC OpenGIS Specifications, et donc la validité est vérifiée par rapport à GEOS.

Nous allons donc réaliser une requête qui recherchera les trois types d’erreurs principaux:

  • les erreurs GEOS (voir les géométries simples et valides)
  • les géométries nulles, qui n’ont pas de sens
  • les collections de géométries, c’est à dire des objets composés par plusieurs géométries de même type ou pas. Le cas le plus fréquent ce sont des multipolygones qui sont catalogués comme FeatureCollection par erreur. Les opérateurs spatiaux habituels ne fonctionnent pas avec des collections en entrée.

Un dernier type d’erreur, en général sans conséquence, est la présence de nœuds doubles (deux points de l’entité situés exactement au même endroit). Ils ne perturbent pas les opérateurs spatiaux, mais ce n’est pas une raison pour ne pas les corriger.

Voici une requête qui vous permet de détecter les trois premiers types d’erreurs en un seul passage:

SELECT ‘non valide’ AS nb, count(*) FROM table WHERE NOT ST_IsValid(the_geom)
UNION
SELECT ‘geom nulle’ AS nb, count(*) FROM table WHERE the_geom is null
UNION
SELECT ‘collection’ AS nb, count(*) FROM table WHERE not ST_IsValid(the_geom)
AND ST_GeometryType(ST_MakeValid(the_geom))=’ST_GeometryCollection’;

Vous pouvez avoir le détail des erreurs GEOS avec la requête suivante:

SELECT id, ST_IsValidReason(the_geom) FROM table WHERE NOT ST_IsValid(the_geom);

Correction des erreurs

(Nous prenons ici le cas d’une couche de polygones, qui est le type d’entité à présenter le plus de problèmes.)

On corrige les erreurs GEOS avec la fonction St_MakeValid

UPDATE table SET the_geom = ST_MakeValid(the_geom) WHERE NOT ST_IsValid(the_geom);

Puis, on corrige les collections en les transformant en Multi_polygones. Attention à ne pas inverser les étapes. La fonction St_MakeValid peut produire des collections en sortie.

UPDATE table
SET the_geom =
ST_Multi(ST_Simplify(ST_Multi(ST_CollectionExtract(ST_ForceCollection(ST_MakeValid(the_geom)),3)),0))
WHERE ST_GeometryType(the_geom) = ‘ST_GeometryCollection’;

Troisièmement on supprime les géométries nulles (si la requête de détection des erreurs en a trouvé).

DELETE FROM table WHERE the_geom IS NULL;

Et pour finir on supprime les nœuds en double:

UPDATE table SET the_geom = ST_Multi(ST_Simplify(the_geom,0));

Cette dernière requête est une manière un peu détournée de faire l’opération. La fonction St_Simplify est une fonction de généralisation, c’est à dire une fonction qui réduit le nombre de points d’une entité, en enlevant les points qui sont à une distance inférieure du paramètre de la fonction. En mettant 0 à cette distance, la fonction ne laisse qu’un point parmi tous les points situés dans un rayon nul (les doublons).

Une fois exécutées ces requêtes, on exécute à nouveau la requête de recherche d’anomalies. Si des erreurs persistent, il faudra utiliser d’autres moyens pour les résoudre.

Une technique souvent utilisée est la création d’un buffer null:

UPDATE table SET the_geom = ST_Multi(ST_Buffer(the_geom,0)) WHERE NOT ST_IsValid(the_geom));

A ce stade, si des erreurs persistent, il faut abandonner l’idée de les corriger automatiquement, prendre son mal en patience, et les corriger manuellement.

Le plugin Geoserver Explorer pour QGis(1):installation et configuration

$
0
0

Ce plugin pour QGis sert à configurer et gérer les catalogues GeoServer, agissant comme une interface graphique pour GeoServer.

Le plug-in GeoServer Explorer intègre également certaines fonctionnalités de QGIS permettant d’effectuer des opérations qui vont au-delà des capacités de l’API REST de Geoserver et d’effectuer facilement des workflows plus complexes:

  • Par exemple, le téléchargement d’une couche dans un format non pris en charge par l’API REST s’effectue de la même manière que le téléchargement d’un fichier de formes (shapefile) simple. Le plugin se chargera de convertir son format avant le téléchargement, sans que l’utilisateur ne s’en aperçoive.
  • Les hooks de pré-chargement peuvent être configurés pour traiter toutes les couches avant qu’ils ne soient publiées (par exemple, en exécutant une vérification de topologie ou une routine de simplification de la géométrie).
  • Le style peut être défini dans QGIS à l’aide de ses propres outils de symbologie et sera converti en SLD lors de la publication d’une couche. Cela permet à une couche d’être publiée avec le même style que celui qui a été utilisé pour l’afficher dans le cadre d’un projet QGIS.  Particulièrement intéressant pour simplifier le processus classique de chargement d’un style pour un raster dans Geoserver.
  • Le plugin GeoServer Explorer s’intègre avec d’autres plugins QGIS, comme le gestionnaire de traitement. Cela permet d’automatiser facilement des tâches telles que la publication d’un ensemble de couches. Les tâches peuvent également être intégrées dans les flux de travail à l’aide du modeleur graphique de QGIS.

Il existe une documentation très détaillée en anglais (http://boundlessgeo.github.io/qgis-plugins-documentation/geoserver/index.html), mais pas en français. La suite est une traduction commentée de cette documentation. Pour ceux qui cherchent en espagnol, l’article de MappingGIS (https://mappinggis.com/2017/01/geoserver-plugin-configura-y-gestiona-geoserver-desde-qgis/) apporte toute l’information nécessaire.


Le plugin s’installe de manière classique à partir du gestionnaire d’extensions.

Une fois, installé le plugin, l‘explorateur GeoServer est lancé à partir du menu Internet / GeoServer :

La fenêtre principale du plugin s’ouvre:


L’élément Catalogs contient les catalogues auxquels vous êtes connecté et avec lesquels vous pouvez interagir depuis l’explorateur. Il est vide lorsque vous démarrez l’explorateur, mais vous pouvez ajouter autant de connexions que vous le souhaitez.

Ajout d’un catalogue au plugin

Les catalogues GeoServer sont définis à l’aide de l’option New catalog… dans la fenêtre de droite ( Catalogues). Un catalogue est défini à l’aide de la boîte de dialogue suivante:


L’authentification de base est prise en charge, ainsi que l’authentification par certificat, si votre version de QGIS est suffisamment récente. Sélectionnez l’onglet correspondant (dans le cas où l’authentification de base et les certificats sont disponibles) et entrez les paramètres requis. L’onglet actif dans la fenêtre définira le type d’authentification à utiliser, même si l’autre onglet contient des données dans ses zones de texte.

Dans la partie inférieure de la fenêtre de l’explorateur GeoServer, vous verrez un panneau qui affiche la description de l’élément actuellement sélectionné.

Lorsque la fenêtre de l’explorateur est ancrée, le panneau de description se trouve sur sa partie inférieure.

Si vous passez en mode flottant,le panneau description sera placé sur le côté droit afin de mieux utiliser l’espace disponible. L’image ci-dessous montre la configuration non ancrée.

Le panneau de description affiche des informations sur l’élément actuellement sélectionné, mais contient également des liens vers des actions qui affectent ou sont liées à l’élément en cours: Available actions. A titre d’exemple, vous pouvez voir ci-dessous le panneau de description correspondant à une couche GeoServer.


Utilisez les liens hypertexte pour effectuer les actions correspondantes en fonction de l’élément en cours.

Le panneau de description peut également afficher des tableaux où les paramètres peuvent être modifiés. Celui montré ci-dessous correspond à l’élément Settings d’un catalogue GeoServer.


La plupart des fonctionnalités de l’explorateur sont accessibles via les menus contextuels, en cliquant avec le bouton droit sur les éléments de l’arborescence de l’Explorateur.

Configuration

En plus de l’entrée de menu qui lance l’explorateur, vous trouverez une entrée qui ouvre la fenêtre de configuration :

Utilisez les paramètres de cette boîte de dialogue pour configurer l’explorateur selon vos besoins particuliers. Les propriétés pouvant être configurées sont décrites en détail ci-dessous.

    • Keep a list of previous catalog connections

      (Garder une liste des connexions précédentes de GeoServer):
      Si vous activez cette option, chaque fois que vous vous connectez à un catalogue, les informations qui définissent ces connexions sont conservées entre les sessions. La prochaine fois que vous démarrez QGIS et l’explorateur GeoServer, vous verrez l’élément catalogues rempli avec toutes les connexions précédentes.
      La récupération des informations de chaque connexion peut prendre beaucoup de temps et provoquer un démarrage trop long de QGIS. Pour cette raison, les données du catalogue sont récupérées sur demande et pas automatiquement lors du démarrage de GeoServer Explorer. Vous devez actualiser(Refresh) l’élément de catalogue pour le peupler. Les catalogues non peuplés sont affichés avec une icône grise.Si le catalogue utilise une authentification de base et que le nom d’utilisateur et le mot de passe sont introduits à l’aide de l’onglet d’authentification de base, le mot de passe n’est pas stocké. Vous serez invité à l’entrer lorsque vous vous reconnecterez au catalogue. Si l’onglet « Configurations » est utilisé, les données de connexion (que ce soit le mot de passe ou le certificat) seront stockées dans la base de données d’authentification QGIS cryptée. Vous serez invité à entrer le mot de passe principal si vous n’avez pas utilisé la base de données d’authentification dans la session QGIS en cours.Pour supprimer un catalogue de la liste des connexions précédentes, utilisez l’option Delete (Supprimer) de l’élément de catalogue dans l’arborescence de l’Explorateur.

    • Track layers and publish styles automatically when they change

      ( Mise à jour automatique des styles):
      Si la propriété correspondante est activée, le plug-in GeoServer Explorer prendra soin de mettre à jour les styles sur le serveur chaque fois qu’une couche qui a été précédemment téléchargée avec le plugin change sa symbolique.

      Quand une couche est téléchargée dans un catalogue GeoServer, le plugin commencera à le suivre. Si la symbologie d’une couche change, vous verrez un message comme celui-ci dans la barre de message.

      Sélectionnez Update pour télécharger le nouveau style. Cliquez sur Stop tracking this layer pour éviter de voir les messages comme celui-ci lorsque les couches changent de symbologie. Typiquement, quand vous ne souhaitez pas modifier la symbologie stockée dans Geoserver en fonction des modifications que vous ferez dans votre projet.

      La mise à jour de style fonctionne également si l’explorateur GeoServer n’est pas ouvert ou si le catalogue correspondant n’est pas actif ou même pas listé dans l’arborescence de l’Explorateur.

      Le suivi des couches est basé sur la propriété source de la couche (le chemin de fichier dans le cas des couches basées sur des fichiers). Par conséquent, si vous renommez ou déplacez la couche, le mécanisme de suivi de cette couche sera désactivé. Le suivi des couches persiste entre les sessions QGIS et n’est pas lié au projet QGIS auquel la couche peut appartenir.

      Notez bien que cette fonctionnalité ne s’applique pas à des couches chargées dans Geoserver par d’autres moyens que le plugin. Si vous créez des couches Geoserver avec l’interface Geoserver, même si le message apparaît et que vous cliquez Update, la symbologie de la couche dans Geoserver ne sera pas actualisée.
    • Vector (ou Raster) pre-upload hook file

      (Pré-traitement des couches avant téléchargement)
      Si vous devez pré-traiter vos données avant qu’elles ne soient téléchargées dans Geoserver, vous pouvez configurer un hook de pré-chargement qui sera exécuté sur n’importe quelle couche avant qu’elle ne soit envoyée à GeoServer. Au lieu de la couche d’origine, ce sera le résultat de ce traitement qui sera téléchargé.

      Les hooks de pré-chargement sont définis séparément pour les couches raster et vectorielles. Dans les deux cas, ils sont définis comme le chemin vers un fichier de modèle de traitement (.model) ou de script (.py). L’algorithme défini par ce fichier hook sera chargé et exécuté pour obtenir la couche finale à télécharger.

      Dans le cas de couches raster, l’algorithme du hook doit avoir une seule entrée de type raster layer et une seule sortie, également de type raster layer. Dans le cas de couches vectorielles, l’entrée et la sortie doivent être de type couche vectorielle. Si le modèle sélectionné n’existe pas ou n’a pas les caractéristiques requises, il sera simplement ignoré et la couche d’origine sera téléchargée sans aucun prétraitement.

    • Delete style when deleting layer

      (Supprimer le style lors de la suppression du calque)
      Si une couche GeoServer est supprimée et qu’elle est la seule couche utilisant un style donné, le style sera également supprimé si ce paramètre est coché.

    • Delete resource when deleting layer

      (Supprimer la ressource lors de la suppression de la couche)
      Si ce paramètre est coché, la ressource qui fait partie d’une couche sera également supprimée de son entrepôt correspondant si la couche est supprimée.

    • Overwrite layers when uploading group

      (Écraser les couches lors du téléchargement du groupe)
      Lors du téléchargement d’un groupe, si cette option n’est pas activée, l’Explorateur tentera de réutiliser les couches qui existent déjà dans le catalogue. Si une couche portant le même nom existe déjà, elle sera utilisée pour le groupe et la couche QGIS correspondante ne sera pas téléchargée. Vérifiez-le si vous souhaitez que toutes les couches soient importées, en écrasant les couches avec le même nom que celui existant dans le catalogue.

      Dans le prochain article nous verrons les limitations du plugin Geoserver Explorer, puis, le mode d’emploi de celui-ci.

Le plugin Geoserver Explorer pour QGis(2):limitations

$
0
0

Suite de l’article Le plugin Geoserver Explorer pour QGis(1):installation et configuration, nous verrons ici les limitations du plugin.

Limitations du plugin

Voici une liste des limitations et problèmes connus pouvant apparaître.

Limitations liées au SRC. GeoServer peut rencontrer des problèmes lorsqu’un système SRC personnalisé est utilisé dans QGIS. La définition de SRC qui fonctionne correctement lors du rendu de la couche dans QGIS peut ne pas fonctionner lors de l’importation de la couche dans GeoServer. Habituellement, cela se traduit par une couche qui est publiée mais qui n’a pas de jeu SRC et n’est pas activée. Vous pouvez corriger cela manuellement en sélectionnant la couche dans l’arborescence de l’Explorateur et en modifiant son SRC.

Notez que les couches sont importées en utilisant le SRC défini dans la source de données d’origine (c’est-à-dire, le fichier prj si vous utilisez un fichier de formes). Définir un SRC différent à l’aide de l’option Set Layer CRS dans la table des matières QGIS n’aura aucun effet lors de l’importation de la couche dans GeoServer, sauf si vous enregistrez la couche avec ce SRC et donc, que la définition SRC est stockée avec les données de couche.

Limitations liées aux Noms de couches . GeoServer Explorer utilise l’API REST de GeoServer pour obtenir la liste des couches dans le catalogue. L’API REST décrit les couches sans espace de travail, ce qui signifie que si vous avez deux couches avec le même nom et dans différents espaces de travail (par exemple, ws1: macouche et ws2: macouche), elles seront affichées comme une seule (macouche dans ce cas) .

Lorsque cela se produit, la situation est ambiguë et GeoServer Explorer ne peut pas différencier les couches portant le même nom mais appartenant à des espaces de travail différents. La couche, telle que décrite par l’API REST, est ajoutée à l’arborescence de l’explorateur, mais elle ne représente que l’une des plusieurs couches partageant le même nom. Pour l’indiquer, la couche est affichée avec une icône d’avertissement et un message d’avertissement s’affiche dans la description de la couche.

Limitations de style

Une autre limitation importante est due aux différentes versions de la norme SLD supportées par QGIS et GeoServer.
L’explorateur GeoServer permet d’éditer le style d’une couche GeoServer directement à partir de l’interface QGIS. Il peut convertir un style défini dans QGIS en un style à télécharger dans un catalogue GeoServer et utiliser des styles GeoServer pour les couches QGIS. Cette conversion bidirectionnelle est cependant limitée. Ceci est principalement dû aux différentes versions de la norme SLD supportées par QGIS et GeoServer, ainsi qu’à certaines limitations de GeoServer et de QGIS. Le SLD est utilisé comme format commun par GeoServer Explorer pour décrire les styles dans les couches QGIS et GeoServer, mais certaines incompatibilités existent. Pour augmenter la compatibilité entre eux, des routines spécifiques ont été ajoutées à l’explorateur GeoServer. Cependant, dans certains cas, un style défini dans QGIS peut ne pas être compatible avec les éléments supportés par GeoServer, et la publication d’une couche sera fait avec un style modifié, ou même en utilisant un style par défaut si cela n’est pas possible.

Ce problème existe même lors de l’utilisation de la version la plus récente de GeoServer, mais les anciennes versions de GeoServer peuvent présenter plus d’incompatibilités et ne pas valider une grande partie du SLD produit par l’explorateur GeoServer.

En règle générale, le style de base pour les couches vectorielles devrait fonctionner sans problème dans les deux sens, mais une symbologie plus complexe pourra être partiellement ou complètement incompatible, conduisant à des différences entre, par exemple, le style que vous définissez dans QGIS et le style que la couche GeoServer aura. Les couches raster ont un support plus limité.

A titre d’anecdote, il m’est arrivé de définir un style dans le projet QGis et le charger dans Geoserver avec le plugin. Le style était bien servi par Geoserver, et on pouvait le constater avec l’option Prévisualiser les couches. Mais quand on essayait de recharger la couche dans QGis, le style n’était pas pris en charge par QGis…

Voici une liste des limitations connues dans la gestion SLD:

Couches raster

Le style raster est pris en charge uniquement de QGIS vers GeoServer. Cela signifie qu’un style raster peut être créé en utilisant l’interface utilisateur QGIS et téléchargé vers GeoServer, mais un style raster à partir de GeoServer ne peut pas être utilisé pour une couche QGIS. Lorsqu’une couche GeoServer est ajoutée au projet QGIS en cours à l’aide de GeoServer Explorer, elle utilisera sa symbologie uniquement s’il s’agit d’une couche vectorielle, mais sera ignorée dans le cas d’une couche raster et le style QGIS par défaut sera utilisé.
Seuls les rendus pseudo-couleur Single Band Gray et Singleband sont pris en charge. Dans ce dernier cas, l’interpolation de couleur exacte n’est pas prise en charge, mais les modes Linéaire et Discret sont pris en charge.

L’utilisation du plugin est une alternative très intéressante para rapport au processus classique de chargement d’un style dans Geoserver.

Couches vectorielles

Lors de la conversion d’un style GeoServer vers un style QGIS, le style est toujours défini en tant que style basé sur des règles. Cela signifie que, même si le style est créé à l’aide d’un autre type, tel que Gradué, quand il est téléchargé dans un catalogue GeoServer puis modifié de nouveau à partir de QGIS, il n’apparaîtra pas comme un style Gradué. Cela est dû à la manière dont QGIS gère les styles SLD, en les interprétant toujours comme une symbologie de type Rule-based.
L’étiquetage de base est pris en charge, mais tous les libellés (les étiquettes) ne seront pas exportés de QGIS vers SLD et téléchargés sur GeoServer. En particulier, l’étiquetage avancé dépendant des données n’est pas pris en charge.
L’importation d’une couche de points avec un style SVG de QGIS vers Geoserver génère une couche WMS qui respecte ce symbole SVG. La même chose n’est pas supportée pour le moment si la couche est réimportée en tant que couche WFS.

Dans le prochain article nous verrons comment utiliser le plugin Geoserver Explorer.

Le plugin Geoserver Explorer pour QGis(3):mode d’emploi

$
0
0

Suite des articles Le plugin Geoserver Explorer pour QGis(1):installation et configuration,et Le plugin Geoserver Explorer pour QGis(2):limitations, nous verrons ici le mode d’emploi détaillé du plugin.

GeoServer Explorer :Commandes et actions disponibles

Actions du menu contextuel

Vous trouverez ci-dessous des informations sur les commandes disponibles en fonction du type d’élément sur lequel vous cliquez dans GeoServer Explorer, ainsi qu’une explication sur leur utilisation.

Élément du catalogue GeoServer.

  • Clean (retirer les éléments inutilisés). Nettoie tous les styles du catalogue qui ne sont utilisés par aucune couche, et tous les entrepôts qui ne sont pas publiés à travers une couche.
  • Remove. Supprime le catalogue de la liste des connectés. Cela le supprime également de la liste qui est conservée entre les sessions, de sorte qu’il n’apparaîtra plus la prochaine fois que QGIS est démarré et que l’explorateur GeoServer est exécuté.
  • Publish layers to this catalog : Affiche la boîte de dialogue de publication des couches:


Cochez la case pour chaque couche que vous souhaitez publier parmi celles qui se trouvent actuellement dans votre projet QGIS. Sélectionnez ensuite l’espace de travail dans lequel chaque couche doit être importée et le nom de la couche dans le catalogue GeoServer. Par défaut, le nom de la couche dans le projet QGIs est utilisé, mais ce nom peut ne pas être un nom XML valide, et dans ce cas, il apparaîtra en rouge et vous devrez entrer un nom valide.

  • Publish project to this catalog. Publie toutes les couches du projet. L’opération de publication est configurée via la boîte de dialogue suivante:

Toutes les couches seront publiées dans l’espace de travail sélectionné.

S’il y a des groupes dans le projet QGIS, ils seront également créés. Les groupes ne sont pas remplacés lors de la publication d’un projet. Si un groupe avec le même nom existe dans le catalogue, un message d’avertissement s’affichera et le groupe ne sera pas téléchargé.

Si vous souhaitez créer un groupe contenant toutes les couches publiées, entrez son nom dans la zone de texte Name du groupe global. Sinon, laissez-le vide et le groupe global ne sera pas créé.

élément Workspaces

  • New workspace…. Ajoute un nouvel espace de travail.
  • Clean (retirer les entrepôts inutilisés). Supprime tous les magasins de données qui ne sont publiés par aucune couche du catalogue.

élément Layers

  • Add layer to QGIS project. Similaire à la commande Ajouter au projet QGIS pour les types d’entités ou les couvertures, mais elle utilise également les informations de style dans le cas des couches vectorielles. Le style est téléchargé en tant que fichier SLD et configuré pour la couche QGIS correspondante. Dans le cas de couches raster, les styles SLD ne sont pas pris en charge et, pour cette raison, la couche utilisera un style par défaut.
  • Delete .Supprime la couche du catalogue. Le style associé sera supprimé s’il n’est utilisé par aucune autre couche et si le paramètre de configuration correspondant est défini. Un autre paramètre de configuration peut être défini pour supprimer automatiquement l’entrepôt de données sous-jacent lorsqu’une couche est supprimée. Si une couche GWC associée à cette couche existe, elle sera également supprimée.
  • Add style to layer. Ajoute un nouveau style à la couche dans la liste des couches disponibles dans le catalogue. Le style est sélectionné dans la boîte de dialogue ci-dessous:

Cette opération est une autre forme, plus simple, de réaliser l’export du style QGis en SLD, puis le chargement du SLD dans GeoServer

 Élément style

  • New style from QGIS layer. Crée un nouveau style dans le catalogue GeoServer en utilisant le style d’une couche QGIS. La couche QGIS à utiliser et le nom du style à créer dans le catalogue GeoServer sont spécifiés dans la boîte de dialogue suivante:

  • Clean(supprimer les styles inutilisés). Supprime tous les styles qui ne sont utilisés par aucun calque.
  • Consolidate styles Recherche des couches dans le catalogue dont les styles correspondent à la même symbologie. Cela peut se produire lors du téléchargement de couches avec le même style, puisque chaque couche téléchargée aura son propre calque portant le même nom que la couche, et tous partageront le même code SLD. Cette commande recherche les styles qui représentent la même symbologie et, dans les couches qui les utilisent, remplace les styles correspondants par le premier style de la liste des styles redondants. Une fois la commande exécutée, seul un style de ceux qui sont identiques sera utilisé, tandis que les autres ne seront utilisés par aucune couche. Ces styles inutilisés ne sont pas supprimés, mais l’appel de la commande Clean(supprimer les styles inutilisés) sera supprimé du catalogue.

Élément de style.

  • Edit…. Ouvre l’éditeur de symbologie QGIS pour modifier le style de la couche. Créez votre symbologie et acceptez la boîte de dialogue à fermer. Cela entraînera la mise à jour du style. Notez que l’interface QGIS pour définir une symbologie est utilisée pour éditer un style GeoServer, mais comme la couche qui utilise le style n’est pas disponible, certaines restrictions existent:
    • Si l’élément de style se trouve sous un élément de couche, l’explorateur obtiendra les noms d’attributs de la couche, de sorte que vous pouvez les utiliser pour définir vos règles de symbologie. Les valeurs min et max de ces attributs dans la couche ne sont cependant pas disponibles. Vous ne pourrez donc pas les utiliser pour définir des plages ou des catégories.
    • Si l’élément de style n’est pas sous l’élément de couche, l’explorateur essaiera de découvrir si le style est utilisé par une couche quelconque, et utilisera cette couche au cas où il pourrait la trouver. Si plusieurs couches utilisent un style, le premier d’entre eux sera utilisé. Si aucune couche n’est trouvée (aucune couche n’utilise ce style), le style sera ouvert pour l’édition, mais aucun nom de champ ne sera disponible. Vous allez modifier le style comme s’il correspondait à une couche QGIS sans attributs.
    • L’étiquetage n’est pas supporté dans ce cas lors de l’extraction du style SLD à éditer. Cela signifie que vous pouvez ajouter une étiquette au style que vous définissez et qu’il sera correctement téléchargé dans le catalogue, mais si le style que vous modifiez a un type d’étiquetage défini, il n’apparaîtra pas dans l’éditeur de style QGIS, qui sera toujours a l’étiquetage désactivé.
    • La modification d’un style à l’aide de l’éditeur de symbologie QGIS n’est prise en charge que pour les styles vectoriels. Si vous essayez de modifier un style raster de cette façon, l’Explorateur affichera un message d’avertissement vous indiquant que ces styles ne peuvent pas être modifiés.

 

  • Edit SLD ... En cliquant dessus, vous pouvez éditer directement le contenu du SLD correspondant, en utilisant une boîte de dialogue avec un éditeur XML, tel que celui présenté ci-dessous:


Cliquer sur OK mettra à jour le corps SLD correspondant dans le catalogue, avec le texte actuel de l’éditeur. Aucune validation n’est effectuée côté client, mais si le contenu de l’éditeur n’est pas un SLD valide, GeoServer refusera de le mettre à jour. Le message d’erreur correspondant renvoyé par GeoServer sera affiché dans la barre de message QGIS.

Si le style est sous un élément de calque, les options supplémentaires suivantes sont disponibles:

  • Set as default style. Définit le style en tant que style par défaut pour la couche.
  • Add style to layer.. Un style peut être sélectionné dans la boîte de dialogue qui sera affichée, et il sera ajouté en tant que style supplémentaire pour la couche.
  • Remove style from layer. Supprime un style de la liste des styles de remplacement de la couche. Non activé pour le style par défaut de la couche.

élément settings

L’élément Settings ne contient aucun enfant. Au lieu de cela, lorsque vous cliquez dessus, il affichera tous les paramètres configurables dans le panneau de description. Vous pouvez les éditer là et puis appuyez sur le bouton Enregistrer pour télécharger les modifications dans le catalogue correspondant et le mettre à jour.

élément GeoWebCache layers

  • New GWC layer.. Ajoute une nouvelle couche GWC à partir d’une couche existante dans le catalogue GeoServer. Les propriétés de la couche mise en cache sont définies dans une boîte de dialogue comme celle illustrée ci-dessous:

élément Couche GeoWebCache

  • Delete. Supprime le calque en cache
  • Edit. Permet de modifier les propriétés de la couche GWC en ouvrant la même boîte de dialogue que celle utilisée pour les définir lors de la création de la couche.
  • Seed …. Lance une opération de génération pour la couche mise en cache. L’opération est définie via le dialogue suivant:


La zone à générer doit être entrée dans le champ dans la partie inférieure de la boîte de dialogue, avec une chaîne de 4 valeurs séparées par des virgules (xmin, xmax, ymin, ymax). Si aucune valeur n’est entrée, l’étendue totale du calque à générer est utilisée.

Une autre façon de définir la région a générer est de cliquer sur le bouton Définir sur le canevas sur le côté droit de la boîte de dialogue. Cela provoquera la disparition temporaire de la boîte de dialogue et affichera la carte QGIS. Il suffit de cliquer et de faire glisser pour définir la région de génération souhaitée, et la boîte de dialogue apparaîtra à nouveau, contenant les coordonnées de la zone.

  • Empty. Supprime toutes les données mises en cache pour une couche donnée.

Quand une opération de génération est démarrée, la boîte de description correspondant à la couche GWC en train d’être générée montrera l’état actuel de l’opération.

Étant donné que ces opérations peuvent être très longues, en fonction des niveaux de zoom sélectionnés et de la zone couverte par la couche, la progression n’est pas affichée à l’aide d’une barre de progression ou d’un sablier.

Au lieu de cela, vous pouvez utiliser QGIS comme d’habitude pendant que l’opération s’exécute en arrière-plan, et pour mettre à jour le statut, cliquez simplement sur le lien de mise à jour dans la boîte de description pour obtenir le nombre actuel de tuiles traitées. Si vous voulez arrêter l’opération de génération, cliquez simplement sur le lien kill.

QGis 3.0 est disponible

$
0
0

QGis 3.0 splash screenLa nouvelle version de QGis est disponible depuis le 23 février 2018.

Petit rappel des raisons de cette nouvelle mouture:

  • Deux nouvelles versions majeures des bibliothèques de base Qt et Python sont sorties. L’ancienne version Qt4 (la base de QGIS) ne sera plus supportée par les nouveaux systèmes d’exploitation, en particulier Mac OS X. Ce passage à Qt5 et Python 3 aura été un sacré challenge pour le projet QGIS et ses développeurs.
  • L’API de QGIS a été remaniée, de façon à implémenter différentes classes et méthodes de façon plus élégante. De ce fait, de nouvelles classes on été nécessaires et les anciennes seront dépréciées.
  • L’utilisation de Qt5 amène beaucoup de nouvelles possibilités et de fonctionnalités : fonctions graphiques, widgets QML, graphiques et bien plus encore.
  • Les terminaux mobiles seront bien mieux supportés par Qt5.

Mais comme tout cela est bien théorique, je vous propose quelques vidéos glanées sur le site de North Road pour voir du concret (et vous donner envie de télécharger la nouvelle version).

18 petites vidéos avec des nouveautés, juste pour donner un avant-goût.

De nouveaux outils de saisie de formes en utilisant les styles de DAO:
Édition interactive des étiquettes dans les projets:
Édition interactive des couleurs  d’un raster de style valeurs uniques:
Le Gestionnaire des sources de données vous permet de charger facilement tout type de données:
Intégration complète du support de GeoPackage:
Définissez les styles des annotations de votre carte en utilisant une combinaison  de symboles de remplissage et d’effets de couleurs:
Disponibilité de nombreux traitements nouveaux:
Affichage des données avec un multi-fenêtrage lié:
Valeurs par défaut plus intelligentes pour les widgets de l’éditeur lors du chargement de couches, y compris les cases à cocher, les widgets de date et autres:
Prévisualisation des limites valides des projections cartographiques, pour valider facilement vos choix de SRC:
Exécuter des tâches complexes en arrière-plan, sans bloquer votre flux de travail:
Prise en charge complète des fichiers QLR, des modèles d’impression, des modèles de traitement et des scripts Python dans le navigateur:
Nouvelle barre de recherche « locator »,  permettant un accès rapide aux calques, aux fonctionnalités, aux actions, aux algorithmes:
Reprojection automatique des calques dans les algorithmes de traitement (plus besoin de créer des calques temporaires juste pour couper des calques dans un autre CRS):
Nouveaux widgets  pour définir les polices et les symboles des éléments:
Des vues de cartes 3D interactives et entièrement intégrées:
Mise à jour automatique des valeurs de champ chaque fois qu’une entité est modifiée:
Valeurs des paramètres « Données définies » pour les paramètres de traitement ( Par exemple: fonction de tampon basée sur une expression) :

 


Accéder à une geodatabase personnelle ESRI avec QGis (2.18 ou 3.0)

$
0
0

Si vous avez installé une version 64 bits de QGIS sous Windows et que vous trouvez que les GeoDatabases  Personnelles (* .mdb) ne fonctionnent plus, cette solution peut résoudre le problème.

Si vous n’avez pas installé Microsoft Office 64 bits sur votre machine, installez microsoft access database engine 64 bit.

Cette méthode résout le problème pour les versions 2.18 et 3.0 de QGis.

Dans le panneau Variables d’environnement des paramètres système avancés de Windows, définissez les deux nouvelles variables suivantes en tant que variables utilisateur ou variables système:

nom de la variable : OGR_SKIP
valeur: ODBC

nom de la variable: PGEO_DRIVER_TEMPLATE
valeur: DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=%s

Pour charger une classe d’entités de la geodatabase vous suivrez les pas suivants:

Pour QGis 2.18

Allez dans Couche-> Ajouter une couche -> Ajouter une couche vecteur

Laissez l’option Fichier sélectionnée, et cliquez sur Parcourir

Pointez sur la geodatabase personnelle.

Cliquez sur Ouvrir. Une fenêtre s’ouvre qui vous permet de choisir la ou les  classes d’entités contenues dans la geodatabase à charger.

Pour QGis 3.0

Allez dans Couche-> Ajouter une couche -> Ajouter une couche vecteur

Laissez l’option Fichier sélectionnée, et cliquez sur le bouton … de la section Source.

Pointez sur la geodatabase personnelle.

Cliquez sur le bouton Ajouter. Une fenêtre s’ouvre qui vous permet de choisir la ou les  classes d’entités contenues dans la geodatabase à charger.

Calculer des moyennes locales sur des polygones de Voronoï avec Qgis

$
0
0

Les cartes de Voronoï sont construites à partir d’une série de polygones formés autour de l’emplacement de chaque point d’échantillonnage.

Les polygones de Voronoï sont créés de sorte que chaque emplacement dans un polygone soit plus proche du point d’échantillonnage présent dans ce polygone que de tout autre point d’échantillonnage.

Dans l’article  sur l’analyse exploratoire des données, nous avons vu comment utiliser Geostatistical Analyst d’ArcGis pour construire et analyser les polygones de Voronoï.

Dans cet article nous verrons comment obtenir les mêmes résultats avec QGis.

La principale différence entre les deux logiciels (ArcGis et QGis) réside sur le fait que dans Geostatistical Analyst l’outil calcule les polygones de Voronoï et propose leur affichage avec des statistiques locales. Le résultat est une carte thématique où les polygones sont affichés avec un dégradé de couleurs en fonction de la valeur local de la statistique choisie.

Par exemple, si on choisit l’option « moyenne », la couleur affectée à chaque polygone sera fonction de la moyenne d’une colonne (« Attribute »)

Dans QGis, les outils de Voronoï se limitent au calcul des polygones. Il n’existe pas d’options permettant de calculer en même temps des statistiques locales. Chaque polygone aura comme attributs les attributs du point le concernant, mais pour calculer les statistiques locales il faudra du travail supplémentaire.

Il est possible de le faire de différentes manières. Nous allons suivre ici une des procédures possibles, en utilisant une requête SQL.

Cette procédure consiste en:

  • Calculer les polygones de Voronoï avec les outils de traitement de QGis
  • Importer le résultat dans une base de données (Sqlite ou Postgres)
  • Ajouter un champ pour contenir la statistique locale souhaitée
  • Exécuter une requête SQL qui remplit ce champ
  • Afficher la couche avec une thématique définie sur ce champ

Calculer les polygones de Voronoï avec les outils de traitement de QGis

NOTA: la démarche est la même que ce soit avec la version 2.18 ou la 3.2 de QAGis

Vous avez deux outils qui vous permettent de calculer les polygones de Voronoï dans les traitements de QGis:

Un des outils appartient au groupe « Géométrie vectorielle », l’autre fait partie des géotraitements de GRASS.

Vous pouvez les utiliser indifféremment, mais pour ma part je préfère celui de GRASS.

Enregistrez le résultat sous forme de fichier shape. Ceci vous permettra de charger plus facilement le fichier dans votre base de données.

Importer le résultat dans une base de données (Sqlite ou Postgres)

Pour pouvoir utiliser les commandes spatiales sur votre couche nous allons la charger dans une base de données permettant ce type d’opérations. Vous pouvez toujours créer et charger le shape dans une base Sqlite, fournie avec QGis. Ou vous pouvez, si vous avez installé Postgresql sur votre machine, utiliser une base de données Postgresql/Postgis.

Pour l’importation, vous suivrez la même démarche quelle qu’elle soit la base de données choisie.

Nota: Pour créer une base de données Sqlite, vous allez dans le panneau Explorateur de QGis, cliquez droit sur Spatialite, puis sur Create Database

Pour importer votre fichier shape avec les polygones de Voronoï, vous allez utiliser le Gestionnaire de base de données:

  • Allez dans le menu Bases de données-> DB Manager pour ouvrir la fenêtre du gestionnaire de bases de données.

  • Connectez vous à la base de données choisie

  • Cliquez sur l’outil Importer une couche/un fichier

Pointez sur votre fichier shape et donnez un nom à la table que vous souhaitez créer. Cliquez sur OK.

Vous aurez un message vous indiquant que l’import c’est bien terminé.

Ajouter un champ pour contenir la statistique locale souhaitée

Tout en restant dans le gestionnaire de bases de données, sélectionnez sur la fenêtre « Providers » la table que vous venez de créer, puis dans le menu du gestionnaire allez sur Table->Edit Table

Cliquez sur le bouton Ajouter une colonne et renseignez les caractéristiques du champ que vous souhaitez calculer.

Dans notre exemple nous allons calculer la moyenne du chaque polygone et de ses voisins immédiats.

Exécuter une requête SQL qui remplit ce champ

Avant de voir la syntaxe de la requête, voyons ce que nous voulons calculer;

Pour chaque polygone on souhaite trouver les polygones qui ont un côté commun avec lui, puis calculer la moyenne d’un attribut pour cet ensemble (la valeur du polygone central plus les valeurs des polygones adjacents).

Pour une base Postgesql/postgis, la requête est la suivante

update voronoi vor
set moyenne= (SELECT sum(a.parapen)::real/count(a.parapen)::real
FROM voronoi as a
JOIN voronoi as b
ON st_intersects((st_buffer(a.geom,0.00001)),b.geom)
where b.id =vor.id)

voronoi est le nom de la table, parapen est le nom de l’attribut dont nous souhaitons la moyenne locale et geom est le nom du champ géométrie de la table.

Remarquez les opérateurs ::real , indispensables pour que le résultat (la moyenne) soit un nombre réel. Ici comme l’attribut parapen est un champ entier, par défaut le résultat est un entier sans partie décimale.

Si vous utilisez une base Sqlite, la syntaxe devra être adaptée, car ce n’est pas le même SQL que postgres ( ::real doit être remplacé par la commande cast):

update voronoi
set moyenne=(
SELECT sum(cast(a.parapen as real))/count(a.parapen)
FROM voronoi as a
JOIN voronoi as b
ON st_intersects((st_buffer(a.geom,0.00001)),b.geom)
where b.id =voronoi.id);

En ouvrant la table vous pourrez constater que le champ Moyenne est maintenant rempli.

Afficher la couche avec une thématique définie sur ce champ

Si vous avez choisi l’option Charger en tant que nouvelle couche, vous devriez voir la nouvelle couche calculée sur votre fenêtre cartographique

Il ne vous reste qu’à ouvrir la fenêtre de propriétés de la couche et définir la symbologie que vous souhaitez pour représenter le champ Moyenne

Bien sûr, pour chaque type de statistique locale souhaitée, la requête sql devra être modifiée en conséquence.

L’analyse spatiale avec SQL: 5-fonction d’agrégation (Union d’ArcGis)

$
0
0

Dans l’article précédent nous avons certaines les fonctions SQL de traitement spatial. Dans cet article nous verrons une fonction un peu plus compliquée à mettre en œuvre: la fonction d’agrégation de deux couches de polygones. Cette opération est celle qui est nommée Union dans ArcGis. Le but de l’opération est d’obtenir une couche avec toutes les intersections des entités des deux couches initiales, ainsi que toutes les entités non intersectées.

Prenons un exemple. Nous avons une première couche « rectangles »

Une deuxième couche « cercles »:

Qui se superposent spatialement:

Ce que nous voulons obtenir est une couche contenant tous les polygones des deux couches, mais en créant des polygones pour les zones de superposition:

Nous allons procéder en suivant la même méthode que dans l’article précédent, c’est à dire en construisant une requête SQL composée de plusieurs sous requêtes.

En premier lieu, nous allons construire une requête qui va construire les polygones des zones de superposition (les intersections) des deux couches. Ces polygones apparaissent en jaune sur l’image suivante.

Nous reprendrons la requête utilisée dans l’article précédent:

select cercle.id as id1,rectangles.id as id2, st_intersection(cercle.geom,rectangles.geom) as the_geom
from cercle,rectangles
where st_intersects(cercle.geom,rectangles.geom)
group by cercle.id,rectangles.id

Vous remarquerez que le select est construit pour non seulement récupérer les géométries intersectées, mais aussi les identifiants des entités d’origine (cercle.id  et rectangles.id) . Bien sûr, vous pourrez récupérer d’autres attributs, ou tous, en modifiant cette partie de la requête.

A ces polygones, nous allons ajouter le reste des surfaces occupées par la couche rectangles (en jaune sur l’image suivante)

select 0 as id1, rectangles.id as id2, st_difference(rectangles.geom,

(select st_multi(st_union(the_geom) ) as the_geom from (
select st_intersection(cercle.geom,rectangles.geom) as the_geom
from cercle,rectangles
where st_intersects(cercle.geom,rectangles.geom) )
as the_geom)) as the_geom
from rectangles

Ce que nous faisons avec cette requête est d’extraire toutes les zones d’intersection (comme dans la requête précédente) et les convertir en un seul et unique multi-polygone. La requête extrait après la différence de ce multi-polygone avec la couche de rectangles.

Pour finir, à ces polygones, nous allons ajouter le reste des surfaces occupées par la couche cercles (en jaune sur l’image suivante)

 

Nous procédons de la même manière que pour les rectangles, en utilisant un multi-polygone des zones d’intersection et en calculant la différence avec la couche cercles:

select cercle.id as id1, 0 as id2,st_difference(cercle.geom,(
select st_multi(st_union(the_geom) ) as the_geom from (
select st_intersection(cercle.geom,rectangles.geom) as the_geom
from cercle,rectangles
where st_intersects(cercle.geom,rectangles.geom) )
as the_geom)) as the_geom
from cercle

L’union de ces trois requêtes produit la couche résultat que nous attendions:

select *
from
(select cercle.id as id1,rectangles.id as       id2,st_intersection(cercle.geom,rectangles.geom) as the_geom
from cercle,rectangles
where st_intersects(cercle.geom,rectangles.geom)
group by cercle.id,rectangles.id
union all
select 0 as id1, rectangles.id as id2,st_difference(rectangles.geom,(
select st_multi(st_union(the_geom) ) as the_geom from (
select st_intersection(cercle.geom,rectangles.geom) as the_geom
from cercle,rectangles
where st_intersects(cercle.geom,rectangles.geom) )
as the_geom)) as the_geom
from rectangles
union all
select cercle.id as id1, 0 as id2,st_difference(cercle.geom,(
select st_multi(st_union(the_geom) ) as the_geom from (
select st_intersection(cercle.geom,rectangles.geom) as the_geom
from cercle,rectangles
where st_intersects(cercle.geom,rectangles.geom) )
as the_geom)) as the_geom
from cercle
)as T1

 

Tutoriel classification d’images avec QGis: 1- Introduction

$
0
0

Tout d’abord, un avertissement: ce tutoriel ne s’adresse pas aux utilisateurs dont le traitement d’images spatiales est leur métier. Il s’adresse aux utilisateurs de SIG qui doivent se lancer dans le traitement d’images dans le but d’enrichir leur données. Le but est d’aplanir les écueils du débutant et de fournir quelques bases théoriques pour ne pas simplement suivre une recette de cuisine. Les aspects théoriques ne sont donc pas exhaustifs et on se permettra quelques approximations pour ne pas rendre le discours incompréhensible pour le néophyte.

Une grande partie des explications est tirée de l’excellent site de Ressources naturelles Canada, auxquelles nous avons ajouté toute la partie pratique avec QGis.  Vous trouverez le même tutoriel mais adapté aux outils proposé par ArcGis sur notre site.

Parmi la grande variété d’outil proposés par QGis pour réaliser le travail de classification d’images, nous utiliserons dans ce tutoriel:

  • le plug-in SEMI AUTOMATIC CLASSIFICATION
  • les outils de traitement de QGis

Le plug-in SEMI AUTOMATIC CLASSIFICATION est tellement performant que l’on pourrait se contenter de  lui pour l’ensemble du tutoriel. Mais dans ce cas il serait un boîte noire et vous ne sauriez pas faire ce qu’il fait. Nous verrons donc comment faire les différentes opérations sans utiliser le plugin (par exemple la correction atmosphérique) et après, nous verrons comment gagner du temps avec l’utilisation du plugin (en cochant une case pour la correction atmosphérique!).

Nous donnerons la marche à suivre pour les versions 2.18 et 3.4 de QGis.

Le tutoriel abordera les trois grandes phases du travail de classification d’images:

  • le prétraitement et l’exploration des données
  • la classification d’images à proprement parler
  • le post-traitement des classifications

1- Introduction

 L’interprétation et l’analyse de l’imagerie de télédétection ont pour but d’identifier et de mesurer différentes cibles dans une image pour pouvoir en extraire l’information utile. En télédétection, une cible est définie comme étant toute structure ou objet observable dans une image. Les cibles peuvent être des points, des lignes ou des surfaces. Elles peuvent donc présenter des formes variées mais elles doivent obligatoirement répondre à une caractéristique:  elles doivent être distinctives, c’est à dire qu’elles doivent contraster avec les structures avoisinantes.

La photo-interprétation

L’interprétation et l’identification des cibles en télédétection peuvent être  faites de façon visuelle, c’est-à-dire par un interprète humain. Dans ce cas,  l’imagerie est présentée dans un format photographique, indépendamment du type de capteurs et de la manière dont les données sont acquises.

L’interprétation et l’analyse visuelles datent du tout début de la télédétection avec l’interprétation de photos aériennes. L’interprétation visuelle est souvent limitée à un seul canal de données ou une seule image à la fois, en raison de la difficulté d’effectuer une interprétation visuelle avec plusieurs images. L’interprétation humaine est un procédé subjectif, ce qui veut dire que les résultats peuvent varier d’un interprète à l’autre.

La classification d’image

Un analyste qui tente de classer les caractéristiques d’une image, utilise les éléments de l’interprétation visuelle (photo-interprétation) pour identifier des groupes homogènes de pixels qui représentent des classes intéressantes de surfaces. La classification numérique des images utilise l’information spectrale contenue dans les valeurs d’une ou de plusieurs bandes spectrales pour classifier chaque pixel individuellement. Ce type de classification est appelé reconnaissance de regroupements spectraux. Les deux façons de procéder (manuelle ou automatique) ont pour but d’assigner une classe particulière ou thème (par exemple : eau, forêt de conifères, maïs, blé, etc.) à chacun des pixels d’une image. La « nouvelle » image qui représente la classification est composée d’une mosaïque de pixels qui appartiennent chacun à un thème particulier. Cette image est essentiellement une représentation thématique de l’image originale.

Lorsqu’on parle de classes, il faut faire la distinction entre des classes d’information et des classes spectrales. Les classes d’information sont des catégories d’intérêt que l’analyste tente d’identifier dans les images, comme différents types de cultures, de forêts ou d’espèce d’arbres, différents types de caractéristiques géologiques ou de roches, etc. Les classes spectrales sont des groupes de pixels qui ont les mêmes caractéristiques (ou presque) en ce qui a trait à leur valeur d’intensité dans les différentes bandes spectrales des données. L’objectif ultime de la classification est de faire la correspondance entre les classes spectrales et les classes d’information. Il est rare qu’une correspondance directe soit possible entre ces deux types de classes. Des classes spectrales bien définies peuvent apparaître parfois sans qu’elles correspondent nécessairement à des classes d’information intéressantes pour l’analyse. D’un autre côté, une classe d’information très large (par exemple la forêt) peut contenir plusieurs sous-classes spectrales avec des variations spectrales définies. En utilisant l’exemple de la forêt, les sous-classes spectrales peuvent être causées par des variations dans l’âge, l’espèce, la densité des arbres ou simplement par les effets d’ombrage ou des variations dans l’illumination. L’analyste a le rôle de déterminer de l’utilité des différentes classes spectrales et de valider leur correspondance à des classes d’informations utiles.

Les méthodes de classification les plus communes peuvent être séparées en deux grandes catégories : les méthodes de classification supervisée et les méthodes de classification non supervisée.

Classification supervisée

Lors de l’utilisation d’une méthode de classification supervisée, l’analyste identifie des échantillons assez homogènes de l’image qui sont représentatifs de différents types de surfaces (classes d’information). Ces échantillons forment un ensemble de données-tests. La sélection de ces données-tests est basée sur les connaissances de l’analyste, sa familiarité avec les régions géographiques et les types de surfaces présents dans l’image. L’analyste supervise donc la classification d’un ensemble spécifique de classes. Les informations numériques pour chacune des bandes et pour chaque pixel de ces ensembles sont utilisées pour que l’ordinateur puisse définir les classes et ensuite reconnaître des régions aux propriétés similaires à chaque classe. L’ordinateur utilise un programme spécial ou algorithme afin de déterminer la « signature » numérique de chacune des classes. Plusieurs algorithmes différents sont possibles. Une fois que l’ordinateur a établi la signature spectrale de chaque classe, il assigne  chaque pixel de l’image à la classe avec laquelle il a le plus d’affinités.

Une classification supervisée commence donc par l’identification des classes d’information qui sont ensuite utilisées pour définir les classes spectrales qui les représentent.

Classification non supervisée

La classification non supervisée procède de façon contraire. Les classes spectrales sont formées en premier, basées sur l’information numérique des données seulement. Ces classes sont ensuite associées, par un analyste, à des classes d’information utile (si possible). Des programmes appelés algorithmes de classification sont utilisés pour déterminer les groupes statistiques naturels ou les structures des données. Habituellement, l’analyste spécifie le nombre de groupes ou classes qui seront formés avec les données. De plus, l’analyste peut spécifier certains paramètres relatifs à la distance entre les classes et la variance à l’intérieur même d’une classe. Le résultat final de ce processus de classification itératif peut créer des classes que l’analyste voudra combiner, ou des classes qui devraient être séparées de nouveau. Chacune de ces étapes nécessite une nouvelle application de l’algorithme. L’intervention humaine n’est donc pas totalement exempte de la classification non supervisée. Cependant

cette méthode ne commence pas avec un ensemble prédéterminé de classes comme pour la classification supervisée.

L’interprétation visuelle

La reconnaissance des cibles est la clé de l’interprétation et de l’extraction d’information. L’observation des différences entre les cibles et leurs arrière-plans implique la comparaison entre différentes cibles en se basant sur une combinaison de sept caractéristiques : ton, forme, taille, patron, texture, ombre et association. Consciemment ou non, nous utilisons régulièrement ces caractéristiques pour les interprétations visuelles que nous effectuons quotidiennement. L’identification des cibles en télédétection basée sur les sept caractéristiques visuelles nous permet de mieux interpréter et analyser.

Le ton réfère à la clarté relative ou la couleur (teinte) des objets dans une image. Généralement, la nuance de ton est l’élément fondamental pour différencier les cibles et les structures. Les variations de ton permettent aussi la différenciation des formes, textures et patrons des objets.

 

La forme réfère à l’allure générale, la structure ou le contour des objets pris individuellement. La forme peut être un indice très important pour l’interprétation. Les formes aux bordures rectilignes se retrouvent généralement dans les régions urbaines ou sont des champs agricoles, alors que les structures naturelles, telles que les bordures des forêts, sont généralement plus irrégulières, sauf dans les endroits où l’homme a construit une route ou effectué une coupe à blanc. Les fermes où les champs de culture irrigués par des systèmes d’arrosage automatiques présentent des formes circulaires.

La taille d’un objet sur une image est fonction de l’échelle. Il est important d’évaluer la taille d’une cible par rapport aux autres objets dans une scène (taille relative), ainsi que la taille absolue, afin d’aider l’interprétation de cette cible. Une évaluation rapide de la taille approximative d’une cible facilite souvent l’interprétation. Par exemple, dans une image où l’on aurait à distinguer différentes zones d’utilisation du sol et à identifier une aire comportant des bâtiments, les grosses structures telles que les usines ou les entrepôts suggéreraient des propriétés commerciales, tandis que de plus petits éléments suggéreraient des lieux résidentiels.

Le patron réfère à l’agencement spatial des objets visiblement discernables. Une répétition ordonnée de tons similaires et de textures produit un patron distinctif et facilement reconnaissable. Les vergers avec leurs arbres régulièrement disposés, ou les rues régulièrement bordées de maisons sont de bons exemples de patrons.

La texture réfère à l’arrangement et à la fréquence des variations de teintes dans des régions particulières d’une image. Des textures rugueuses consisteraient en des tons en rayures où les niveaux de gris changent brusquement dans une petite région, alors que les textures lisses auraient peu ou pas de variations de tons. Les textures lisses sont souvent le résultat de surfaces uniformes telles que des champs, du pavement ou des terrains gazonnés. Une cible avec une surface rugueuse et une structure irrégulière, telle qu’une forêt, résulte en une texture d’apparence rugueuse. La texture est l’un des éléments les plus importants pour différencier les structures sur une image radar.

Les ombres sont aussi utiles pour l’interprétation puisqu’elles donnent une idée du profil et de la hauteur relative des cibles pouvant être identifiées facilement. Les ombres peuvent cependant réduire, voire éliminer l’interprétation dans leur entourage, puisque les cibles situées dans les ombres sont moins, ou pas du tout discernables. En imagerie radar, les ombres sont particulièrement utiles pour rehausser ou identifier la topographie et les formes géologiques, particulièrement en imagerie radar.

L’association tient compte de la relation entre la cible d’intérêt et d’autres objets ou structures reconnaissables qui sont à proximité. L’identification d’éléments qu’on s’attend normalement à retrouver à proximité d’autres structures peut donner de l’information facilitant l’identification. Dans l’exemple ci-dessous, les propriétés commerciales peuvent être associées avec les routes à proximité, alors que les aires résidentielles seraient associées avec les écoles, les terrains de jeux et de sports. Dans notre exemple, un lac est associé à des bateaux, à une marina et à un parc récréatif tout près.

 

Le processus de classification d’images

L’ensemble du processus menant de l’image brute acquise par satellite ou par avion à une carte thématique présentant les entités géographiques choisies se décompose en une série d’étapes:

  • Exploration des données et prétraitement
  • Classification de l’image
    • Collecte d’échantillons d’apprentissage
    • Évaluation d’échantillons d’apprentissage
    • Mise à jour des classes
    • Création du fichier de signatures
    • Agrégation (classification non assistée)
    • Examen du fichier de signatures
    • Modification du fichier de signatures
    • Application de la classification
  • Traitements de post-classification
    • Filtrage
    • Lissage
    • Généralisation

Nous aborderons dans les prochains articles chacun de ces thèmes. Au fur et à mesure des publications, nous ajouterons les liens vers les articles correspondants. 

Tutoriel classification d’images avec QGis: 2- Prétraitement et exploration des données

$
0
0

On appelle fonctions de pré-traitement les opérations qui sont normalement requises avant l’analyse principale et l’extraction de l’information. Les opérations de pré-traitement se divisent en corrections radiométriques et en corrections géométriques. Les corrections radiométriques comprennent entre autres, la correction des données à cause des irrégularités du capteur, des bruits dus au capteur ou à l’atmosphère, et de la conversion des données afin qu’elles puissent représenter précisément le rayonnement réfléchi ou émis mesuré par le capteur. Les corrections géométriques comprennent la correction pour les distorsions géométriques dues aux variations de la géométrie Terre-capteur, et la transformation des données en vraies coordonnées (par exemple en latitude et longitude) sur la surface de la Terre.

Les fonctions de rehaussement ont pour but d’améliorer l’apparence de l’imagerie pour aider l’interprétation et l’analyse visuelles. Les fonctions de rehaussement permettent l’étirement des contrastes pour augmenter la distinction des tons entre les différents éléments d’une scène, et le filtrage spatial pour rehausser (ou éliminer) les patrons spatiaux spécifiques sur une image.

Les transformations d’images sont des opérations similaires à ceux de rehaussement de l’image. Cependant, alors que le rehaussement de l’image qui est normalement appliqué à une seule bande de données à la fois, la transformation de l’image combine le traitement des données de plusieurs bandes spectrales. Des opérations arithmétiques (c’est-à-dire addition, soustraction, multiplication, division) sont faites pour combiner et transformer les bandes originales en de « nouvelles » images qui montrent plus clairement certains éléments de la scène. Nous allons examiner certaines de ces opérations incluant les diverses méthodes de rapport de bande aussi appelé rapport spectral et un procédé appelé analyse des composantes principales qui est utilisée pour mieux représenter l’information en imagerie multispectrale.

Corrections radiométriques

Les corrections radiométriques peuvent être nécessaires à cause des variations dans l’illumination et dans la géométrie de visée d’une scène, des conditions atmosphériques, du bruit et de la réponse du capteur. Chacun de ces facteurs variera selon le capteur et la plate-forme utilisés, et selon les conditions d’acquisition des données. Aussi, il peut être souhaitable de convertir et de calibrer les données avec une unité de rayonnement ou réflexion connue (absolue) pour faciliter la comparaison entre les données.

Diverses méthodes de corrections atmosphériques peuvent être appliquées, allant de modèles très détaillés des conditions atmosphériques durant l’acquisition des données, jusqu’à un simple calcul basé seulement sur les données de l’image.

Quelle est la différence entre la radiance et la réflectance?

La radiance est la variable directement mesurée par les instruments de télédétection. Fondamentalement, vous pouvez considérer la radiance comme la quantité de lumière que l’instrument « voit » à partir de l’objet observé. Lorsque vous regardez à travers l’atmosphère, une partie de la lumière diffusée par celle-ci sera vue par l’instrument et incluse dans la radiance observée de la cible. L’atmosphère absorbera également la lumière, ce qui diminuera la luminosité observée.

La réflectance est le rapport entre la quantité de lumière quittant une cible et la quantité de lumière atteignant la cible. Il n’y a pas d’unités. Si toute la lumière quittant la cible est interceptée pour la mesure de la réflectance, le résultat est appelé « réflectance hémisphérique ».

La réflectance (ou plus spécifiquement la réflectance hémisphérique) est une propriété du matériau observé. La radiance, en revanche, dépend de l’éclairement (à la fois de l’intensité et de la direction), de l’orientation et de la position de la cible et du trajet de la lumière à travers l’atmosphère. Avec des efforts, de nombreux effets atmosphériques et l’éclairage solaire peuvent être compensés dans les données de télédétection. Cela donne ce qu’on appelle une « réflectance apparente » et elle diffère de la réflectance vraie en ce que les ombres et les effets directionnels sur la réflectance n’ont pas été traités. Beaucoup de gens parlent simplement de « réflectance ».

Pour de nombreuses applications, la luminance énergétique, la réflectance et la réflectance apparente peuvent être utilisées de manière interchangeable. Cependant, la réflectance étant une propriété du matériau cible lui-même, vous obtiendrez les valeurs d’indice de végétation les plus fiables (et répétables) à l’aide de la réflectance. La réflectance apparente est adéquate dans de nombreux cas.

Pour une description détaillée des méthodes de correction atmosphériques des images Landsat 8, vous pouvez suivre ce lien: http://www.gisagmaps.com/landsat-8-atco-guide/

La question que l’on se pose régulièrement est : est-ce nécessaire de réaliser une correction atmosphérique pour mon projet?

Par exemple, une des applications courantes de l’imagerie satellitaire est le calcul du NDVI (normalized difference vegetation index).  

 

{\displaystyle {\mbox{NDVI}}={\frac {({\mbox{NIR}}-{\mbox{Red}})}{({\mbox{NIR}}+{\mbox{Red}})}}}

NIR est la valeur de la bande du proche infrarouge et Red est la valeur de la bande du rouge visible.

Les valeurs du NDVI sont comprises en théorie entre -1 et +1, les valeurs négatives correspondant aux surfaces autres que les couverts végétaux, comme la neige, l’eau ou les nuages, pour lesquelles la réflectance dans le rouge est supérieure à celle du proche infrarouge. Pour les sols nus, les réflectances étant à peu près du même ordre de grandeur dans le rouge et le proche infrarouge, le NDVI présente des valeurs proches de 0. Les formations végétales quant à elles, ont des valeurs de NDVI positives, généralement comprises entre 0,1 et 0,7 – les valeurs les plus élevées correspondant aux couverts les plus denses.

Quand vous téléchargez une image Landsat 8, les valeurs de ces bandes sont données en unités de radiance.

La radiance est la quantité physique mesurée par le capteur. Elle se mesure en Watts (W), et dépend de la longueur d’onde (nm), de la surface de la cible (pixel) (m2) et de l’angle du cône de mesure (sr: stéradian). L’unité est donc W / (nm. m2. sr ).
La réflectance est le ratio de la radiance de la cible à la radiance d’une cible idéale qui réfléchirait 100% de la lumière incidente. Elle n’a donc pas d’unité, ou est donnée en pourcentage.
Ces deux quantités peuvent être mesurées/calculées aussi bien avec (au niveau du capteur) ou sans (au niveau de la surface) l’atmosphère .

La correction atmosphérique permet d’obtenir des données de réflectances qui (en théorie) ne dépendent pas des conditions atmosphériques. La correction atmosphérique permet donc de comparer les caractéristiques spectrales d’une cible au cours du temps ou à différents endroits. Pour notre exemple de classification, en théorie, nous pouvons aussi bien la faire sur les données de radiances délivrées par le fournisseur que sur les données de réflectance après correction atmosphérique. En pratique, la plupart des utilisateurs préfèrent travailler avec les données de réflectance, mais c’est surtout un question d’habitude. Cependant, une bonne raison d’utiliser les données de réflectance, est si l’on dispose de mesures de signatures spectrales sur le terrain et que l’on souhaite les utiliser comme références pour la classification.

En pratique

Prenons un exemple concret. Dans l’article Utiliser les images Landsat dans votre SIG  vous trouverez comment télécharger une image Landsat 8 à partir du site Earth Explorer. Téléchargez une image d’une zone à votre convenance, en prenant soin de choisir le téléchargement de l’image complète (l’option Level-1 GeoTIFF Data Product).

Une fois décompressée vous aurez un répertoire contenant une série de fichiers:

Les images dont le nom se termine par B1 à B11 correspondent aux onze bandes du satellite. Elles contiennent des valeurs de radiance. Pour le NDVI on utilise les bandes 4 (rouge) et 5 (proche infrarouge).

Les données nécessaires aux différentes corrections sont contenues dans le fichier dont le nom se termine par MLT.

Prétraitement obligatoire pour QGis

Vous pouvez charger et travailler sur les images brutes téléchargées avec QGis. Par contre, pour certains traitements, le format fourni présente des problèmes qui feront planter certains outils.

Pour éviter tous ces problèmes, il est conseillé de modifier le format des images (bandes) téléchargées.

1- Chargez les bandes que vous allez utiliser dans la fenêtre de QGis

2- Ouvrez l’outil Traitements -> GDAL ->Conversion raster -> Convertir

Modifiez la valeur des NODATA en 0. Ceci est indispensable pour que les coins noirs des images ne soient pas pris en compte dans les traitements, comme par exemple pour les histogrammes.

Modifiez aussi le type de données en sortie en Int16.

Donnez un nom au nouveau raster et cliquez sur Exécuter.

Vous aurez la nouvelle image affichée. Supprimez le raster d’origine. Vous utiliserez le raster converti pour toutes les opérations futures avec QGis.

Exemple de calcul du NDVI

Pour le calcul du NDVI on utilise généralement une correction en TOA (Top-of-Atmosphere) en réflectance.

Pour convertir les données d’une bande (radiances) en TOA réflectances on utilise la méthode suivante:

pA’ =Mp*Qcal + Ap

Où:

pA’ = réflectance TOA, non corrigée de l’angle d’incidence solaire;

Mp = Facteur de redimensionnement multiplicatif spécifique à la bande à partir des métadonnées : REFLECTANCE_MULT_BAND_x,  où X est le numéro de bande.

Ap = Facteur de redimensionnement additif spécifique à la bande à partir des métadonnées : REFLECTANCE_ADD_BAND_x, où X est le numéro de bande.

Qcal = valeur fourni dans la bande X du pixel.

Pour avoir une correction de la réflectance en fonction de l’angle d’incidence solaire, on utilise la formule suivante:

pA = pA’/sin(theta_se)

pA est la réflectance TOA corrigée de l’incidence solaire

theta_se= angle d’élévation du soleil au centre de l’image, fourni dans les métadonnées : SUN_ELEVATION.

Exemple de calcul avec QGis

Tout d’abord, si nous voulons, par exemple, calculer la correction atmosphérique de la Bande rouge (B4), nous aurons besoin des deux valeurs correspondantes à cette bande: REFLECTANCE_MULT_BAND_4 et REFLECTANCE_ADD_BAND_4

et la valeur de SUN_ELEVATION pour la correction finale


Nous chargeons la bande n°4 dans QGis

On ouvre la calculatrice raster (à partir des la Boîte à outils traitements -> GDAL -> Divers raster -> Calculatrice raster )

On rentre la formule de calcul suivante, qui correspond aux formules décrites plus haut avec les valeurs obtenues du fichier de métadonnées:

((0.00002 * A)-0.1)/0.42631886

Comme la calculatrice utilise des radians pour les fonctions trigonométriques, nous avons calculé le sinus de 25.23417171 (0.426318) de manière à simplifier la formule.

Une fois exécutée la commande, nous retrouvons une nouvelle image avec des valeurs de réflectance au lieu de radiances.

Nous répétons l’opération pour la bande 5. Une fois les deux bandes corrigées en TOA, on calcule le NDVI avec la calculatrice raster:

on affecte A à la bande 5 (proche IR), B à la bande 4 (rouge) et on entre la formule (A-B)/(A+B)

Le résultat une fois appliqué un gradient de couleurs (du vert au rouge en passant par le jaune), est le suivant:

Les valeurs négatives, dans le vert, correspondent aux surfaces autres que les couverts végétaux, comme l’eau ou les nuages, pour lesquelles la réflectance dans le rouge est supérieure à celle du proche infrarouge. Pour les sols nus, les réflectances étant à peu près du même ordre de grandeur dans le rouge et le proche infrarouge, le NDVI présente des valeurs proches de 0, en jaune. Les formations végétales quant à elles, ont des valeurs de NDVI positives, dans les tons rouges, généralement comprises entre 0,1 et 0,7 – les valeurs les plus élevées correspondant aux couverts les plus denses.

Tutoriel classification d’images avec QGis: 2.1 Correction atmosphérique des images Landsat 8

$
0
0

Nous avons vu précédemment comment corriger les images Landsat pour avoir la réflectance TOA (top-of-atmosphere). Voilà un schéma qui va nous aider à comprendre la suite:

La réflectance que nous avons calculé est donc le % de lumière réfléchie par rapport à la totalité de la lumière visible incidente. Mais comme on le voit dans le schéma, le capteur du satellite mesure deux choses en même temps: la lumière réfléchie par nos cibles à la surface de la terre, plus la lumière diffusée par les particules en suspension dans l’air.

On peut pousser la correction atmosphérique des images satellites pour enlever la partie de lumière due à la diffusion.

Comme nous l’avons déjà dit, ceci n’a d’intérêt que si vous travaillez sur des images séparées dans le temps. Le pourcentage de diffusion étant le même pour l’ensemble d’une image, c’est du temps perdu de faire cette correction.

Le mode d’emploi pour effectuer cette correction sur les images Landsat est disponible à l’adresse http://www.gisagmaps.com/landsat-8-atco-guide/ 

Mais si vous êtes débutant, vous aurez du mal à comprendre la marche à suivre. Nous allons la voir ici, en utilisant les outils de QGis.

Methode DOS (
Dark Object Subtraction)

La méthode que nous allons voir est la plus couramment employée.
La soustraction d’objets noirs est une méthode de correction atmosphérique empirique simple pour l’imagerie satellitaire, qui suppose que la réflectance des objets sombres inclut une composante importante de la diffusion atmosphérique.

Le concept est simple: si on a un objet complètement noir, et donc qui ne réfléchit pas du tout de lumière, cet objet qui devrait avoir une valeur de 0 réflectance va avoir une valeur non nulle au niveau du capteur satellite. Cette valeur sera la réflectance due aux particules présentes dans l’atmosphère.

La soustraction d’objets sombres recherche dans chaque bande la valeur de pixel la plus sombre. La diffusion est supprimée en soustrayant cette valeur de chaque pixel de la bande.

Première chose: la correction que nous allons faire ne s’applique qu’à la lumière visible et le proche infra-rouge. Nous travaillerons donc, pour les images Landsat 8, sur les bandes 2 (Bleu), 3 (vert), 4 (Rouge) et 5 (proche infra-rouge).

Deuxième chose à savoir: le principe utilisé est de calculer la diffusion pour la bande 4 (rouge) et d’utiliser une formule de correspondance pour déterminer la correction pour les autres trois bandes.

Troisième chose: nous allons travailler avec les bandes 2,3,4 et 5 en réflectance TOA mais aussi en radiance brute (DN) pour la bande 4 (rouge). Dans le mode d’emploi cité plus haut ceci n’apparaît pas du premier coup d’œil. Voyons la procédure pas à pas:

1- on calcule la réflectance TOA pour les quatre bandes avec la formule

TOAbande =((DN * 0.00002)-0.1)/sin(élévation solaire)

2- en analysant les valeurs de radiance brute (DN) de la bande rouge, nous allons déterminer une radiance due à la diffusion atmosphérique (DNred)

3- nous transformons cette radiance en réflectance TOA

CORred=((DNred * 0.00002)-0.1)/sin(élévation solaire)

4- avec un abaque on entre cette diffusion de la bande rouge et on obtient la diffusion pour les bandes 2,3 et 5 (CORbleu, CORvert, CORir)

5-on soustrait les valeurs obtenues des réflectances de TOA pour obtenir les valeurs de réflectance des 4 bandes corrigées de l’effet atmosphérique.

Rrouge= TOA(rouge)-CORred

Rbleue= TOA(bleu)-CORbleu

Rvert= TOA(vert)-CORvert

Rir= TOA(ir)-CORir

Voyons en détail les étapes 2 et 4.

Calcul de la diffusion de la bande rouge

Il y a plusieurs méthodes pour déterminer la correction à apporter à la bande rouge. La méthode conseillée est celle dite de la Bin 5 – 0.008. Vous trouverez ici une description détaillée de la méthode.

En pratique, avec QGis, noius allons utiliser l’histogramme de la bande pour déterminer la valeur de seuil de la diffusion atmosphérique.

1- Vous devez d’abord exécuter l’outil Statistiques de la couche raster sur les données de la bande 4 (rouge).

Une fois exécuté, vous aurez un ligne de résultat dans le panneau Visualiseur de résultats

Double-cliquez sur cette ligne pour ouvrir les résultats dans votre navigateur:

Notez la valeur minimale, ici 3916.

Nous allons rechercher la valeur à affecter à l correction de la diffusion atmosphérique dans l’histogramme de l’image.

Cliquez sur la couche de l’image -> Propriétés -> Histogramme


Entrez la valeur minimale trouvée dans les statistiques (ici 3916) dans la zone Min, puis cliquez sur la zone Max ci-dessous pour déplacer la valeur minimale de la ligne pointillée sur l’histogramme.


Vous pouvez utiliser le format de ligne pour trouver la base de l’histogramme, mais pour cet exemple, le format de barre sera utilisé et il est recommandé. Si l’histogramme est au format ligne, cliquez sur Préférences / Actions et décochez la case Tracer comme lignes.

Un histogramme au format barre apparaîtra. L’histogramme QGIS ne représente pas / ne montre pas toutes les valeurs comme l’histogramme ArcGIS, mais il affiche bien la forme qui peut être appropriée pour établir une valeur de dispersion qui représente la base de l’histogramme (en cas d’augmentation relativement abrupte des fréquences).  Les étapes suivantes montrent comment l’histogramme QGIS peut être utilisé pour établir la dispersion.

Passez le curseur de la souris sur l’histogramme pour afficher une loupe. Faites glisser la loupe sur l’extrémité inférieure de l’histogramme pour lancer le zoom sur la base de l’histogramme. Si vous effectuez un zoom trop important ou si vous souhaitez recommencer pour une raison quelconque, cliquez sur Préférences / Actions et Recalculer l’histogramme. L’histogramme est zoomé ci-dessous.

Vous verrez que la barre avec la valeur la plus basse est encore assez supérieure à la valeur d’image basse que vous avez précédemment entrée dans la zone Min (3619); l’histogramme QGIS ne montre pas beaucoup de valeurs dans une queue statistique (Landsat 8 a généralement de longues queues statistiques). La base de l’histogramme est la zone utilisée pour établir la dispersion.En zoomant sur les trois premières barres de l’histogramme:

Dans cet exemple, les valeurs comprises entre environ 5570 et 5595 peuvent se rapprocher de la base de l’histogramme – ce sont des valeurs très basses et ne sont pas trop sur la queue statistique (ce processus peut être quelque peu subjectif). Pour les besoins de ce document, le DN 5569 sera utilisé comme base de l’histogramme. L’histogramme sera zoomé une fois de plus pour cet exemple.

La règle à utiliser est de prendre comme valeur de dispersion la valeur minimum de la première barre dépassant une fréquence de 5 (d’où le nom Bin 5) et n’ayant pas de fréquences inférieures à 5 à sa droite. Dans l’exemple suivant:

Les deux premières barres dépassent la valeur 5, mais comme la troisième est inférieure, c’est la valeur min de la quatrième barre qui sera retenue.

Dans notre exemple, la valeur de radiance à retenir pour la correction atmosphérique de la bande rouge sera 5569.

On peut passer à la troisième étape,

3- nous transformons cette radiance en réflectance TOA

CORred=((DNred * 0.00002)-0.1)/sin(élévation solaire)

 CORred= (( 5569 * 0.00002)-0.1)/0.42631886  =0.026694

Cette valeur correspond à la Bin 5. Comme la méthode est Bin 5 – 0.008, nous enlevons 0.008 de cette valeur: 0.018694

C’est cette valeur qu’il faut soustraire aux valeur de TOA du rouge précédemment calculées pour avoir les valeurs corrigées de la diffusion atmosphérique.

Correction des autres bandes

A partir de la valeur de correction du rouge on obtient les valeurs à appliquer à chacune des autres bandes:

Allez sur la page http://www.gisagmaps.com/l8-s2-relative-scatter-calc/

Vous trouverez une fenêtre où vous pouvez rentrer la valeur de correction du rouge

Rentrez votre valeur (ici 0.018647), vous aurez automatiquement les valeurs des autres corrections qui vont s’afficher

Nous obtenons ainsi les corrections de

  • 0.06309 pour la bande Bleue (2)
  • 0.03442 pour la bande Verte (3)
  • 0.00626 pour la bande infrarouge proche (5)

Pour avoir les bandes corrigées on utilise la calculatrice raster en soustrayant à chaque bande corrigée TOA la constante de correction que nous avons trouvé.

Tutoriel classification d’images avec QGis: 2.2- Rehaussement des images

$
0
0

Pour commencer il faut bien comprendre que l’on applique le rehaussement des images afin de faciliter l’interprétation visuelle et la compréhension des images. Le rehaussement ne va pas changer les valeurs radiométriques des objets présents dans l’image, il va juste permettre à un observateur une meilleure vision de ces objets. Cette étape, donc, ne sert qu’à aider l’utilisateur à définir les échantillons d’apprentissage et les signatures à utiliser dans la classification.

Les images numériques ont l’avantage de nous permettre de manipuler assez facilement les valeurs enregistrées pour chaque pixel. Même s’il est possible d’effectuer les corrections radiométriques pour les effets de l’illumination solaire, les conditions atmosphériques et les caractéristiques des instruments utilisés avant de distribuer les images aux usagers, il peut s’avérer que l’image ne soit pas à son meilleur pour l’interprétation visuelle. Les systèmes de télédétection, et spécialement ceux qui utilisent une plate-forme spatiale, doivent être conçus de façon à pouvoir traiter les différents niveaux d’énergie propres aux cibles et à leur environnement, susceptibles d’être rencontrés dans une utilisation normale. Cette variation importante dans la réponse spectrale des différents types de cibles (ex. : forêt, désert, neige, eau, etc.) rend impossible l’application d’une correction radiométrique générale capable d’optimiser le contraste et les niveaux d’intensité dans chacune des conditions. Il faut donc faire un ajustement différent des tons en fonction de l’utilisation et de l’état de chacune des images.

Les images satellites doivent presque toujours être améliorées pour différentes raisons. Tout d’abord, la plage de luminosité de la scène peut ne pas être suffisante pour couvrir toute la plage de valeurs prise en charge par le capteur. Si elle est affichée sans amélioration, la scène paraitra sombre et peu nette. Deuxièmement, les images 16 bits des satellites modernes doivent être réduites pour s’adapter à la plage 8 bits (de 0 à 255) de l’écran de votre ordinateur.

Vous obtenez les deux résultats en étirant les valeurs d’image afin qu’elles utilisent autant des niveaux de luminosité rouge, vert et bleu disponibles sur l’écran de votre ordinateur tout en restant dans la plage prise en charge par votre moniteur.

Dans une image brute, les informations utiles sont souvent contenues dans un ensemble restreint de valeurs numériques parmi les valeurs possibles (256 dans le cas de données à 8 bits). Le rehaussement des contrastes se fait en changeant les valeurs initiales de façon à utiliser toutes les valeurs possibles, ce qui permet d’augmenter le contraste entre les cibles et leur environnement. Pour bien comprendre comment fonctionne ce type de rehaussement, il faut premièrement comprendre le concept de l’histogramme d’une image. Un histogramme est une représentation graphique des valeurs numériques d’intensité qui composent une image. Ces valeurs (de 0 à 255 pour des données à 8 bits) apparaissent le long de l’axe des x du graphique. La fréquence d’occurrence de chacune de ces valeurs est présenté le long de l’axe des y.

Dans le cas d’une bande d’image satellitaire, les valeurs ne seront pas en dégradé de gris mais, comme dans cet histogramme, en valeurs de radiance.

La valeur minimale présente est de 0 (NoData) et les valeurs de radiance vont d’une valeur minimale de 4831 à une valeur maximale de 32767. Mais la simple observation de l’histogramme permet de voir que la quasi totalité des valeurs se trouve dans une fourchette comprise entre 5 500 et 17 000.

La méthode la plus simple est un rehaussement linéaire du contraste. Afin d’appliquer cette méthode, on identifie les limites supérieures et inférieures d’intensité représentées sur l’histogramme (les valeurs minimales et maximales), et à l’aide d’une transformation linéaire, on étire ces valeurs sur l’ensemble des valeurs disponibles.



Avec QGis, les fonctions de rehaussement se situent dans Propriétés de la couche-> Style->Amélioration du contraste

La figure suivante illustre trois manières différentes d’étirer les valeurs d’image d’une bande Landsat unique de 16 bits. Les images miniatures montrent les résultats et les histogrammes en dessous montrent comment les étirements ont été appliqués. Les valeurs des données d’entrée (du fichier) apparaissent sur l’axe des abscisses et les valeurs de sortie résultantes (à l’écran) se trouvent sur l’axe des ordonnées. Les histogrammes bleus montrent la distribution des valeurs d’entrée et les lignes rouges en diagonale représentent les tables de correspondance ou les tables de conversion. Les étirements sont appliqués en lisant chaque valeur d’entrée (à partir de l’axe des X), en traçant une ligne verticale jusqu’à atteindre la table de conversion, puis en prolongeant une ligne horizontale vers l’axe des Y, où elle recherche la valeur de sortie correspondante, comme indiqué. par l’exemple des flèches vertes en (a).

En (a), option Pas d’améliorations du menu déroulant, les valeurs de pixel d’entrée sont simplement rééchelonnées de la plage de 16 bits de 0 à 65535 à la plage de 8 bits de 0 à 255. Vous pouvez voir que l’histogramme ne couvre qu’une petite partie de la plage de luminosité disponible et l’image résultante est très sombre.

Dans (b), option Etirer jusqu’au MinMax du menu déroulant, la plage d’entrée est ajustée de manière à s’étendre entre les valeurs d’entrée minimale et maximale réelles des données (comparez les étiquettes de l’axe X avec (a)). Bien que l’histogramme couvre une plus grande partie de la plage de luminosité qu’auparavant, il n’en couvre toujours pas beaucoup et l’image est toujours très sombre.

Dans (c), option  Etirer  et couper jusqu’au MinMax du menu déroulant, la diagonale est ajustée de sorte que ses extrémités couvrent 99% de la plage d’entrée. Le 1% restant des données est mis à zéro pour (pixels sombres) ou à 255 (pour les pixels clairs). Le contour bleu en pointillé montre l’histogramme de sortie obtenu et vous pouvez voir qu’il couvre toute la plage de luminosité. L’image montre une belle répartition des tons du noir au blanc et est la meilleure mise en valeur des trois.

Nous n’avons pas figuré la quatrième option, Couper jusqu’au MinMax car elle est très peu utilisée. On élimine de l’affichage les mêmes pixels que dans l’option précédente mais les valeurs retenues ne sont pas étirées.

En pratique, les améliorations de contraste telles que celles-ci sont appliquées aux trois bandes d’une image couleur, produisant ainsi des couleurs améliorées.

Les fonctions de transformation de QGis sont toutes linéaires, ce qui est typique des améliorations disponibles dans de nombreuses applications SIG. ArcGis ainsi que les applications dédiées de traitement d’images et de retouche photo prennent en charge diverses améliorations paramétriques et non linéaires.

Pour accéder à des fonctions de transformation plus puissantes, avec QGis, il est nécessaire d’installer le fournisseur de traitements Orfeo Toolbox. Cette bibliothèque permet des traitements spécifiques aux images issues de la télédétection.

Si Orfeo fait partie des fournisseurs installés par défaut dans les versions de QGis 2.X, il n’en est pas de même dans la version 3.X.

Si vous voulez l’installer, voici un lien sur l’article qui décrit son installation




Tutoriel classification d’images avec QGis: 2.3- Les filtres spatiaux

$
0
0

Les filtres spatiaux représentent une autre méthode de traitement numérique utilisées pour le rehaussement d’une image. Ces filtres sont conçus de façon à faire ressortir ou à supprimer des caractéristiques spécifiques d’une image en se basant sur leur fréquence spatiale. La fréquence spatiale est liée au concept de texture. Elle fait référence à la fréquence de variation des différents tons qui apparaissent dans une image. Les régions d’une image où la texture est « rugueuse » sont les régions où les changements dans les tons sont abrupts; ces régions ont une fréquence spatiale élevée. Les régions « lisses » ont une variation des tons qui est plus graduelle sur plusieurs pixels; ces régions ont une fréquence spatiale faible. La méthode de filtrage spatial consiste à déplacer une « fenêtre » d’une dimension de quelques pixels (ex. : 3 sur 3, 5 sur 5, etc.) au-dessus de chaque pixel de l’image. On applique alors un traitement mathématique utilisant les valeurs des pixels sous la fenêtre et on remplace la valeur du pixel central par le résultat obtenu. La fenêtre est déplacée le long des colonnes et des lignes de l’image, un pixel à la fois, répétant le calcul jusqu’à ce que l’image entière ait été filtrée. En modifiant le calcul effectué à l’intérieur de la fenêtre, il est possible de rehausser ou de supprimer différents types de caractéristiques présents dans une image.



Un filtre passe-bas est conçu afin de mettre en évidence les régions assez grandes et homogènes ayant des pixels d’intensité similaire. Ce filtre réduit les plus petits détails d’une image. Il est donc utilisé pour lisser une image. Les filtres moyenneur et médian, souvent utilisés avec les images radars , sont des exemples de filtre passe-bas. Les filtres passe-haut font le contraire : ils sont utilisés pour raviver les petits détails d’une image. Un filtre passe-haut peut par exemple se définir en appliquant premièrement un filtre passe-bas à une image pour ensuite soustraire le résultat de l’image originale, ce qui produit une nouvelle image dans laquelle les détails ayant une fréquence spatiale élevée sont rehaussés. Les filtres directionnels ou les filtres détectant les contours sont utilisés pour rehausser les caractéristiques linéaires d’une image comme les routes ou les limites des champs. Ces filtres peuvent aussi être conçus pour rehausser des caractéristiques ayant une certaine orientation dans l’image.

Le rehaussement d’images est essentiellement un processus qui permet de faciliter l’interprétation visuelle d’une image. Dans certains cas (comme lors d’un filtrage passe-bas), le résultat peut paraître décevant mais il permet toutefois à l’interprète de discerner les éléments de basse fréquence spatiale parmi le fouillis des hautes fréquences de l’image. Les rehaussements sont souvent appliqués pour des raisons spécifiques. Ainsi, pour une image donnée, ils pourront être forts différents s’il s’agit d’applications différentes.

Contrairement au rehaussement dont nous avons parlé, le filtrage peut se faire de deux manières différentes: en modifiant la visualisation de l’image ou en modifiant les valeurs de l’image elle-même. Si vous décidez d’appliquer définitivement le filtrage pour travailler à la classification sur l’image modifiée, vous devrez créer une nouvelle image en sortie du processus de filtrage.

Filtrage avec QGis

Vous disposez d’un outil de traitement dans la bibliothèque SAGA Gis pour effectuer le filtrage d’images SAGA -> Raster Filter -> Simple Filter:

Les filtres disponibles concernent trois grands types de filtres:

Les filtres passe-bas (Smooth)

Les filtres de lissage (passe-bas) lissent les données en réduisant les variations locales et en supprimant le bruit. Le filtre passe-bas calcule la valeur moyenne (moyenne) pour chaque pixel voisin. L’effet est que la moyenne des valeurs hautes et basses de chaque voisin sera réduite, ce qui réduira les valeurs extrêmes des données.

Les filtres passe-haut (Sharpen)

Le filtre Netteté (sharpeningt) accentue la différence comparative des valeurs avec ses voisins. Un filtre passe-haut calcule la statistique de somme focale pour chaque cellule de l’entrée à l’aide d’un voisinage pondéré du noyau. Il met en évidence les limites entre les caractéristiques (par exemple, lorsqu’un plan d’eau rencontre la forêt), accentuant ainsi les contours entre les objets. Le filtre passe-haut est appelé filtre d’amélioration des contours. Le noyau du filtre passe-haut identifie les cellules à utiliser dans le voisinage et leur poids

Filtres de détection de bord (Edge)

Le troisième des filtres concerne la détection de bords des objets géographiques.

Voici un exemple de l’application de chacun de ces filtres sur une image:

Image d’origine sans filtrage

Image avec filtrage « smooth »

Image avec filtrage « sharpen »

Image avec filtrage « Edges »

Créer une carte de localisation avec QGis 3.4

$
0
0

Les cartes de localisation permettent une vision plus globale de la zone d’étude représentée sur la carte principale

Le principe est très simple: ce sont deux cartes en une seule mise en page. La carte de localisation aura une caractéristique particulière: on figera l’étendue, les couches affichées et la symbologie de ces couches une fois pour toutes. La seule variable sera le rectangle d’emprise qui, lui, est géré par QGis lui-même.

Pour commencer, cliquez sur le menu Projet->nouvelle mise en page ou ouvrez le gestionnaire de mise en page et créez une nouvelle mise en page.

Dans la fenêtre de mise en page, ajoutez la carte principale (menu Ajouter un élément -> Ajouter carte) et la carte de localisation (idem)

Notez alors que la carte principale est nommée carte 1 et la carte de localisation carte 2.

Vous allez commencer par la définition de la carte de localisation:

1- dans la fenêtre cartographique de QGis, zoomez le contenu de la fenêtre au niveau que vous souhaitez voir dans la carte de localisation.

2- affichez seulement les couches que vous souhaitez voir dans la carte de localisation en désactivant l’affichage des autres couches.

3- Modifiez, si nécessaire, la symbologie des couches visibles. Par exemple, l’épaisseur des traits est généralement plus fin pour la carte de localisation que pour la carte principale.

4-Vérifiez dans le gestionnaire de mise en page que le résultat correspond à vos souhaits. Pour cela, en ayant sélectionné la carte 2, cliquez sur Mise à jour de l’aperçu dans le panneau Propriétés principales

Dans le panneau couches, cochez les cases Verrouiller les couches et Verrouiller le style des couches. Pour assurer qu’il n’y aura pas d’autre modification, cochez la case de verrouillage de carte 2 dans la fenêtre Éléments.

Votre carte de localisation est configurée.

Vous allez maintenant vous occuper de la carte principale. Mettez la en forme (zoom, symbologie, etc…)

Une fois terminée la mise en page de la carte principale, il ne vous reste qu’à relier les deux cartes pour que la carte de localisation affiche l’emprise de votre carte principale.

Pour cela déverrouillez la carte 2, cliquez sur elle pour la sélectionner, ouvrez le panneau Aperçus de votre carte de localisation.

Cliquez sur le bouton + pour ajouter un aperçu dans la liste d’aperçus. Il sera nommé Aperçu 1.

Pour paramétrer l’aperçu, il faut indiquer quelle emprise il faut afficher. Dans Cadre de la carte, sélectionnez Carte 1

Vous pouvez modifier le style de l’emprise (couleur, contour, etc) en ouvrant le Style de cadre

A partir de ce point, si vous changez l’emprise de la carte principale, l’emprise affichée sur la carte de localisation sera modifiée automatiquement pour la représenter.

QGis 3.8 et GRASS 7: les traitements affichent une erreur « cet algorithme ne peut pas être lancé »

$
0
0

Si vous avez installé la version 3.8 de QGis vous aurez une mauvaise surprise en essayant d’exécuter des traitements GRASS:

Mais c’est surtout quand vous essayez de corriger l’erreur en vous basant sur le texte du message que la surprise est encore plus mauvaise:

L’option de configuration du répertoire de GRASS 7 a disparu.

C’est en essayant de voir pourquoi le répertoire indiqué dans le message (grass-7.6.0 ) ne contenait pas des modules valides que je me suis aperçu que le répertoire de GRASS dans cette version de l’installateur QGis est nommé « grass76« .

Pour résoudre le problème et, à nouveau, pouvoir exécuter les traitements GRASS, il suffit de renommer le répertoire grass76 en grass-7.6.0 (c:/Programmes/QGis3.8/apps/grass/grass-7.6.0)

Classification supervisée d’images de drone en milieu littoral (3) : statistiques descriptives de texture

$
0
0

Dans l’article précédent (https://www.sigterritoires.fr/index.php/classification-supervisee-dimages-de-drone-en-milieu-littoral-2-calculs-de-texture/) nous avons vu deux groupes de mesure de texture, celui du contraste et celui de l’ordre. Nous verrons ici le troisième et dernier groupe, celui des statistiques descriptives

Groupe de statistiques descriptives de la mesure de texture GLCM

Le troisième groupe de mesures de la texture utilise des équations semblables à celles des statistiques descriptives courantes, comme la moyenne ou l’écart-type (ou la variance). Cependant, tous sont calculés en utilisant les entrées dans la GLCM, pas les valeurs de pixels d’origine.

L’important est d’être clair lorsque vous utilisez un logiciel et que vous calculez la GLCM, pas la statistique de premier ordre.  De nombreux programmes contiennent également des algorithmes pour calculer la statistique du premier ordre, c’est-à-dire directement sur les valeurs des pixels d’origine.

Soyez clair lorsque vous rédigez un rapport en vous assurant que votre terminologie est toujours claire afin que le lecteur comprenne que vous utilisez la statistique de la GLCM.

Malheureusement, dans le manuel d’utilisation de r.texture de Grass 7, ce n’est pas le cas.

En effet on retrouve des mesures de texture correspondantes à « First-order statistics in the spatial domain » et à « Second-order statistics in the spatial domain ».  Comme nous l’avons expliqué plus haut, au début du chapitre « Matrice de co-occurrence de niveau gris (GLCM) », la différence entre le premier et deuxième ordresest tout simplement le support de calcul : les statistiques de premier ordre sont faites à partir des valeurs individuelles des pixels (l’image d’origine) et les statistiques de deuxième ordre sont celles réalisées à partir de la GLCM (les fréquences de paires de pixels).

Mais dans le manuel d’utilisation cette notion est différente. Les deux types d’ordre utilisent la matrice GLCM. D’ailleurs comme il est dit sur la fiche, l’ensemble des variables de calcul de texture implémentées se réfèrent à celles décrites par Haralick et al (d’après Jensen 1996). Vous pouvez accéder à ce document à l’adresse http://haralick.org/journals/TexturalFeatures.pdf .

La phrase « Note that measures « mean », « kurtosis », « range », « skewness », and « standard deviation » are available in r.neighbors. » (Notez que les mesures « moyenne », « kurtosis », « range », « skewness », et « écart-type » sont disponibles dans r.neighbors.), placée dans le chapitre « First-order statistics in the spatial domain » ajoute à la confusion. Les méthodes présentes dans le traitement r.neighbors se réfèrent bien à des statistiques de premier ordre, calculées sur les valeurs des pixels d’origine de l’image et non de la matrice GLCM.

Moyenne

La moyenne GLCM n’est pas simplement la moyenne de toutes les valeurs de pixels originales dans la fenêtre d’image. Elle est exprimée en termes de GLCM. La valeur de pixel est pondérée non pas par sa fréquence d’occurrence par elle-même (comme dans une équation moyenne « régulière » ou familière) mais par sa fréquence d’occurrence en combinaison avec une certaine valeur de pixel voisine.

L’équation calcule la moyenne sur la base des pixels de référence, μi. Il est également possible de calculer la moyenne en utilisant les pixels voisins, μj. Pour la GLCM symétrique, où chaque pixel de la fenêtre est compté une fois comme référence et une fois comme voisin, les deux valeurs sont identiques.

Voyons quelques éléments importants pour bien comprendre le fonctionnement des calculs.

La somme (S) est de 0 à (N-1), pas de 1 à N. Puisque la première cellule en haut à gauche de la GLCM est numérotée (0,0), et non (1,1), la valeur de i (0) de cette cellule est la même que la valeur du pixel de référence (0). De même, la seconde cellule en bas à partir du haut a une valeur de i de 1, et une valeur de pixel de référence de 1. Si ce n’est pas clair, retournez en arrière et regardez l’exemple de GLCM.

La valeur Pij est la valeur de probabilité de la cellule de la GLCM, c.-à-d. combien de fois cette valeur de référence se produit dans une combinaison spécifique avec un pixel voisin. Ce n’est pas une mesure du nombre de fois que le pixel de référence se produit, qui serait la moyenne « régulière » de premier ordre pour la fenêtre d’origine. La moyenne de premier ordre est un outil permettant de lisser une image pour supprimer le bruit aléatoire et de dégrader systématiquement la résolution spatiale.

Multiplier i par Pij divise effectivement l’entrée i par la somme des entrées dans la GLCM, qui est le nombre de combinaisons dans la fenêtre d’origine. C’est la même chose que lors du calcul d’une moyenne de manière « habituelle ». Si ce n’est pas clair, examinez plus haut comment Pij est calculée. La moyenne GLCM pour la GLCM horizontale est différente de celle pour la GLCM verticale car les combinaisons de pixels sont différentes dans les deux cas. Si vous utilisez une mesure de texture « non-directionnelle », le logiciel calculera simplement les deux et fera la moyenne.

Variance et Déviation standard

Le calcul de la variance GLCM suit la formule

Tandis que la Variance est calculée avec

La variance dans la texture représente la même chose que dans la statistique descriptive commune appelée variance. Il repose sur la moyenne et la dispersion autour de la moyenne, des valeurs des cellules dans la GLCM. Cependant, la variance GLCM utilise la GLCM, donc elle traite spécifiquement des combinaisons de pixel de référence et de pixel voisin, donc elle n’est pas la même que la simple variance des niveaux de gris dans l’image originale.

La variance calculée en utilisant i ou j donne le même résultat, puisque la GLCM est symétrique. Il n’y a aucun avantage particulier à utiliser l’écart-type sur la variance, autre qu’une plage de valeurs différente.

La Variance est une mesure de la dispersion des valeurs autour de la moyenne. Elle est similaire au contraste ou à la dissimilarité. Il répond à la question « Quelle est la dispersion de la différence entre la référence et les pixels voisins dans cette fenêtre ? » Il n’est pas intuitivement évident visuellement de ce que cela pourrait signifier. Il n’est pas évident non plus, en regardant une image, d’imaginer comment la variance de la GLCM se comportera. Elle semble avoir des valeurs assez différentes pour différentes textures, cependant, et peut donc très bien remplir la fonction de discriminer les classes avec différentes textures lors de la classification supervisée. Il n’y a aucun moyen de savoir à l’avance si les catégories d’intérêt dans un cas particulier seront distinguées les unes des autres par la variance de GLCM, donc l’essai et l’erreur sont à l’ordre du jour…

Corrélation

La texture de corrélation mesure la dépendance linéaire des niveaux de gris sur ceux des pixels voisins.

Elle est calculée par

Pour la matrice symétrique, le dénominateur ci-dessus se réduit à la variance (sigma au carré).

La corrélation entre les pixels signifie qu’il existe une relation prévisible et linéaire entre les deux pixels voisins dans la fenêtre, exprimée par l’équation de régression.

Prenons un exemple : Supposons qu’il existe une corrélation très élevée entre le pixel de référence et le pixel voisin, exprimée par n=2r+2, où n est la valeur du pixel voisin et r celle de la référence. Par conséquent, si r=1, n est très susceptible d’être égal à 4 ; si r=4, n=10, etc.

Une texture à forte corrélation signifie une grande prévisibilité des relations de pixels. Ceci donne lieu à quelques propriétés intéressantes de corrélation :

Les tâches individuelles d’une couverture de sol particulière ont généralement une valeur de corrélation plus élevée à leur intérieure qu’avec les objets adjacents.

Les pixels sont généralement plus fortement corrélés avec les pixels proches qu’avec les pixels plus éloignés (auto-corrélation spatiale). D’où l’observation suivante : les petites tailles de fenêtre auront généralement une valeur de corrélation plus élevée que les grandes fenêtres.

Si la corrélation est calculée successivement pour des tailles de fenêtre grandissantes, la taille à laquelle la valeur de corrélation décline peut être prise comme une indication approximative de la taille des objets définissables dans une image. Cela ne fonctionne que si tous les objets de l’image sont à peu près semblables en tailles.

Souvent, des classes différentes (par exemple, des couvertures de sol) sur une image auront des zones (objets) de tailles différentes, par exemple des prairies et des lacs.

Les personnes familières avec les semi-variogrammes verront une ressemblance avec les informations fournies par eux et par la corrélation GLCM.

La corrélation est un calcul très différent des autres mesures de texture décrites avant. En conséquence, elle est indépendante d’elles (donne des informations différentes) et peut souvent être utilisée de manière efficace en combinaison avec les autres mesures de texture.

Quelques derniers conseils

La texture est une statistique descriptive, sans valeurs figées qui peuvent être transférées d’une situation à l’autre. Autrement dit, il est impossible de dire « les forêts ont toujours des valeurs de contraste entre 0,5 et 0,7 ».

Elle est principalement utile pour comparer une partie d’une image à une autre. Si plus d’une image doit être incluse (peut-être par mosaïquage), toutes les corrections radiométriques habituelles doivent être effectuées avant le mosaïquage, et la texture doit seulement ensuite être exécutée. Toutes les mises en garde habituelles de l’analyse d’images multiples doivent être prises en considération : les images analysées doivent être équivalentes radiométriquement, en ce qui concerne l’angle du soleil, et phénologiquement en ce qui concerne les phénomènes du sol cycliquement variables.

Il est également important de se rendre compte que l’analyste doit prendre un certain nombre de décisions avant de commencer l’analyse de la texture, s’il veut être le plus efficace pour répondre à la question posée et éviter les erreurs d’interprétation. Certains d’entre eux, et des conseils pour les meilleures pratiques, sont énumérés ci-dessous.

Les textures peuvent être calculées en utilisant une seule bande de données à la fois.

  • De nombreuses mesures de texture différentes peuvent être calculées pour chaque bande
  • Les informations de bande peuvent être consolidées à l’aide d’un index (par exemple NDVI), de composants principaux (PCA) ou d’une autre méthode avant d’exécuter une mesure de texture.
  • Les mêmes mesures de texture peuvent être calculées pour plus d’une bande
  • Trois mesures de texture peuvent être visualisées simultanément à l’aide de l’outil affichage rgb mais l’analyse numérique ne se limite généralement pas à l’utilisation de trois bandes seulement
  • Il est possible d’utiliser le résultat d’une analyse en composantes de nombreuses images de texture, mais le résultat est très difficile à interpréter.

Les images de texture sont des bandes d’image (trames) avec une valeur pour chaque pixel.

  • Les images de texture peuvent être utilisées seules ou avec d’autres données pour définir des signatures pour une classification supervisée ou non supervisée.
  • Les images de texture (bandes) peuvent être utilisées dans les classifications.
  • La sortie de texture doit être placée dans un canal 32bits, au moins au début. Il peut ensuite être redimensionné en un bande de 8 bits.
  • La valeur numérique réelle d’une mesure de texture est sans importance pour la plupart des besoins. Le plus important est de savoir si elle est relativement élevée ou relativement faible par rapport aux autres zones de l’image, et sa relation avec les mêmes valeurs de mesure de texture ailleurs sur l’image.

Les textures sont calculées dans une fenêtre, une petite région de l’image. 

L’image de test utilisée dans cette série d’articles considère l’image entière comme la zone contribuant à la texture. Pour les images plus grandes, une fenêtre est choisie pour définir cette zone. Cette fenêtre est, en pratique, carrée et avec des longueurs latérales impaires. En théorie, une fenêtre peut être de n’importe quelle dimension, mais encore une fois, des problèmes de calcul pratiques se posent pour des tailles paires et des formes non carrées de fenêtres.

La taille relative de la fenêtre et des objets dans l’image déterminera l’utilité de la mesure de texture pour la classification.

On s’attend à ce que différents objets aient des mesures de texture caractéristiques différentes. Pour mettre cela en évidence, la fenêtre doit être plus petite que l’objet, mais assez grande pour couvrir la variabilité caractéristique de l’objet.

Les fenêtres utilisées pour la texture, comme celles utilisées avec les filtres, ont toujours un « effet de bord » où la fenêtre chevauche la bordure entre les objets distincts sur l’image.

Dans le prochain article nous allons voir, en pratique, comment calculer les différentes mesures de texture avec QGis et le traitement Grass 7 r.texture.

The post Classification supervisée d’images de drone en milieu littoral (3) : statistiques descriptives de texture first appeared on Blog SIG & Territoires.

Tutoriel SCP:réussir un classement supervisé avec calcul de texture(1)

$
0
0

Nous continuons la série d’articles sur la Classification supervisée d’images de drone en milieu littoral. La première étape, indispensable pour pouvoir bien gérer la sélection des bandes à utiliser pour chaque étape du traitement, est de décomposer l’image aérienne originale, comportant trois bandes : rouge, vert et bleu, en trois images séparées. Nous utilisons pour tout le traitement QGis et le plugin SCP.

Décomposition de la mosaïque en trois bandes séparées : rouge, vert, bleu

Pour effectuer cette opération on utilise le traitement de QGis « Réordonner les bandes »

Réordonner les bandes

Dans « Bande(s) sélectionnée(s) » sélectionnez la bande à extraire

Dans « Type de données en sortie » sélectionnez « Byte »

Dans « Converti» définissez le nom et l’emplacement du fichier raster en sortie. Le résultat est ajouté à la fenêtre cartographique

Utiliser une des bandes comme source pour le calcul de texture de terrain avec r.texture

Attention ! r.texture est un traitement de Grass 7. Vous devez lancer « QGis Desktop avec Grass 7 » au lieu de « QGis Desktop »

r.texture

Pour plus de détails voir l’aide en ligne Grass de r.texture

Dans la fenêtre Traitements allez dans l’onglet Grass7 et lancez le traitement r.texture.

Textural measurement method(s) permet de choisir les différentes variables en sortie :

La taille de la fenêtre mobile détermine la taille réelle des éléments de texture détectés. Si vous avez des pixels de 10cm, une fenêtre de 3×3 mettra en lumière des textures de l’ordre de 30cm, une fenêtre de 15×15 des textures de l’ordre de 1,5m, etc. Les images suivantes montrent le résultat de trois tailles de fenêtre différentes : 3×3, 15×15 et 25×25. L’image a une taille de 1500×750 pixels.

fenêtre 3×3

fenêtre 15×15

fenêtre 25×25

Pour la suite de notre exemple nous choisissons la fenêtre de 15×15.

Convertir les rasters de texture en rasters entiers avec des plages de valeurs normalisées en 0-255

Cette étape « étire » les valeurs des différentes variables calculées par r.texture dans une plage de valeurs entre 0 et 255. Ceci permet un traitement homogène dans le plugin SCP. En effet, les différentes mesures de texture donnent des valeurs de magnitudes très différentes ce qui entraînerait, en cas de non normalisation, de privilégier la prise en compte d’un type de mesure en raison de la magnitude des valeurs et non de leur pouvoir de discrimination.

On évite ce type de problème en ramenant toutes les types de mesure à des valeurs comprises entre 0 et 255.

On pourrait faire cette opération directement sur le raster en sortie de r.texture, en ramenant à 0 la valeur minimale observée et à 255 la valeur maximale. Mais il convient de vérifier que ces rasters en sortie de r.texture n’ont pas des « effets de bord » qui affectent ces deux valeurs extrêmes.

Résultat de texture

Prenons l’exemple de la mesure de la variance de la différence (DV) dans notre zone.

Si nous chargeons le raster dans QGis nous avons :

Les valeurs obtenues vont de -0.00000153 à 0.00115. Mais, visuellement, on s’aperçoit qu’il a un problème car on ne voit pas de détails dans la texture.

Histogramme

Si nous effectuons l’histogramme de ce raster nous avons l’explication :

On voit que l’essentiel des valeurs se situe entre 0 et 0.0001 mais que des effets de bord produisent des valeurs bien supérieures mais très peu nombreuses.

Si on souhaite utiliser cette mesure de texture dans la classification d’image, on doit enlever ces valeurs parasites du raster.

Pour cela, nous utilisons la calculatrice raster pour définir l’étendue souhaitée et l’affichage de l’histogramme pour valider notre choix. Selon les cas, on peut être amenés à boucler cette opération jusqu’à trouver un bon compromis.

Calculatrice raster

L’utilisation de la calculatrice raster de QGis, dans l’opération qui nous intéresse (calcul conditionnel), n’est pas très intuitive. Voyons cela un peu en détail.

Nous souhaitons modifier certaines valeurs du raster en entrée et pas d’autres : les valeurs inférieures à 0 nous souhaitons leur affecter la valeur 0 et pour les valeurs supérieures à 0.00004 on veut les ramener à cette valeur.

On aura donc deux traitements différents pour ces valeurs, plus un traitement pour les valeurs qui sont déjà comprises entre nos deux bornes.

Dans la syntaxe de la calculatrice raster cela se traduit par trois traitements séparés par le signe +

Traitement1 + Traitement2 + Traitement3

Voyons maintenant la syntaxe d’un traitement conditionnel du type si val>X alors…

La condition ne pose pas de problème : si on souhaite que le traitement s’applique aux pixels avec une valeur < 0 la condition s’écrit

(nom_du_raster <0)

Pour chaque pixel du raster, cette condition va être évaluée, et la calculatrice donnera une valeur de 1 si la condition est remplie ou de 0 si elle ne l’est pas.

Si nous laissons le traitement tel quel, les pixels ayant une valeur inférieure à 0 prendront la valeur de 1. Mais ce que nous voulons c’est qu’ils aient la valeur 0. Nous devons donc compléter le traitement par une multiplication par 0 :

(nom_du_raster <0)*0

Là, les pixels remplissant la condition, vont être multipliés par 0 et donc auront tous la valeur de 0 en sortie. C’est ce que nous voulons.

Par contre les pixels ayant une valeur >0 auront une évaluation de 0 pour la condition et ils seront encore multipliés par 0. Si on laisse le calcul dans l’état, on aura un raster en sortie rempli de 0 !

On va compléter notre commande avec le traitement des pixels qui sont déjà entre nos deux bornes :

(nom_du_raster <0)*0  + (nom_du_raster >0 AND nom_du_raster <0.00004)

Cette condition sera évaluée à 1 si le pixel est entre les deux bornes et à 0 s’il est en dehors. S’il est entre les bornes (valeur 1) on veut qu’il garde sa valeur d’origine. On écrit cela :

(nom_du_raster <0)*0  + (nom_du_raster >0 AND nom_du_raster <0.00004) * nom_du_raster

On multiplie la valeur du pixel par 1. Rappelons que le premier traitement donne une valeur de 0 pour les pixels pris en compte par le deuxième traitement.

Il nous reste à traiter les pixels avec des valeurs > 0.00004, car dans l’état de notre commande ils ont une valeur de 0 sur le premier traitement et de 0 aussi dans le deuxième. Ce que nous voulons c’est qu’ils aient la valeur de 0.0004. On rajoute un troisième traitement

(nom_du_raster >0.00004) *0.00004

Si le pixel est > 0.00004 la condition sera évaluée à 1 et on le multiplie par 0.00004.

Notre commande finale sera alors :

(nom_du_raster <0)*0  + (nom_du_raster >0 AND nom_du_raster <0.00004) * nom_du_raster + (nom_du_raster >0.00004) *0.00004

Ce qui donne comme résultat le raster suivant :

Avec un histogramme :

En fonction du zonage de la texture, on peut encore ajuster les valeurs pour mieux discriminer nos zones d’intérêt.

L’outil convertir un raster

Une fois ce travail d’ajustement jugé satisfaisant, nous normalisons le raster sur la plage 0-255.

Pour cela nous utilisons l’outil « Convertir » disponible dans le menu QGis Raster->Conversion->Convertir

Le changement d’échelle des valeurs est fait par « Paramètres additionnels de la ligne de commande ».

Tapez –scale.

Pour avoir un raster monobande, sélectionnez Byte dans « Type de données en sortie »

Pour avoir automatiquement les bandes chargées dans le même ordre dans SCP plugin, vous pouvez numéroter cet ordre en finissant toujours le nom du raster par B et un chiffre indiquant le numéro de bande (ex : B01,B02,…).

Faites attention à définir le format de sortie en .tif.

The post Tutoriel SCP:réussir un classement supervisé avec calcul de texture(1) first appeared on Blog SIG & Territoires.
Viewing all 120 articles
Browse latest View live