Outdated version of the documentation. Find the latest one here.

Formats de données gérés

QGIS utilise la bibliothèque OGR pour lire et écrire des données vectorielles incluant les formats ESRI Shapefiles, MapInfo et Microstation ; les bases de données PostGIS, Spatialite, Oracle Spatial et de nombreux autres formats (les données vectorielles GRASS et PostgreSQL sont gérées par des extensions natives de QGIS). Les données vectorielles peuvent également être lues depuis des archives zip ou gzip. A ce jour, 69 formats de données vectorielles sont gérés par la bibliothèque OGR (voir OGR-SOFTWARE-SUITE Bibliographie). La liste complète est disponible sur http://www.gdal.org/ogr/ogr_formats.html.

Note

Tous les formats listés ne fonctionnent par dans QGIS, pour différentes raisons. Par exemple, certain requiert des bibliothèques externes payantes ou l’installation de QDAL/OGR n’a pas été effectuée correctement sur votre système pour le format demandé. Seuls les formats qui ont été testés apparaissent dans la liste des types de fichiers proposés au moment de charger un vecteur dans QGIS. Les autres formats peuvent être chargés en sélectionnant *.*.

Le travail sur des couches vectorielles GRASS est décrit dans la Section Intégration du SIG GRASS.

Cette section décrit comment travailler avec les formats les plus communs : les shapefiles ESRI, les couches PostGIS et SpatiaLite. Beaucoup des fonctionnalités de QGIS marchent, de par sa conception, de la même manière quel que soit le format vecteur des données sources. Il s’agit des fonctionnalités d’identification, de sélection, d’étiquetage et de gestion des attributs.

Shapefiles ESRI

Le format de fichier vecteur standard utilisé par QGIS est le Shapefile ESRI. Il est géré à travers la bibliothèque OGR Simple Feature Library ( http://www.gdal.org/ogr/ ).

Un shapefile est en réalité composé de plusieurs fichiers. Les trois suivants sont requis :

  1. .shp fichier contenant la géométrie des entités.

  2. .dbf fichier contenant les attributs au format dBase.

  3. .shx fichier d’index.

Un shapefile inclu également un fichier ayant l’extension .prj qui contient les informations sur le système de coordonnées. Bien que ces informations soient très utiles elles ne sont pas obligatoires. Il peut y avoir encore d’autres fichiers associés aux données shapefile. Si vous souhaitez avoir plus de détails nous vous recommandons de vous reporter aux spécifications techniques du format shapefile, qui se trouve notamment sur http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf.

Charger un Shapefile

mActionAddNonDbLayer Pour charger un shapefile, lancez QGIS et cliquez sur le bouton mActionAddNonDbLayer Ajouter une couche vecteur ou pressez les touches Ctrl+Shift+V. Une nouvelle fenêtre apparaîtra (voir figure_vector_1).

Figure Vector 1:

../../../_images/addvectorlayerdialog.png

Add Vector Layer Dialog nix

Cliquez sur radiobuttonon Fichier puis sur le bouton [Parcourir]. L’outil ouvre alors une fenêtre de dialogue standard (voir figure_vector_2) qui vous permet de naviguer dans les répertoires et les fichiers et charger le shapefile ou tout autre format géré. La boîte de sélection Fichiers de type selectstring vous permet de présélectionner un format de fichier géré par OGR.

Si vous le souhaitez, vous pouvez également sélectionner le type de codage du shapefile.

Figure Vector 2:

../../../_images/shapefileopendialog.png

Open an OGR Supported Vector Layer Dialog nix

Sélectionner un shapefile dans la liste puis cliquer sur [Ouvrir] le charge dans QGIS. Figure_vector_3 montre QGIS après avoir chargé le fichier alaska.shp.

Figure Vector 3:

../../../_images/shapefileloaded.png

QGIS with Shapefile of Alaska loaded nix

Astuce

Couleur des couches

Quand vous ajoutez une couche sur une carte, une couleur aléatoire lui est assignée. En ajoutant plusieurs couches en une fois, différentes couleurs sont assignées à chacune des couches.

Une fois chargée, vous pouvez zoomer sur le shapefile en utilisant les outils de navigation sur la carte. Pour changer la symbologie d’une couche, ouvrez la fenêtre Propriétés de la Couche en double-cliquant sur le nom de la couche ou en faisant un clic droit sur son nom dans la légende et en choisissant Propriétés dans le menu qui apparait. Pour plus de détails sur les paramètres de la symbologie des couches vectorielles, référez-vous à la Section Onglet Style.

Astuce

Charger une couche et un projet depuis un lecteur externe sous OS X

Sous OS X, les lecteurs portables qui sont montés à côté du disque dur primaire n’apparaissent pas dans Fichier ‣ Ouvrir un Projet comme attendu. Nous travaillons sur le support des fenêtres d’ouverture/enregistrement natives d’OS X pour résoudre ce problème. Pour y pallier, vous pouvez taper ‘/Volumes’ dans la boîte de nom Fichier et appuyer sur Entrée. Vous pouvez ensuite parcourir les lecteurs externes et les montages réseau.

Améliorer les performances d’affichage

Pour améliorer les performances de dessin d’un shapefile, vous pouvez créer un index spatial. Un index spatial améliorera à la fois la vitesse d’exécution du zoom et du déplacement panoramique. Les index spatiaux utilisés par QGIS ont une extension .qix.

Voici les étapes de création d’un index spatial :

  • Chargez un shapefile.

  • Ouvrez la fenêtre Propriétés de la Couche en double-cliquant sur le nom de la couche dans la légende ou en faisant un clic droit et en choisissant Propriétés dans le menu qui apparait.

  • Dans l’onglet Général, cliquez sur le bouton [Créer un index spatial].

Problème de chargement de fichier .prj

Si vous ouvrez un shapefile disposant d’un fichier .prj et que QGIS ne parvient pas à lire le système de coordonnées de référence, vous devez le définir manuellement via l’onglet Général de la fenêtre de Propriétés de la Couche. Cela est dû au fait que ce fichier .prj ne fournit pas les paramètres complets de la projection requis par QGIS et listés dans la fenêtre SCR.

C’est pour cette raison que lorsque vous créez un nouveau shapefile avec QGIS, deux fichiers de projection différents sont créés. Un fichier .prj contenant un nombre limité de paramètres, compatible avec les logiciels ESRI et un fichier .qpj, fournissant la totalité des paramètres du SCR utilisé. Chaque fois que QGIS trouve un fichier .qpj, il l’utilisera à la place du fichier .prj.

Charger une couche MapInfo

mActionAddNonDbLayer Pour charger une couche MapInfo, cliquez sur le bouton mActionAddNonDbLayer Ajouter une couche vecteur de la barre d’outils ou tapez Ctrl+Shift+V, changez le type de Filtre selectstring: pour ‘MapInfo [OGR]’ et sélectionnez la couche .MapInfo que vous souhaitez charger.

Charger une couverture ArcInfo binaire

mActionAddNonDbLayer Pour charger une couverture binaire ArcInfo, cliquez sur le bouton mActionAddNonDbLayer Ajouter une couche vecteur ou tapez Ctrl+Shift+V pour ouvrir la fenêtre correspondante. Sélectionnez radiobuttonon Répertoire puis ‘Arc/Info Binary Coverage’ dans le Filtre selectstring de type. Naviguez jusqu’au dossier contenant vos fichiers puis choisissez-les.

De manière similaire vous pouvez directement charger les fichiers vecteurs au format UK National Transfer ainsi que le format TIGER brut de l’US Census Bureau.

Couches PostGIS

Les couches PostGIS sont stockées dans une base de données PostgreSQL. Les avantages de PostGIS sont les possibilités d’indexation spatiale, de filtre et de requête qu’il fournit. En utilisant PostGIS, les fonctions vecteur telles que la sélection ou l’identification fonctionnent avec plus d’exactitude qu’avec les couches OGR dans QGIS.

Créer une connexion enregistrée

mActionAddLayer La première fois que vous utilisez des données PostGIS vous devez créer une connexion vers la base PostgreSQL qui contient les données. Cliquez tout d’abord sur le bouton mActionAddLayer Ajouter une couche PostGIS de la barre d’outils ou sélectionnez l’option mActionAddLayer Ajouter une couche PostGIS... depuis le menu Couche ou tapez Ctrl+Shift+D. Vous pouvez aussi ouvrir la fenêtre Ajouter une couche vecteur et sélectionnez radiobuttonon Base de données. La fenêtre Ajouter une ou plusieurs tables PostGIS apparaît. Pour accéder au gestionnaire de connexion, cliquez sur le bouton [Nouveau] pour faire apparaitre la fenêtre Créer une nouvelle connexion PostGIS. Les paramètres requis pour la connexion sont :

  • Nom : un nom pour cette connexion. Il peut être identique à Base de données

  • Service : paramètre de service à utiliser en alternative à l’hôte et le port (et potentiellement labase de données). Il peut être défini dans pg_service.conf

  • Hôte : nom pour l’hôte de la base de données. Il doit s’agir d’un nom existant, car il sera utilisé pour ouvrir une connexion Telnet ou interroger l’hôte. Si la base de données est sur le même ordinateur que QGIS, mettez simplement ‘localhost’.

  • Port : numéro de port que le serveur de base de données PostgreSQL écoute. Le port par défaut est 5432.

  • Base de données : nom de la base de données.

  • Mode SSL : comment sera négociée la connexion SSL avec le serveur. Notez qu’une importante accélération du rendu des couches PostGIS peut être obtenue en désactivant le SSL dans l’éditeur de connexion. Les options suivantes sont proposées :

    • désactiver : essayer une connexion SSL non cryptée uniquement

    • permettre : essayer une connexion non-SSL. Si cela échoue, essayer une connexion SSL

    • préferer (par défaut) : essayer une connexion SSL. Si cela échoue une connexion non-SSL

    • requiert: essayer uniquement une connexion SSL.

  • Nom d’utilisateur : nom d’utilisateur utilisé pour se connecter à la base de données.

  • Mot de passe : mot de passe associé au Nom d’utilisateur pour se connecter à la base de données.

Vous pouvez également activer les options suivantes :

  • checkbox Sauvegarder le Nom d’utilisateur

  • checkbox Sauvegarder le mot de passe

  • checkbox Uniquement regarder la table geometry_columns

  • checkbox Uniquement regarder dans le schéma ‘public’

  • checkbox Lister aussi les tables sans géométrie

  • checkbox Utiliser la table des métadonnées estimées

Une fois que tous les paramètres et les options sont définis, vous pouvez tester la connexion en cliquant sur le bouton [Test de connexion].

Astuce

Paramètres utilisateur de QGIS et Sécurité

Selon le système d’exploitation que vous utilisez, stocker les mots de passe dans vos paramètres QGIS peut présenter un risque vis-à-vis de la sécurité. Voici comment les paramètres QGIS sont stockés :

  • nix, les paramètres sont stockés dans votre répertoire home dans .qgis/.

  • win, les paramètres sont stockés dans la base de registre.

Charger une couche PostGIS

mActionAddLayer Une fois une ou plusieurs connexions définies, vous pouvez charger des couches de la base de données PostgreSQL. Bien sûr, cela nécessite d’avoir des données dans PostgreSQL. Référez-vous à la Section Importer des données dans PostgreSQL pour plus de détails concernant l’importation de données dans la base de données.

Pour charger une couche PostGIS, suivez ces étapes :

  • Si la fenêtre Ajouter une ou plusieurs tables PostGIS n’est pas ouverte, cliquez sur le bouton mActionAddLayer Ajouter une couche PostGIS de la barre d’outils.

  • Choisissez la connexion dans la liste déroulante et cliquez sur [Connecter].

  • Cochez si besoin checkbox Lister aussi les tables sans géométrie

  • Utilisez si besoin des checkbox Options de recherche pour définir quelles entités charger ou utilisez le bouton [Construire une requête] pour ouvir la fenêtre Construction de requête.

  • Trouvez la ou les couches que vous souhaitez ajouter dans la liste des couches disponibles.

  • Sélectionnez-la en cliquant dessus. Vous pouvez sélectionner plusieurs couches en gardant la touche Shift enfoncée quand vous cliquez. Référez-vous à la Section Constructeur de requêtes pour plus d’informations sur l’utilisation du Constructeur de requête de PostgreSQL pour mieux définir la couche.

  • Cliquez sur le bouton [Ajouter] pour ajouter la couche à la carte.

Astuce

Couches PostGIS

Normalement, une couche PostGIS est définie par une entrée dans la table geometry_columns. Depuis la version 0.9.0, QGIS peut charger des couches qui n’ont pas d’entrée dans la table geometry_columns. Ceci concerne aussi bien les tables que les vues. Définir une vue spatiale fournit un moyen puissant pour visualiser vos données. Référez-vous à votre manuel PostgreSQL pour plus d’informations sur la création des vues.

Quelques éléments de détail à propos des couches PostgreSQL

Cette section fournit quelques détails sur la manière dont QGIS accède aux couches PostgreSQL. La plupart du temps, QGIS devrait simplement fournir une liste de tables de base de données qui peuvent être chargées et les charger à la demande. Cependant, si vous avez des problèmes pour charger une table PostgreSQL dans QGIS, les informations données ci-dessous peuvent vous aider à comprendre les messages de QGIS et vous donnez une indication sur comment changer la table ou la vue PostgreSQL pour qu’elle se charge dans QGIS.

QGIS demande que les couches PostgreSQL aient un champ pouvant être utilisé comme clé unique pour la couche. Pour les tables, cela signifie qu’elles doivent avoir une clé primaire ou un champ ayant une contrainte d’unicité. De plus, QGIS impose que cette colonne soit de type int4 (un entier de 4 octets). Alternativement la colonne ctid peut être utilisée comme clé primaire. Si une table ne respecte pas ces conditions, le champ oid sera utilisé à la place. Les performances seront améliorées si le champ est indexé (notez que les clés primaires sont automatiquement indexées dans PostgreSQL).

Si la couche PostgreSQL est une vue, les mêmes conditions s’appliquent, mais elles n’ont pas de clé primaire ou de champ ayant une contrainte d’unicité. Dans ce cas, QGIS essayera de trouver un champ de la vue issu d’un champ une table qui convienne en parcourant la définition SQL de la vue. Cependant, il y a certains aspects du SQL que QGIS ignore tel que l’utilisation d’alias ou de colonnes générées par des fonctions SQL.

Si aucune colonne correcte n’est trouvée, QGIS ne chargera pas la couche. Si cela arrive, la solution consiste à modifier la vue de telle sorte qu’elle inclut un champ qui convienne (de type int4 et ayant soit une clé primaire soit une contrainte d’unicité, de préférence indexée).

Importer des données dans PostgreSQL

De multiples méthodes existent pour importer des données dans PostgreSQL telle que l’extension SPIT ou les outils en lignes de commande shp2pgsql ou ogr2ogr.

Extension SPIT

QGIS est distribué avec une extension nommée spiticon SPIT (Shapefile to PostGIS Import Tool). SPIT peut être utilisé pour charger plusieurs shapefiles en une fois et inclut la gestion des schémas. Voir section Extension SPIT pour plus d’informations.

shp2pgsql

PostGIS est distribué avec l’outil shp2pgsql qui permet d’importer des shapefiles dans une base de données PostGIS. Par exemple pour importer le shapefile lakes.shp dans la base de données PostgreSQL nommée gis_data, utilisez la commande suivante :

shp2pgsql -s 2964 lakes.shp lakes_new | psql gis_data

Ceci crée une nouvelle couche nommée lakes_new dans la base de données gis_data. La nouvelle couche aura l’identifiant de référence spatiale (SRID) 2964. Référez-vous à la section Utiliser les projections pour plus d’informations sur les systèmes de référence spatiale et les projections.

Astuce

Exporter des jeux de données depuis PostGIS

De la même manière que l’outil d’importation shp2pgsql, il y a également un outil d’exportation de jeux de données PostGIS en shapefile : pgsql2shp. Cet outil est inclus dans la distribution de PostGIS.

ogr2ogr

En plus de shp2pgsql et SPIT, un autre outil est fourni pour importer des données géographiques dans PostGIS : ogr2ogr. Il est inclus dans GDAL.

Pour importer un shapefile dans PostGIS, lancez la commande suivante :

ogr2ogr -f "PostgreSQL" PG:"dbname=postgis host=myhost.de user=postgres \
password=topsecret" alaska.shp

Ceci va importer le shapefile alaska.shp dans la base de données PostGIS nommée postgis en utilisant l’utilisateur postgres avec le mot de passe topsecret sur l’hôte myhost.de.

Notez qu’OGR doit être compilé avec PostgreSQL pour gérer PostGIS. Vous pouvez vérifier en tapant

ogrinfo --formats | grep -i post

Si vous préférez utiliser la commande PostgreSQL COPY au lieu de la méthode par défaut, INSERT INTO, vous pouvez exporter la variable d’environnement suivante (au moins sur nix et osx) :

export PG_USE_COPY=YES

ogr2ogr ne crée pas d’index spatial comme le fait shp2pgsl. Vous devez effectuer une étape supplémentaire et le créer manuellement après en utilisant la commande SQL classique CREATE INDEX (comme cela est détaillé dans la section suivante Améliorer les performances).

Améliorer les performances

Récupérer des entités depuis une base de données PostgreSQL peut être long, surtout par un réseau. Vous pouvez améliorer les performances de dessin de couches PostgreSQL en vous assurant qu’un index spatial PostGIS existe pour chaque couche dans la base de données. PostGIS gère la création d’un index index GiST (Generalized Search Tree) pour accélérer les recherches spatiales sur les données (les informations sur l’index GiST sont issues de la documentation de PostGIS disponible sur http://postgis.refractions.net).

La syntaxe pour créer un index GiST est la suivante :

CREATE INDEX [indexname] ON [tablename]
  USING GIST ( [geometryfield] GIST_GEOMETRY_OPS );

Notez que pour de grandes tables, créer un index peut prendre du temps. Une fois cet index créé, vous devriez faire une VACUUM ANALYZE. Référez-vous à la documentation de PostGIS (POSTGIS-PROJECT Bibliographie) pour plus d’informations.

Voici un exemple de création d’un index GiST :

[email protected]:~/current$ psql gis_data
Welcome to psql 8.3.0, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

gis_data=# CREATE INDEX sidx_alaska_lakes ON alaska_lakes
gis_data-# USING GIST (the_geom GIST_GEOMETRY_OPS);
CREATE INDEX
gis_data=# VACUUM ANALYZE alaska_lakes;
VACUUM
gis_data=# \q
[email protected]:~/current$

Couches vectorielles dépassants les 180° de longitude

Beaucoup de logiciels de SIG ne traitent pas les cartes vecteurs ayant un système de référence géographique dépassant la ligne des 180 degrés de longitude (http://postgis.refractions.net/documentation/manual-1.4/ST_Shift_Longitude.html). Il en résulte que sous QGIS on verra deux emplacements distincts et éloignés qui devraient être proches l’un de l’autre. Sur Figure_vector_4 le petit point tout à gauche de la carte (Chatham Island) devrait être dans la grille, à droite des îles principales de Nouvelle-Zélande.

Figure Vector 4:

../../../_images/vectorNotWrapping.png

Map in lat/lon crossing the 180° longitude line nix

Une solution est de transformer les valeurs longitudinales en utilisant PostGIS et la fonction ST_Shift_Longitude. Cette fonction lit chaque point/sommet de chacune des entités dans une géométrie et si la coordonnée de longitude est inférieure à 0° elle lui ajoute 360°. Le résultat est une version 0° - 360° des données sur une carte centrée à 180°.

Figure Vector 5:

../../../_images/vectorWrapping.png

Crossing 180° longitude applying the ST_Shift_Longitude function nix

Usage

  • Importer des données vers PostGIS (Importer des données dans PostgreSQL) en utilisant par exemple l’extension de gestion de PostGIS (PostGIS Manager) ou l’extension SPIT

  • Utiliser l’interface en ligne de commande PostGIS pour exécuter la commande suivante (c’est un exemple où “TABLE” est bien le nom de votre table PostGIS)

    gis_data=# update TABLE set the_geom=ST_Shift_Longitude(the_geom);

  • Si tout ce passe bien, vous devriez recevoir une confirmation sur le nombre d’entités qui ont été mises à jour, puis vous pouvez charger la carte et voir la différence (Figure_vector_5)

Couches SpatiaLite

mActionAddSpatiaLiteLayer La première fois que vous chargerez une base Spatialite, commencez par cliquer sur le bouton mActionAddSpatiaLiteLayer Ajouter une couche SpatiaLite ou sélectionner l’option mActionAddSpatiaLiteLayer Ajouter une couche SpatiaLite... depuis le menu Couche ou en tapant Ctrl+Shift+L. Ceci fait apparaitre une fenêtre qui vous permet soit de vous connecter à une baseSpatiaLite déjà connue de QGIS, que vous pouvez choisir dans une liste déroulante, ou définissant une nouvelle connexion. Pour se faire, cliquez sur le bouton [Nouveau] et utilisez le navigateur de fichier pour pointer votre base SpatiaLite qui se termine par une extension .sqlite.

Si vous souhaitez sauvegarder une couche vecteur au format SpatiaLite, vous pouvez le faire par un clic-droit sur la couche dans la légende. Cliquez ensuite sur Sauvegarder sous..., définissez le nom du fichier et le SCR en sortie, choisisez ‘SpatiaLite’ comme format. Vous pouvez également sélctionner ‘SQLite’ comme format et ajouter SPATIALITE=YES comme source de données dans les options OGR de création. OGR crée alors une base de données SpatiaLite. Voir également http://www.gdal.org/ogr/drv_sqlite.html.

QGIS gère les vues SpatiaLite éditables.

Créer une nouvelle couche SpatiaLite

Si vous souhaitez créer une nouvelle couche SpatiaLite, référez-vous à la section Créer une nouvelle couche SpatiaLite.

Astuce

Extensions de gestion de données SpatiaLite

Pour gérer des données SpatiaLite, vous pouvez également utiliser diverses extensions Python : QSpatiaLite, SpatiaLite Manager ou DB Manager (extension principale recommandée). Elles peuvent toutes être téléchargées et installées via le Gestionnaire d’extensions.

Couches MSSQL Spatial

mActionAddMssqlLayer QGIS permet de gérer nativement MS SQL 2008. Le bouton mActionAddMssqlLayer Ajouter une couche MSSQL fait partie de la nouvelle barre d’outils et les bases MS SQL sont accessibles depuis l’explorateur QGIS permettant d’ajouter des couches dans QGIS par un glisser-déposer.