- Sujet précédent - Import des données IGN au format Posgres - Sujet suivant
#1 Fri 08 December 2017 11:21
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Import des données IGN au format Posgres
Bonjour,
Je me suis demandé récemment comment importer les données téléchargeables sur le site de l'IGN, au format Postgres.
N'ayant pas réussi du premier coup, je vous partage ma solution, qui n'est pas nécessairement la meilleure. Je suis donc ouvert à toute remarque/critique constructive.
Contexte : Les fichiers téléchargés contiennent la création de la table, de l'index géographique, puis une copie brute des données.
Principaux problèmes rencontrés :
1- comment importer les données (ne fonctionne pas si vous ouvrez le fichier sous pgAdmin par exemple) ?
2- comment préciser le schéma dans lequel importer les données ?
3- comment importer plusieurs fichiers d'un coup ?
1- Importer les données
Les fichiers doivent être importés via la commande psql, en précisant le fichier postgreSQL de l'IGN comme fichier de commande.
Exemple de commande :
Code:
psql -h nom_serveur -p port -U utilisateur -d base_de_donnees -f BATI_REMARQUABLE.sql
En prenant soin de donner les bonnes valeurs aux paramètres nom_serveur, port, utilisateur et base_de_donnees.
2- Préciser le schéma
3- importer plusieurs fichiers d'un coup
Pour pouvoir préciser le schéma et importer plusieurs fichiers d'un coup, j'ai créé un fichier import.sql dans lequel je précise le schéma et les fichiers à importer :
Code:
set search_path to bdtopo, public ; \i BATI_REMARQUABLE.sql \i BATI_INDUSTRIEL.sql \i BATI_INDIFFERENCIE.sql
La commande set search_path to permet de préciser l’ordre dans lequel postgres doit chercher les noms de tables (ou dans notre cas l’ordre dans quel schéma il doit créer une table).
La commande \i est une commande pour psql.exe qui lui précise d’exécuter les commandes SQL depuis un fichier, précisé à la suite de la commande.
Il suffit alors de lancer la commande psql précédente, en précisant le fichier import.sql au lieu du fichier SQL de l'IGN.
En espérant que ça puisse servir à d'autres !
Hors ligne
#3 Mon 11 December 2017 09:32
- fbecir
- Participant assidu
- Lieu: Saint-Mandé
- Date d'inscription: 16 Sep 2008
- Messages: 516
Re: Import des données IGN au format Posgres
Bonjour
Merci, c'est effectivement la bonne méthode pour importer les données.
Merci aussi de nous alerter que ce format n'est pas bien documenté ... une doc (ou un tuto) sera rédigée dès que possible.
Cordialement
Hors ligne
#4 Mon 11 December 2017 11:04
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: Import des données IGN au format Posgres
Bonjour
Merci, c'est effectivement la bonne méthode pour importer les données.
Merci aussi de nous alerter que ce format n'est pas bien documenté ... une doc (ou un tuto) sera rédigée dès que possible.
Cordialement
Merci pour ce retour, qui atteste que vous êtes conscients de ce manque d'infos.
N'hésitez pas à envoyer une première version à relire de la doc/du tuto, si vous souhaitez un retour d'un "œil nouveau" sur le sujet.
Hors ligne
#5 Tue 12 December 2017 08:01
- Charly BUFFET
- Juste Inscrit !
- Date d'inscription: 8 Mar 2016
- Messages: 1
Re: Import des données IGN au format Posgres
Bonjour,
N'hésitez pas à envoyer une première version à relire de la doc/du tuto, si vous souhaitez un retour d'un "œil nouveau" sur le sujet.
Une version beta pour un grand bêta comme moi permettrait effectivement d'apprécier l'efficience du tutoriel ;-)
Hors ligne
#6 Thu 11 January 2018 16:00
- gwen.petit
- Participant occasionnel
- Lieu: Vannes
- Date d'inscription: 7 Jul 2006
- Messages: 33
Re: Import des données IGN au format Posgres
Bonjour et merci pour votre tuto qui est très utile.
J'aurai quelques questions :
- Je souhaiterai mettre dans une seule et même table des couches provenant de différents départements (afin de faire une table nationale par couche de la BD Topo). Avez-vous déjà eu à faire à ce genre de traitement ? Pensez-vous que votre script puisse être adapté en conséquence sachant que le premier import dois bien créer la table, mais les suivants doivent "juste" alimenter la table déjà créée.
- Je pense ne pas avoir compris l'intérêt de "bdtopo" et "public" dans votre instruction "set search_path to bdtopo, public ;". Est-ce que ici "bdtopo" est le nom d'un schéma dans lequel nous souhaiterions prioritairement importer les données ?
- Il est probable que ma configuration de PostGreSQL/PostGIS comporte un soucis, mais lorsque je demande à importer les données dans un schéma autre que "public" (par exemple "ign"), j'ai le message d'erreur suivant dans le terminal:
Code:
psql:/home/.../SURFACE_ROUTE.sql:8: ERREUR: la fonction addgeometrycolumn(unknown, unknown, unknown, unknown, unknown, integer) n'existe pas LIGNE 1 : select addgeometrycolumn('','surface_route','the_geom','2154... ^ ASTUCE : Aucune fonction ne correspond au nom donné et aux types d'arguments.
Alors que la fonction "addgeometrycolumn" column est bien installée avec PostGIS. Si je lance le script en spécifiant le schéma "public" comme destination alors il n'y a pas de soucis.
Merci d'avance pour votre retour.
Cordialement,
Gwendall
Hors ligne
#7 Thu 11 January 2018 16:33
Re: Import des données IGN au format Posgres
Bonjour,
Est-ce que ici "bdtopo" est le nom d'un schéma dans lequel nous souhaiterions prioritairement importer les données ?
Oui et public **doit** être présent dans le search_path sinon pgsql ne trouvera pas les fonctions postgis (conf. ton message d'erreur).
search_path liste les schémas dans lequel pgsql cherchera les donnés (tables, séquences, vues, fonctions) quand on lancera des requêtes. Par défaut, si aucun schéma n'est définie lors de l'import ou création de données, il utilisera la première de la liste.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#8 Thu 11 January 2018 16:45
- gwen.petit
- Participant occasionnel
- Lieu: Vannes
- Date d'inscription: 7 Jul 2006
- Messages: 33
Re: Import des données IGN au format Posgres
Merci Yves, ça fonctionne mieux du coup ;-)
Il me reste à résoudre mon soucis de mise en base de plusieurs départements et tout fonctionnera parfaitement.
Cordialement,
Gwendall
Hors ligne
#9 Thu 11 January 2018 16:53
Re: Import des données IGN au format Posgres
Tu as un lien vers les fichiers SQL ou mieux les premières lignes : Création de la table et première ligne de l'insertion des données ?
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#10 Thu 11 January 2018 17:10
- gwen.petit
- Participant occasionnel
- Lieu: Vannes
- Date d'inscription: 7 Jul 2006
- Messages: 33
Re: Import des données IGN au format Posgres
Oui. Il s'agit des dump postgresql de la BD Topo (licence Recherche je précise). Disons que j'ai n départements et que je souhaite assembler toutes les couches dans des tables nationales.
Si dessous un exemple avec les premières lignes du fichier "SURFACE_ROUTE.sql" sur le département 22
Code:
SET NAMES 'UTF8'; -- -- start transaction; -- "Surface de route. Partie de la chaussée d'une route caractérisée par une largeur exceptionnelle": -- create table SURFACE_ROUTE (gid SERIAL not null, ID varchar(24) not null, PREC_PLANI decimal(6,1) not null, PREC_ALTI decimal(7,1) not null, NATURE varchar(18) not null, Z_MOYEN float, constraint SURFACE_ROUTE_pkey primary key (gid)); select addgeometrycolumn('','surface_route','the_geom','2154','MULTIPOLYGON',3); create index SURFACE_ROUTE_geoidx on SURFACE_ROUTE using gist (the_geom); -- commit; -- -- SURFACE_ROUTE start transaction; copy SURFACE_ROUTE (gid, ID , PREC_PLANI , PREC_ALTI , NATURE , Z_MOYEN, the_geom) from STDIN ; 1 SURFROUT0000000076599958 1.5 1.0 Parking 17.61 01060000A06A080000010...41000000E082395A41CDC 2 SURFROUT0000000076599960 1.5 1.0 Parking 10.39 01060000A06A080000010...4900F41CDCCCCEC9D395A 3 SURFROUT0000000076599957 1.5 1.0 Parking 72.34 01060000A06A080000010...2CF7395A41000000000020 ... \. commit; --
Étant donné que j'ai beaucoup de fichiers .sql à insérer j'essaye de trouver une méthode scriptable me permettant d'éviter l'édition de tous les fichiers pour remplacer les CREATE TABLE par des INSERT ou quelques chose du genre (sachant qu'au passage nombre de fichiers .sql sont trop gros pour être édités à la main).
Merci d'avance pour votre aide.
Cordialement,
Gwendall
Hors ligne
#11 Fri 12 January 2018 09:48
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3195
- Site web
Re: Import des données IGN au format Posgres
Bonjour,
L'intégration de données est parfois plus complexe qu'il n'y paraît, et il est beaucoup plus facile de travailler avec SQL et des tables qu'avec des fichiers texte.
Processus d'intégration de donnée à partir d'un fichier texte:
Intégration du fichier dans une table temporaire BD postgres/postgis. Exemple : intégration du département 22 dans la table monschema.temp_bdtopo22.
On résout alors les problématiques suivantes : Encoding, caractères spéciaux, espaces ...géométries foireuses
Ensuite on travaille directement en SQL pour intégrer les différentes tables temporaires dans une table définitive.
Comme cela on sépare bien les choses, les étapes et quand une partie foire on peut l'examiner sans effet papillon (modifier une partie du code avec des effets sur des autres parties du prg).
Donc votre script vous l’exécutez pour chaque département, puis vous assemblez le tout avec une requête sql.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#12 Fri 12 January 2018 12:09
- gwen.petit
- Participant occasionnel
- Lieu: Vannes
- Date d'inscription: 7 Jul 2006
- Messages: 33
Re: Import des données IGN au format Posgres
Merci Christophe,
Je pense effectivement opter pour cette piste en deux étapes.
Je reviendrai vers vous si jamais j'aboutis à quelque chose d'exploitable ;-)
Cordialement,
Gwendall
Hors ligne
#13 Tue 16 January 2018 11:22
- fbecir
- Participant assidu
- Lieu: Saint-Mandé
- Date d'inscription: 16 Sep 2008
- Messages: 516
Re: Import des données IGN au format Posgres
Bonjour
Comme promis, un tutoriel vient d'être mis en ligne pour l'import des données dans PostgreSQL :
professionnels.ign.fr/doc/Tutoriel_impo … sql_v1.pdf
Un grand merci à Jérémie, qui nous a :
1. alerté sur le manque de documentation,
2. donné une bonne base pour rédiger le tutoriel
3. relu, corrigé et commenté le tutoriel avant publication
Cordialement
Hors ligne
#14 Wed 17 January 2018 09:10
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3195
- Site web
Re: Import des données IGN au format Posgres
Bonjour,
C'est très bien mais une petite remarque :
Conseiller PGAdminIII oui supérieur non, tout le monde s'arrache les cheveux avec PGAdmin4 sous windows.
Perso je conseille PGadminIII de BIGSQL.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#15 Fri 02 February 2018 08:29
- BERNEDE
- Juste Inscrit !
- Date d'inscription: 30 Jan 2018
- Messages: 1
Re: Import des données IGN au format Posgres
Merci beaucoup pour tous vos conseils !
Grâce à vous j'ai pu importer mes données sans difficultés.
Hors ligne
#16 Thu 22 February 2018 17:42
- Theos2000
- Participant assidu
- Date d'inscription: 15 Jun 2015
- Messages: 221
Re: Import des données IGN au format Posgres
Bonjour,
J'ai récemment acquis les données IGN en format .sql de plusieurs départements (au moins ça marche :-) ) en vue de les importer et la je commence a être embêter :
1er j'ouvre une ligne de commande dans le dossier bin de mon postgre je suis la commande " psql -h nom_serveur -p port -U utilisateur -d base_de_donnees -f chemin d'accés.import.sql "
Mon fichier import est situé à la racine dans le dossier ign ( 1 sous dossier par département) et se définit comme cela
set search_path to ign, public ;
\i SURFACE_ROUTE.sql
\i AIRE_TRIAGE.sql
\i B_VOIES_FERREES_ET_AUTRES.sql
\i TRONCON_VOIE_FERREE.sql
mais il me dit qu'il ne trouve pas le fichier ou que la permission est refusée....
Ayant beau fait chauffer les quelques neurones qui me restent je ne comprend pas pourquoi dans le tutoriel de l'IGN on alterne entre psql ou psql exe / comment doit être structuré le fichier import.sql (est ce que le i/ suffit ou il faut mettre le i/+chemin d'accés)
Si vous avez des pistes...la je suis hors piste :-)
Hors ligne
#17 Fri 23 February 2018 08:42
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: Import des données IGN au format Posgres
1er j'ouvre une ligne de commande dans le dossier bin de mon postgre je suis la commande " psql -h nom_serveur -p port -U utilisateur -d base_de_donnees -f chemin d'accés.import.sql "
Mon fichier import est situé à la racine dans le dossier ign ( 1 sous dossier par département) et se définit comme cela
set search_path to ign, public ;
\i SURFACE_ROUTE.sql
\i AIRE_TRIAGE.sql
\i B_VOIES_FERREES_ET_AUTRES.sql
\i TRONCON_VOIE_FERREE.sql
mais il me dit qu'il ne trouve pas le fichier ou que la permission est refusée....
Il faut soit
1- indiquer le chemin complet des fichiers à importer via la commande \i (chemin de ton dossier ign)
2- lancer la commande psql depuis ton dossier ign, avec tous les fichiers à importer au même niveau que ton fichier import.sql
Pour la solution 2, tu peux soit :
a- entrer le chemin complet de la commande psql (exemple : C:\"Program Files"\PostgreSQL\10\bin\psql.exe)
b- ajouter le chemin où se trouve la commande psql dans ton PATH (variable d'environnement système), comme indiqué dans les remarques du paragraphe 2.2 page 6 du document tutoriel d'import postgres dispo sur le site de l'IGN :
Remarque : Le chemin de psql.exe dépend de l’installation de PostgreSQL.
Remarque 2 : il est utile d’ajouter le chemin du dossier contenant psql.exe dans la variable d’environnement PATH pour éviter d’avoir à spécifier son chemin complet à chaque fois. Sous Windows, dans le panneau de configuration, rechercher ou ouvrir « Modifier les variables d’environnement système » puis cliquer sur le bouton Variables d’environnement, sélectionner Path et cliquer sur Modifier… Ajouter à la fin des paramètres le chemin du répertoire contenant psql.exe, en prenant garde de bien mettre un point-virgule pour le séparer du précédent répertoire.
Ayant beau fait chauffer les quelques neurones qui me restent je ne comprend pas pourquoi dans le tutoriel de l'IGN on alterne entre psql ou psql exe
En fait le .exe est optionnel, Windows reconnaissant qu'il s'agit d'un exécutable même si .exe n'est pas précisé.
Hors ligne
#18 Mon 26 February 2018 06:23
- Theos2000
- Participant assidu
- Date d'inscription: 15 Jun 2015
- Messages: 221
Re: Import des données IGN au format Posgres
Merci pour ces éléments, c'est tout de suite plus compréhensible....et faisable. Peu être a intégrer dans une version 1.1 du tutoriel de l IGN. Merci
Hors ligne
#19 Wed 07 March 2018 16:59
- Theos2000
- Participant assidu
- Date d'inscription: 15 Jun 2015
- Messages: 221
Re: Import des données IGN au format Posgres
Bonjour,
Après de multiples tentatives et ayant suivi les remarques de p.jeremie je n'arrive pas a intégrer mes données (permission refusée). Est ce que cela est possible de m'envoyer quelques capture d'écran en MP, afin d'avoir une idée plus claire de la structure du fichier d'import.sql et de la commande a appelle du bin.
Merci
Hors ligne
#20 Wed 07 March 2018 17:16
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: Import des données IGN au format Posgres
Bonjour,
Après de multiples tentatives et ayant suivi les remarques de p.jeremie je n'arrive pas a intégrer mes données (permission refusée). Est ce que cela est possible de m'envoyer quelques capture d'écran en MP, afin d'avoir une idée plus claire de la structure du fichier d'import.sql et de la commande a appelle du bin.
Merci
Bonjour,
Peux-tu dans un premier temps essayer d'importer un seul fichier .sql de l'IGN ?
par exemple :
Code:
psql -h nom_serveur -p port -U utilisateur -d base_de_donnees -f BATI_REMARQUABLE.sql
Si ça ne fonctionne pas non plus, peux-tu envoyer une capture d'écran de ta console ?
Note : comme le schéma n'est pas précisé, les données seront importées dans le schéma public par défaut.
Hors ligne
#21 Thu 08 March 2018 03:46
- Theos2000
- Participant assidu
- Date d'inscription: 15 Jun 2015
- Messages: 221
Re: Import des données IGN au format Posgres
Cela fonctionne par ce biais et effectivement ça va dans le public mais j'imagine qu'il y a une commande pour spécifier un schéma particulier. Après au regard du nombre de fichiers c'est la commande par lot qui est vraiment intéressante.
Dernière modification par Theos2000 (Thu 08 March 2018 03:57)
Hors ligne
#22 Thu 08 March 2018 14:04
Re: Import des données IGN au format Posgres
Bonjour,
Yves a déjà donné la solution dans son post du 11 janvier
Jean-Marie
Azimut
Hors ligne
#23 Thu 08 March 2018 20:49
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: Import des données IGN au format Posgres
Cela fonctionne par ce biais et effectivement ça va dans le public mais j'imagine qu'il y a une commande pour spécifier un schéma particulier. Après au regard du nombre de fichiers c'est la commande par lot qui est vraiment intéressante.
Je te conseille d'y aller petit à petit pour voir à quel moment ça ne fonctionne pas. En deux temps :
1 - Essayer l'import de plusieurs fichiers sans préciser le schéma, avec un fichier import.sql avec le contenu suivant :
Code:
\i BATI_REMARQUABLE.sql \i BATI_INDUSTRIEL.sql \i BATI_INDIFFERENCIE.sql
Et lancer la commande suivante :
Code:
psql -h nom_serveur -p port -U utilisateur -d base_de_donnees -f import.sql
2- Essayer en précisant le schéma dans le fichier import.sql :
Code:
set search_path to bdtopo, public ; \i BATI_REMARQUABLE.sql \i BATI_INDUSTRIEL.sql \i BATI_INDIFFERENCIE.sql
Puis la commande à lancer est la même (pour être sûr de bien suivre ce que tu fais, je te conseille de supprimer toutes les tables importées au point 1).
Une fois ces tests faits, dis-nous si ça fonctionne ou pas.
Si ce n'est pas le cas, à quel moment ça ne fonctionne pas et quel est le message d'erreur et la commande ?
Hors ligne
#24 Fri 09 March 2018 09:04
- bianca
- Participant actif
- Date d'inscription: 14 Mar 2008
- Messages: 60
Re: Import des données IGN au format Posgres
Bonjour à tous,
Je rencontre le problème suivant lors de mon import :
Code:
CHEF_LIEU.sql: No Such file or directory
J'ai suivi la démarche suivante :
- Test 1 : ok avec import dans le schéma public
Code:
psql -h nom_serveur -p port -U utilisateur -d base_de_donnees -f BATI_REMARQUABLE.sql
- Test 2 : ne fonctionne pas avec le message d'erreur indiqué ci-dessus :
1- paramétrage de mon fichier d'import comme suit :
- ajout du fichier dans le répertoire où se trouve mon fichier CHEF_LIEU.SQL
- dans le fichier test sans redirection de schéma :
Code:
\i CHEF_LIEU.sql
2- ligne de commande exécutée dans ma fenêtre de commande sous windows :
Code:
"C:\Program Files (x86)\pgAdmin 4\v2\runtime\psql.exe" -h ip_serveur -p mon_port -U mon_user -d ma_abse -f "X:\DONNEES\REFERENTIEL\ign\BDTOPO\BDTOPO_2-2_TOUSTHEMES_SQL_LAMB93_D022_2017-10-02\BDTOPO\1_DONNEES_LIVRAISON_2017-11-00724\BDT_2-2_SQL_LAMB93_D022-ED172\H_ADMINISTRATIF\import.sql"
Avez-vous une idée ? Je ne comprends pas pourquoi il ne trouve pas le fichier alors que ce dernier est dans le même répertoire !
Merci pour votre aide.
Cordialement.
Bianca
Hors ligne
#25 Fri 09 March 2018 16:13
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: Import des données IGN au format Posgres
Bonjour à tous,
Je rencontre le problème suivant lors de mon import :Code:
CHEF_LIEU.sql: No Such file or directory2- ligne de commande exécutée dans ma fenêtre de commande sous windows :
Code:
"C:\Program Files (x86)\pgAdmin 4\v2\runtime\psql.exe" -h ip_serveur -p mon_port -U mon_user -d ma_abse -f "X:\DONNEES\REFERENTIEL\ign\BDTOPO\BDTOPO_2-2_TOUSTHEMES_SQL_LAMB93_D022_2017-10-02\BDTOPO\1_DONNEES_LIVRAISON_2017-11-00724\BDT_2-2_SQL_LAMB93_D022-ED172\H_ADMINISTRATIF\import.sql"Avez-vous une idée ? Je ne comprends pas pourquoi il ne trouve pas le fichier alors que ce dernier est dans le même répertoire !
Bonjour Bianca,
Tu lances ta commandes en précisant à la fois le chemin complet de psql.exe et celui de import.sql, j'en déduis donc qu'au moment où tu lances ta commande tu n'es pas dans le répertoire contenant import.sql (BDT_2-2_SQL_LAMB93_D022-ED172\H_ADMINISTRATIF).
Hors le \i CHEF_LIEU.sql présent dans ce fichier va chercher CHEF_LIEU.sql dans le répertoire courant.
Il faut donc que tu lances ta commande depuis le répertoire X:\DONNEES\REFERENTIEL\ign\BDTOPO\BDTOPO_2-2_TOUSTHEMES_SQL_LAMB93_D022_2017-10-02\BDTOPO\1_DONNEES_LIVRAISON_2017-11-00724\BDT_2-2_SQL_LAMB93_D022-ED172\H_ADMINISTRATIF
et ta commande sera alors :
Code:
"C:\Program Files (x86)\pgAdmin 4\v2\runtime\psql.exe" -h ip_serveur -p mon_port -U mon_user -d ma_abse -f "import.sql"
Pour simplifier encore la commande, je te conseille d'ajouter psql.exe à la variable d'environnement PATH (voir dans le guide IGN, paragraphe 2.2 page 6).
Hors ligne
#26 Sat 10 March 2018 21:17
- Theos2000
- Participant assidu
- Date d'inscription: 15 Jun 2015
- Messages: 221
Re: Import des données IGN au format Posgres
C'est pour moi ! En fait ce qui bloquait est que je ne lancais pas la commande dans le dossier import. Merci pour toute ces explications...et la patience !!! :-)
Hors ligne
#27 Mon 23 April 2018 13:10
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: Import des données IGN au format Posgres
Bonjour à vous,
Je suis en train d'importer le millésime 2017 de la BD Topo dans mon serveur PG.
Je suis sur 4 départements et j'aimerais automatiser le plus possible le processus.
J'ai récupéré la liste de tous les SQL des 4 départements, et créé le fichier import.sql avec les lignes de ce type :
Code:
set search_path to manche_2017, public ; ... \i "s:\CHEMIN\1_DONNEES_LIVRAISON_2017-11-00724\BDT_2-2_SQL_LAMB93_D050-ED172\E_BATI\TERRAIN_SPORT.sql" ...
Hors, à l’exécution de PSQL, j'obtiens le message d'erreur "No Such file or directory" pour chaque fichier SQL.
Je ne lance effectivement pas ma commande depuis le dossier des fichiers SQL, mais j'ai précisé leur chemin absolu.
Si je devais effectuer la commande depuis le dossier des SQL, il faudrait lancer 36 commandes (4 départements x 9 dossiers SQL). J'aimerais si possible éviter ça !
Si quelqu'un pouvait m'aider dans ce process
Merci d'avance.
Sylvain M.
Sylvain M.
Hors ligne
#28 Mon 23 April 2018 14:23
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: Import des données IGN au format Posgres
C'est bon, j'ai trouvé tout seul !
Voila comment il faut écrire les chemins :
Code:
\i 'S://CHEMIN//1_DONNEES_LIVRAISON_2017-11-00724//BDT_2-2_SQL_LAMB93_D050-ED172//E_BATI//TERRAIN_SPORT.sql'
- simple quote (') et non doubles (")
- doubles slash (//) et non antislash (\)
Ça mouline !
A+
Sylvain M.
Hors ligne
#29 Mon 23 April 2018 15:11
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: Import des données IGN au format Posgres
C'est bon, l'importation de mes 4 départements a fonctionné sans problème (1 schéma par département).
Maintenant, comme je m'en doutais, certaines couches présentent des "doublons" d'un département à l'autre.
Comme il était demandé précédemment dans ce fil :
mettre dans une seule et même table des couches provenant de différents départements
Je pense qu'il serait souhaitable de proposer une méthode, dans le tutoriel, pour agréger sans doublons les différents départements.
A regarder de plus près, les entités en double ont la même géométrie, les mêmes attributs (notamment ID) à l'exception du champ GID.
Qu'est-ce qui vous semble le plus propre :
- Un "UNION" avec "GROUP BY" à la fin ?
- Un "UNION" avec "SELECT DISTINCT" à la suite ?
J'avais l'année dernière fait cette requête sur la base des SHP départementaux intégrés à PG :
Code:
CREATE TABLE public.admin_commune_2016 AS WITH tmp as (SELECT * FROM manche_2016.admin_commune UNION SELECT * FROM calvados_2016.admin_commune UNION SELECT * FROM mayenne_2016.admin_commune UNION SELECT * FROM eure_2016.admin_commune UNION SELECT * FROM seine_maritime_2016.admin_commune UNION SELECT * FROM orne_2016.admin_commune UNION SELECT * FROM sarthe_2016.admin_commune) SELECT DISTINCT id, prec_plani, nom, code_insee, statut, canton, arrondisst, depart, region, popul, multican, geom from tmp ORDER BY code_insee;
Est-ce que vous auriez plus propre / efficace ?
Dernière modification par Sylvain M. (Mon 23 April 2018 15:12)
Sylvain M.
Hors ligne
#30 Mon 23 April 2018 15:36
Re: Import des données IGN au format Posgres
Bonjour,
Pourquoi un UNION si ce sont des doublons ?
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
- Sujet précédent - Import des données IGN au format Posgres - Sujet suivant