banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

Les inscriptions sont ouvertes !

#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: 1555

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: 3205
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: 709

Re: Import d'un WFS dans BDD postgres

En ligne

 

#6 Tue 26 September 2023 08:43

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3205
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: 23

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: 23

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

 

#10 Thu 12 December 2024 17:36

sandy
Juste Inscrit !
Lieu: NANTES
Date d'inscription: 26 Jul 2010
Messages: 8

Re: Import d'un WFS dans BDD postgres

Bonjour,

Merci pour la solution, j'avais exactement le même soucis. Vous savez expliquer pourquoi il y a une erreur 400 sans le sortBy ?

Hors ligne

 

#11 Tue 18 March 2025 17:53

kazemar
Juste Inscrit !
Date d'inscription: 6 Jan 2020
Messages: 3

Re: Import d'un WFS dans BDD postgres

Pour revenir à la question d'origine sur ce fil, avez-vous trouvé une solution pour l'erreur suivante ?

Code:

ERREUR: GDAL AppDefined [1] XML parsing of GML file failed : unclosed token at line 181217, column 0

Sachant qu'elle se produit chez moi au bout d'une ou deux minutes en général, et à chaque fois différente, ici par exemple une autre, avec la même requête :

Code:

ERREUR: GDAL AppDefined [1] XML parsing of GML file failed : no element found at line 179777, column 2831

Voici le code que j'utilise (et qui a déjà fonctionné, par exemple pour récupérer tous les zonages PLU de France)

Code:

-- Créer le serveur
DROP SERVER IF EXISTS fdw_ogr_gpu;
CREATE SERVER fdw_ogr_gpu FOREIGN DATA WRAPPER ogr_fdw
OPTIONS (
    datasource 'WFS:https://data.geopf.fr/wfs/ows?VERSION=2.0.0&sortBy=gid',
    format 'WFS'
);

-- Créer un schéma pour le GPU
--DROP SCHEMA fdw_gpu CASCADE;
CREATE SCHEMA IF NOT EXISTS fdw_gpu;

-- Récupérer l'ensemble des couches WFS comme des tables dans le schéma fdw_gpu
IMPORT FOREIGN SCHEMA ogr_all
LIMIT TO ("wfs_sup_generateur_sup_s", "wfs_du_zone_urba", "wfs_du_secteur_cc")
FROM SERVER fdw_ogr_gpu
INTO fdw_gpu
OPTIONS (
    -- mettre le nom des tables en minuscule et sans caractères bizarres
    launder_table_names 'true',
    -- mettre le nom des champs en minuscule
    launder_column_names 'true'
);

-- Données Zones Urba (Zonages PLU)
DROP MATERIALIZED VIEW IF EXISTS fdw_gpu.vm_du_zone_urba;
CREATE MATERIALIZED VIEW fdw_gpu.vm_du_zone_urba AS
SELECT *
FROM fdw_gpu.wfs_du_zone_urba;

L'erreur se produit quand j'exécute le dernier bloc "Données Zones Urba"

Hors ligne

 

#12 Sun 30 March 2025 10:44

badol
Participant occasionnel
Lieu: Vaulx-en-Velin
Date d'inscription: 7 Sep 2005
Messages: 30
Site web

Re: Import d'un WFS dans BDD postgres

Merci pour toutes des informations

J'ai compilé tout çà dans un script à moi et j'ai ajouté une partie création des vues matérialisées avec des index pour aller plus vite dans les requêtes :
https://gitlab.com/christophe.badol/adm … type=heads

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo