#1 Mon 07 August 2023 11:31
- jeremy SERIEYE
- Participant occasionnel
- Date d'inscription: 19 Mar 2021
- Messages: 30
Import d'un WFS dans BDD postgres
Bonjour à tous,
Je cherche à importer un flux WFS en BDD postgres.
J'arrive à ce que je souhaite la BD Topo cependant impossible avec le WFS du GPU (https://wxs-gpu.mongeoportail.ign.fr/ex … al2lz3/wfs).
Code:
DROP SERVER IF EXISTS fdw_ogr_ign_gpu CASCADE; CREATE SERVER fdw_ogr_ign_gpu FOREIGN DATA WRAPPER ogr_fdw OPTIONS ( datasource 'WFS:https://wxs-gpu.mongeoportail.ign.fr/externe/39wtxmgtn23okfbbs1al2lz3/wfs?service=WFS&request=GetCapabilities', format 'WFS', config_options 'GDAL_HTTP_UNSAFESSL=YES' ); CREATE SCHEMA IF NOT EXISTS ign_gpu; IMPORT FOREIGN SCHEMA ogr_all FROM SERVER fdw_ogr_ign_gpu INTO ign_gpu OPTIONS ( -- mettre le nom des tables en minuscule et sans caractères bizares launder_table_names 'true', -- mettre le nom des champs en minuscule launder_column_names 'true' ) ; SELECT foreign_table_schema, foreign_table_name FROM information_schema.foreign_tables WHERE foreign_table_schema = 'ign_gpu' ORDER BY foreign_table_schema, foreign_table_name; SELECT * FROM ign_gpu.wfs_du_doc_urba LIMIT 1;
Lors du dernier SELECT ci-dessus j'ai le code erreur suivant :
ERROR: GDAL AppDefined [1] HTTP error code : 403
ERREUR: GDAL AppDefined [1] HTTP error code : 403
État SQL : XX000
Si certains connaissent la solution, je suis preneur !
Merci par avance.
Jérémy
Hors ligne
#2 Fri 25 August 2023 11:11
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1542
Re: Import d'un WFS dans BDD postgres
Bonjour,
Effectivement, j'ai aussi des erreurs 403 (FORBIDDEN) sur la couche act_sup par ex, alors qu'elle marchait il y a quelques temps avec OGR.
Peut etre que les droits ont changé ou que le token n'est plus à jour ?
Nicolas
Hors ligne
#3 Mon 25 September 2023 09:38
- jeremy SERIEYE
- Participant occasionnel
- Date d'inscription: 19 Mar 2021
- Messages: 30
Re: Import d'un WFS dans BDD postgres
Bonjour Nicolas et merci pour ta réponse.
J'ai réussi à aller plus loin avec le lien WFS suivant :
https://wxs-gpu.mongeoportail.ign.fr/ex … pabilities
L'import fonctionne mais avec ce flux j'ai une erreur au bout d'environ 1h de traitement :
Code:
CREATE MATERIALIZED VIEW gpu_import.vm_zone_urba AS SELECT a.the_geom, a.gml_id, a.partition, a.libelle, a.libelong, a.typezone, a.destdomi, a.nomfic, a.urlfic, a.insee, a.datappro, a.datvalid , a.idurba, a.idzone, a.lib_idzone FROM gpu_import.wfs_du_zone_urba a, public.emprise b WHERE ST_Intersects(a.the_geom, b.the_geom)
ERREUR: GDAL AppDefined [1] XML parsing of GML file failed : reference to invalid character number at line 1, column 8467758
Ma vue ne se crée donc pas, j'ai essayé de jouer sur l'option "config_options" lors de la création du serveur mais je n'ai pas la solution.....
Pour info, voici le code complet:
Code:
DROP SERVER IF EXISTS fdw_ogr_gpu CASCADE; CREATE SERVER fdw_ogr_gpu FOREIGN DATA WRAPPER ogr_fdw OPTIONS ( datasource 'WFS:https://wxs-gpu.mongeoportail.ign.fr/externe/39wtxmgtn23okfbbs1al2lz3/wfs?service=WFS&request=GetCapabilities', format 'WFS', character_encoding 'UTF-8', config_options 'CPL_DEBUG=ON GDAL_HTTP_MAX_RETRY=0 GDAL_HTTP_RETRY_DELAY=3 ' ); SET client_min_messages = debug2; CREATE SCHEMA IF NOT EXISTS gpu_import; IMPORT FOREIGN SCHEMA ogr_all FROM SERVER fdw_ogr_gpu INTO gpu_import OPTIONS ( -- mettre le nom des tables en minuscule et sans caractères bizares launder_table_names 'true', -- mettre le nom des champs en minuscule launder_column_names 'true'); SELECT foreign_table_schema, foreign_table_name FROM information_schema.foreign_tables WHERE foreign_table_schema = 'gpu_import' ORDER BY foreign_table_schema, foreign_table_name; DROP MATERIALIZED VIEW IF EXISTS gpu_import.vm_zone_urba; CREATE MATERIALIZED VIEW gpu_import.vm_zone_urba AS SELECT a.the_geom, a.gml_id, a.partition, a.libelle, a.libelong, a.typezone, a.destdomi, a.nomfic, a.urlfic, a.insee, a.datappro, a.datvalid , a.idurba, a.idzone, a.lib_idzone FROM gpu_import.wfs_du_zone_urba a, public.emprise b WHERE ST_Intersects(a.the_geom, b.the_geom);
Hors ligne
#4 Mon 25 September 2023 16:59
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3185
- Site web
Re: Import d'un WFS dans BDD postgres
Bonjour,
Merci à tous les deux de m'avoir fait découvrir que l'on peut importer un flux WFS dans postgres !!!
MERCI beaucoup ! (ça m'est jamais venu à l'idée ...)
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#5 Tue 26 September 2023 08:35
- n314
- Participant assidu
- Date d'inscription: 6 Sep 2005
- Messages: 702
Re: Import d'un WFS dans BDD postgres
Les réf 'originelles' qui initient cet usage:
http://blog.cleverelephant.ca/2019/11/o … ilter.html amplié ensuite par https://www.crunchydata.com/blog/holy-s … m-postgres puis https://www.crunchydata.com/blog/remote … m-postgres
Hors ligne
#6 Tue 26 September 2023 08:43
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3185
- Site web
Re: Import d'un WFS dans BDD postgres
Merci n314
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#7 Tue 26 September 2023 15:50
- jeremy SERIEYE
- Participant occasionnel
- Date d'inscription: 19 Mar 2021
- Messages: 30
Re: Import d'un WFS dans BDD postgres
Merci pour vos retours.
Je suis toujours bloqué avec l'erreur :
GDAL AppDefined [1] XML parsing of GML file failed : reference to invalid character number at line 1, column 8467758
Voici la totalité de mon code:
Code:
DROP SERVER IF EXISTS fdw_ogr_gpu CASCADE; CREATE SERVER fdw_ogr_gpu FOREIGN DATA WRAPPER ogr_fdw OPTIONS ( datasource 'WFS:https://wxs-gpu.mongeoportail.ign.fr/externe/39wtxmgtn23okfbbs1al2lz3/wfs?service=WFS&request=GetCapabilities', format 'WFS', config_options 'CPL_DEBUG=ON GDAL_HTTP_MAX_RETRY=5 GDAL_HTTP_RETRY_DELAY=5' ); SET client_min_messages = debug2; CREATE SCHEMA IF NOT EXISTS gpu_import; -- Récupérer l'ensemble des couches WFS comme des tables dans le schéma ref_dreal IMPORT FOREIGN SCHEMA ogr_all FROM SERVER fdw_ogr_gpu INTO gpu_import OPTIONS ( -- mettre le nom des tables en minuscule et sans caractères bizares launder_table_names 'true', -- mettre le nom des champs en minuscule launder_column_names 'true'); SELECT foreign_table_schema, foreign_table_name FROM information_schema.foreign_tables WHERE foreign_table_schema = 'gpu_import' ORDER BY foreign_table_schema, foreign_table_name; DROP MATERIALIZED VIEW IF EXISTS gpu_import.vm_zone_urba; CREATE MATERIALIZED VIEW gpu_import.vm_zone_urba AS SELECT * FROM gpu_import.wfs_du_zone_urba a WHERE LEFT(a.insee,2) ='12';
J'ai bien regardé les liens de n314 mais je n'arrive pas à corriger cette erreur.
J'ai aussi trouvé des options de configuration mais je ne sais pas quelle utiliser dans mon cas de figure.
https://gdal.org/user/configoptions.html
Dernière modification par jeremy SERIEYE (Tue 26 September 2023 15:52)
Hors ligne
#8 Mon 01 July 2024 15:54
- melanie.p
- Participant occasionnel
- Date d'inscription: 14 Sep 2013
- Messages: 22
Re: Import d'un WFS dans BDD postgres
Bonjour à tous,
Avez vous pu trouver une solution à ce problème ? J'ai exactement le même souci. J'interroge dans PGSQL certaines couches WFS de la geoplateforme sans souci mais impossible d'interroger la couche 'wfs_du:zone_urba', j'ai le message ERREUR: GDAL AppDefined [1] HTTP error code : 400
État SQL : XX000
Merci pour votre retour.
Hors ligne
#9 Fri 13 September 2024 11:37
- melanie.p
- Participant occasionnel
- Date d'inscription: 14 Sep 2013
- Messages: 22
Re: Import d'un WFS dans BDD postgres
Bonjour, je répond à ma question, j'ai dû ajouter un sortBy sur la source pour ne plus avoir l'erreur 400
Code:
CREATE SERVER fdw_geopf_du FOREIGN DATA WRAPPER ogr_fdw OPTIONS (datasource 'WFS:https://data.geopf.fr/wfs/ows?VERSION=2.0.0&sortBy=gid', format 'WFS');
Hors ligne