débrouillardisemalgré l’hétérogénéité des systèmes (versions différentes de Windows, absence de droits administrateur, serveur PostgreSQL local ou distant...)
shp2pgsql-gui est un utilitaire fourni avec la version Windows de Postgis . C’est la version graphique du shp2pgsql en ligne de commande.
Par défaut, il se trouve au chemin C:\Program Files\PostgreSQL\9.3\bin\postgisgui\shp2pgsql-gui.exe mais il peut éventuellement être ailleurs en fonction de l’installation de PostGIS. S’il n’est pas installé, il peut être récupéré en téléchargeant PostGIS pour Windows . Il n’est pas nécessaire d’avoir les droits d’administrateur pour se servir de shp2pgsql-gui (à condition de choisir le ZIP sans le -setup ).
ogr2gui est une interface graphique pour ogr2ogr , un outil puissant qui permet de convertir d’un format vecteur à l’autre, qu’il s’agisse de fichiers, de bases de données, ou d’assemblages plus dynamiques.
Cela signifie qu’on peut importer en base moult formats de fichiers , ainsi que les exporter depuis la base, ou même copier d’une base à l’autre.
ogr2gui fournit une interface pratique mais cependant simpliste en comparaison de ce qui est possible avec ogr2ogr
, mais permet de spécifier toute option souhaitée dans la zone de texte Options
(la ligne de commande est toujours ce qu’il y a de plus puissant).
L’utilitaire est téléchargeable sur le site officiel : http://www.ogr2gui.ca/
Il suffit d’inverser Source et Target pour copier les données depuis la base PostGIS vers un shapefile au lieu du contraire.
Comme l’import, on peut exporter dans moult formats de fichiers et même d’une base de données à une autre.
Se référer à la documentation de ogr2ogr pour les options avancées.
(cette méthode a déjà été expérimentée dans le module Travailler sur la France
)
QGIS est un autre ogr2gui , car il utilise lui aussi OGR , sans passer par ogr2ogr mais en exploitant directement les fonctions de la bibliothèque OGR . Il est plus évolué que ogr2gui , donc à utiliser de préférence lorsqu’on peut disposer de QGIS.
Exécuter
shp2pgsql ne se connecte pas à la base, il ne fait que générer le SQL qu’on pourra ensuite exécuter dans la base, en faisant ou bien un pipe vers la commande psql :
... qui est le plus simple et le plus élégant (quand on dispose de psql ), sinon en enregistrant la sortie dans un fichier :
... avant d’exécuter ce fichier, avec pgAdmin par exemple.
Dans cet exemple :
... la table data_table est exportée en shapefile , en produisant les 4 fichiers du Shapefile :
Nous allons maintenant importer des données de démographie carroyées sur le territoire, dont il va falloir reconstituer les géométries (les carreaux , polygones carrés).
Une fois la table importée dans PostGIS, on va reconstituer, non pas seulement le point géométrique, mais le polygone carré. Il faut tout d’abord ajouter le champ geom à la table r_rfl09_laea1000 .
Vérifier la couche avec QGIS :
y penseralors que LibreOffice , lui, propose ces options dès l’ouverture d’un fichier CSV. Pour plus d’informations, consulter la la documentation Microsoft sur les CSV
Dans le tableur, les 3 premières feuilles de calcul (Dataset , Indicators et Sources ) contienent des méta-données permettant de remonter à la source, savoir qui contacter en cas de besoin, etc.
Dataà copier-coller
_: Unit code → unit_code , Object type → object_type , etc.
propreavec une seule ligne d’en-têtes de colonnes puis les données)
rien, afin que ces valeurs soit interprétées comme des NULL par PostgreSQL.
Pour importer un contenu CSV dans PostgreSQL, il faut que la table et ses colonnes existent au préalable, ce qui peut être fait soit avec CREATE TABLE , soit graphiquement avec pgAdmin (ou d’autres outils).
L’enjeu est de déterminer le bon type à appliquer à chaque colonne, parmi les 3 principaux : integer (nombre entier), real (nombre décimal) et character varying (texte). S’il n’y a pas de méta-données sur le CSV, il faut les déterminer, soit par inspection des données, soit par itération d’essai/erreur :
Tant que l’import réussit, il est possible (et fréquent) de retravailler les colonnes par la suite, comme par exemple, de générer une colonne integer à partir d’une colonne texte.
En lisant le content CSV suivant :
id,name,evol,count 1,toto,43.3,5 2,tata,11,8 3,titi,8.1,0
On peut en déduire la table à créer :
CREATE TABLE espon_labour_market_sector
(
id integer,
name character varying,
evol real,
count integer
)
COPY nom_de_la_table FROM ’/chemin/du/fichier.csv’ CSV HEADER
S’assurer que le CSV est dans un répertoire local accessible par le serveur PostgreSQL, et récupérer le chemin absolu (sous Windows, il serait de la forme C:\dossier\...\espon-labour-market-sectors.csv ).
Pour reprendre l’exemple précédent, on taperait ceci dans psql :
\copy nom_de_la_table FROM ’/chemin/du/fichier.csv’ CSV HEADER
géolocalisés, qui sont des CSV
normauxqu’on importe en base mais à partir desquels on va pouvoir générer une colonne géométrique en utilisant des champs X et Y .
Cette méthode peut s’appliquer lorsque le volume de données n’est pas trop grand : jusqu’à quelques dizaines de milliers d’enregistrements, voire davantage en fonction de la mémoire vive du poste de travail.
SELECT * FROM etablissements_culturels
toutsélectionner (tout le blanc) de la même façon
De la même façon qu’avec COPY FROM, l’instruction COPY TO permet d’exporter une table vers un fichier CSV, avec la syntaxe de base suivante :
COPY nom_de_la_table TO ’/chemin/du/fichier.csv’ CSV HEADER
La variante \copy , comme on l’a vu précédemment avec \copy nom_de_la_table FROM ... , fonctionne aussi pour l’export d’une table dans un fichier CSV local au client :
\copy nom_de_la_table to ’/chemin/du/fichier/local.csv’ CSV HEADER
Le SIG QGIS permet d’exploiter directement les CSV avec une interface riche en options, qui accepte non seulement des points en colonnes X et Y , mais aussi du WKT. Cet écran est disponible sous le menu Couche → Ajouter une couche de texte délimité .
À partir de là, on peut importer la couche dans la base PostGIS :