Bandeau haut

Outils pour utilisateurs

Outils du site


opensource2009:fonctions_d_interrogation_des_donnees

_amine_mellah_ 2008/12/11 10:53

LES FONCTIONS D'INTERROGATION DANS QGIS

Une des fonctionnalités majeures des SIG, est d’interroger les bases de données au moyen de requêtes.

L’objet de cette partie est de comparer les capacités d’interrogation du logiciel libre QGIS avec le logiciel propriétaire Mapinfo.

Les requêtes de consultation

Une requête de consultation est une sélection de sous-ensembles d’objets :

  • selon des critères attributaires (opérations arithmétiques et logiques)
  • selon des critères spatiaux (opérations spatiales)
  • en fonction d’un objet graphique

On compare ici, Qgis et mapinfo, sur le type de langage de requête utilisé, la construction et la sauvegarde de la requête, la forme des résultats et les opérateurs spatiaux disponibles.

Type de langage

Qgis et Mapinfo utilisent tous deux, le langage SQL (Structured Query Language)

Construction de la requête

Deux commandes sont communes aux deux logiciels :

Sélection > Sélection… (critères attributaires et spatiaux) Sélection > Sélection SQL… (critères attributaires et spatiaux + fonctions d’agrégation)

Cependant, l’interface et les fonctionnalités sont différentes.

Sauvegarde de la requête

Qgis : les requêtes sont enregistrées dans un document Qgis de type .QGS Mapinfo : les requêtes sont enregistrées dans un document .wor sous la forme d’un fichier .qry

Forme des résultats

Qgis :

  • Possibilité de visualiser le résultat de la requête sous forme de carte

Mapinfo :

  • Création d’une table temporaire
  • Possibilité de visualiser la table sous forme de cartes et de graphiques
  • Modification simultanée des données sélectionnées et de la table source

Opérateurs spatiaux

Qgis ne propose pas d'opérateurs spatiaux

MapInfo propose divers opérateurs spatiaux qui permettent de sélectionner des objets appartenant à deux tables différentes, à partir de leurs relations spatiales.

Dans mapinfo, ces opérateurs sont :

  • Contains : l’objet A contient l’objet B si le centroïde de B se situe dans le polygone de A
  • Contains entire : contient entièrement
  • Within : à l’intérieur
  • Entirely within : entièrement à l’intérieur
  • Intersects : deux objets s’intersectent s’ils ont au moins un point en commun

Opérateurs arithmétiques et logiques

Qgis : ( = ; ⇐ ; >= , != ; ^^; < ; > ; % ; LIKE ; AND ; IN ; NOT IN ; OR ; NOT) Mapinfo: ( + ; - ; * ; / ; = ; ⇐ ; >= , <> ; ^; < ; > ; % ; LIKE ; AND; OR ; NOT)

A noter que Qgis ne propose pas les opérateurs (+, -, *, /), c’est à l’utilisateur de les taper sur son clavier.

Requêtes de mise à jour

Qgis : pas d’outils de mise à jour

Mapinfo : elles peuvent se faire par deux moyens :

  • Modification de la table source lors d’une sélection SQL
  • Mise à jour de la colonne avec des opérateurs SQL dans le menu Table > Mettre à jour colonne

Opérations d’agrégation

Disponible seulement sur mapinfo. Voici, les différentes fonctions d’agrégation proposées par mapinfo :

  • Count(*) : compte simplement le nombre d’enregistrements d’un groupe. L’astérisque est considéré comme argument car il s’applique à l’ensemble de l’enregistrement et non à un champ spécifique de l’enregistrement
  • Sum (<expression>) : calcule la somme des valeurs dans l’expression pour tous les enregistrements d’un groupe
  • Avg (<expression>) : calcule la moyenne des valeurs dans l’expression pour tous les enregistrements d’un groupe
  • Max (<expression>) : recherche la valeur maximale dans l’expression pour tous les enregistrements d’un groupe
  • Min(<expression>) : recherche la valeur minimale dans l’expression pour tous les enregistrements d’un groupe

Requêtes sur des tables distantes

Qgis : possible à partir de la géodatabase GRASS. Mais cela ne peut se faire que sur Linux. Mapinfo : il est nécessaire d’utiliser la routine buildsql.mbx (NB : cette routine n’est active que lorsqu’une table DBMS existe) Celle-ci ouvre alors la boite de dialogue MapInfo DBMS SQL Runner, qui donne accès à la fonction sélection SQL puis à la boite de dialogue sélection SQL datalink.

Interface de la fenêtre d’interrogation

QGIS :

Sur QGIS, l’interrogation des bases de données se fait à l’intérieur des tables attributaires. Ces dernières sont accessibles par un simple clic droit sur la couche. Comme on le voit sur la capture ci-dessus, il faut désigner l’attribut sur lequel porte la requête ainsi que le champ correspondant. La fonction rechercher exécute la requête. Le résultat est sélectionné, il peut être placé en première ligne (« sélectionnez et glissez-déplacez au dessus ») ou affiché sur la carte. Dans ce dernier cas, c’est le seul élément qui apparait sur la carte.

Mapinfo :

Dans Mapinfo, l’accession à la table attributaire se fait grâce à la fenêtre donnée. Contrairement à Qgis, les fonctions de requêtes font l’objet d’un module spécifique dénommé selection. La requête par sélection dans mapinfo offre plus de possibilités puisque on peut utiliser des opérateurs dans expression. Ce qui n’est pas possible dans Qgis en dehors des sélections SQL. Ici nous avons utilisé l’opérateur égal.

L’autre différence concerne l’affichage du résultat. Sur mapinfo, le résultat de la requête est mis en évidence sur la carte et s’inscrit dans une nouvelle table.

Conclusion

Il est important de noter que la commande de requête SQL ne fait pas l'objet d'un module individuel dans QGIS. En effet, on ne peut faire des requêtes qu'à partir d'un clic droit sur une couche. Ceci restreint fortement les capacités d'une requête puisque on ne peut interroger que la salle table selectionnée et non plusieurs comme c'est le cas dans mapinfo. En définitif, les fonctions d'interrogation dans QGIS sont très rudimentaires, et sont loin des possibilités offertes par le logiciel mapinfo.

opensource2009/fonctions_d_interrogation_des_donnees.txt · Dernière modification : //23/02/2011 19:49// de 127.0.0.1

Bandeau bas