Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Thu 21 September 2023 17:25

alextaz44
Participant actif
Lieu: Angers
Date d'inscription: 4 May 2006
Messages: 62

ogr_fdw et IGN parcellaire

Bonjour,

Je cherche à avoir des retours d’expérience concernant la connexion au WFS "parcellaire" de L'IGN via ogr_fdw.

J'ai bien créé le serveur, ogr_fdw_info m'a bien fourni toutes les infos et j'ai lancé ce code là :

CREATE FOREIGN TABLE cadastralparcels_parcellaire_express_parcelle (
  fid bigint,
  the_geom Geometry(MultiSurface,4326),
  gml_id varchar,
  numero varchar,
  feuille integer,
  section varchar,
  code_dep varchar,
  nom_com varchar,
  code_com varchar,
  com_abs varchar,
  code_arr varchar,
  idu varchar,
  code_insee varchar,
  contenance integer
) SERVER parcelles_pci
OPTIONS (layer 'CADASTRALPARCELS.PARCELLAIRE_EXPRESS:parcelle');

La table foreign est bien crée, tout semble rouler


Mais si je tente un simple :
select * from cadastralparcels_parcellaire_express_parcelle limit 1
Comme s'il chargeait tout le flux lorsque que je lui demande ça.

Alors ça mouline mouline mouline sans résultat.

C'est la première fois que j'utilise cette extension et j'ai l'impression que j'ai loupé quelque chose.

Hors ligne

 

#2 Sat 23 September 2023 12:23

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: ogr_fdw et IGN parcellaire

Bonjour,

Je soupçonne que lors de la requête select * from table limit 1; le  serveur remote fasse un select * avant tout .
Or la couche contient 93,817,786 polygones big_smile

(marrant, le type geometrique est une multisurface, 3D donc)

Vous pouvez tester dans qgis, en ajoutant ce service WFS, en zoomant bien: les parcelles se chargent correctement.
En SQL, avec un filtre spatial (tout petit extent), la couche répond pas mal:


Code:

CREATE FOREIGN TABLE testparc (
  fid bigint,
  the_geom Geometry(MultiSurface,4326),
  gml_id varchar,
  numero varchar,
  feuille integer,
  section varchar,
  code_dep varchar,
  nom_com varchar,
  code_com varchar,
  com_abs varchar,
  code_arr varchar,
  idu varchar,
  code_insee varchar,
  contenance integer
) SERVER fdw_ogr_ign_parc
OPTIONS (layer 'CADASTRALPARCELS.PARCELLAIRE_EXPRESS:parcelle');

-- 1.443463 43.591762, 1.446831 43.593707

select *
from testparc
where the_geom && 'BOX(1.443463 43.591762, 1.446831 43.593707)'::box2d;
-- -- [2023-09-23 11:54:40] 108 rows retrieved starting from 1 in 2 s 531 ms (execution: 2 s 473 ms, fetching: 58 ms)

Sur une bbox plus grande (~ 55km), la copie des data en local n'est pas finie apres 20 min:

Code:

create table localparc as
    select *
    from testparc
    where the_geom && 'BOX(1.08 43.4387,1.7576 43.8301)'::box2d;

Sur des gros extents, cette énorme couche parcellaire va être très longue à traiter, meme une copie en local

Pour travailler avec le parcellaire efficacement dans PG, je vous recommande de le telecharger depuis les formats SHP ou geojson et de les importer dans postgis: ca se fait rapidement et ensuite, la table locale se manipule bien (même la volumétrie complete de ~ 93M de pg)

Nicolas

Hors ligne

 

#3 Wed 27 September 2023 09:16

alextaz44
Participant actif
Lieu: Angers
Date d'inscription: 4 May 2006
Messages: 62

Re: ogr_fdw et IGN parcellaire

A super! J'avoue que je m'étais demandé comment il traitait la requête avec le limit plutot qu'avec un where.
J'avais pas eu trop le temps de regarder ça depuis mon premier message mais du coup je teste avec un && comme ça :


Code:

select * from cadastralparcels_parcellaire_express_parcelle p
 where p.the_geom && (select st_transform(st_buffer(geom, -170),4326)  from projet where id = 103)

Mais je recupère une erreur 504...
J'ai essayer avec un st_envelope et ::box2D mais j'ai eu la meme chose. la zone en question fait environ 1km²

et même chose :

Code:

ERROR:  [1] HTTP error code : 504 

SQL state: XX000

Je vais essayer plus petit...

Hors ligne

 

#4 Wed 27 September 2023 09:46

alextaz44
Participant actif
Lieu: Angers
Date d'inscription: 4 May 2006
Messages: 62

Re: ogr_fdw et IGN parcellaire

Bon et bien je viens de tester avec la même requête :

Code:

select *
from cadastralparcels_parcellaire_express_parcelle
where the_geom && 'BOX(1.443463 43.591762, 1.446831 43.593707)'::box2d;

et j'ai aussi un erreur 504...

Je sèche un peu

Hors ligne

 

#5 Wed 27 September 2023 12:03

alextaz44
Participant actif
Lieu: Angers
Date d'inscription: 4 May 2006
Messages: 62

Re: ogr_fdw et IGN parcellaire

C'est possible que mon ip soit temporairement "blacklistée" suite à une requete lourde?

Hors ligne

 

#6 Wed 27 September 2023 12:23

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: ogr_fdw et IGN parcellaire

Bonjour,

HTTP 504, c'est une erreur Gateway timeout: le serveur ne répond plus: soit vous l'avez mis en PLS big_smile, soit le serveur est momentanément down.

Nicolas

Hors ligne

 

#7 Wed 27 September 2023 12:28

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: ogr_fdw et IGN parcellaire

Je viens de tester avec cette requête et ca passe:

Code:

create table localtestparc as
select *
from testparc
where the_geom && 'BOX(1.443463 43.591762, 1.446831 43.593707)'::box2d;
-- [2023-09-27 12:25:00] 108 rows affected in 3 s 893 ms

testparc est la foreign table définie sur la layer 'CADASTRALPARCELS.PARCELLAIRE_EXPRESS:parcelle', wfs url:  'WFS:https://wxs.ign.fr/parcellaire/geoportail/wfs?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetCapabilities'

Nicolas

Hors ligne

 

#8 Wed 27 September 2023 16:36

alextaz44
Participant actif
Lieu: Angers
Date d'inscription: 4 May 2006
Messages: 62

Re: ogr_fdw et IGN parcellaire

Code:

CREATE SERVER fdw_ogr_ign_parc
  FOREIGN DATA WRAPPER ogr_fdw
  OPTIONS (
        datasource 'WFS:https://wxs.ign.fr/parcellaire/geoportail/wfs?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetCapabilities',
        format 'WFS' );

CREATE FOREIGN TABLE wfs_parc_ign (
  fid bigint,
  the_geom Geometry(MultiSurface,4326),
  gml_id varchar,
  numero varchar,
  feuille integer,
  section varchar,
  code_dep varchar,
  nom_com varchar,
  code_com varchar,
  com_abs varchar,
  code_arr varchar,
  idu varchar,
  code_insee varchar,
  contenance integer
) SERVER fdw_ogr_ign_parc
OPTIONS (layer 'CADASTRALPARCELS.PARCELLAIRE_EXPRESS:parcelle');

create table wfs_localtestparc as
select *
from wfs_parc_ign
where the_geom && 'BOX(1.443463 43.591762, 1.446831 43.593707)'::box2d;

J'ai tout supprimé pour refaire avec ce code complet (Je n'avais les les service et request dans l'ancienne URL)
Et je me retrouve avec la meme erreur au bout de 6 minutes. alors là... c'est incompréhensible.

Hors ligne

 

#9 Wed 27 September 2023 17:48

alextaz44
Participant actif
Lieu: Angers
Date d'inscription: 4 May 2006
Messages: 62

Re: ogr_fdw et IGN parcellaire

Juste pour me donner une petite idée : combien de temps elle prend la requete que j'essaie (celle que vous avez doné en exemple?)

Hors ligne

 

#10 Wed 27 September 2023 18:42

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: ogr_fdw et IGN parcellaire

alextaz44 a écrit:

Juste pour me donner une petite idée : combien de temps elle prend la requete que j'essaie (celle que vous avez doné en exemple?)


3s pour l'extent BOX(1.443463 43.591762, 1.446831 43.593707)


Nicolas

Hors ligne

 

#11 Wed 27 September 2023 19:01

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: ogr_fdw et IGN parcellaire

Nicolas Ribot a écrit:
alextaz44 a écrit:

Juste pour me donner une petite idée : combien de temps elle prend la requete que j'essaie (celle que vous avez doné en exemple?)


3s pour l'extent BOX(1.443463 43.591762, 1.446831 43.593707)


Nicolas


Et:
[2023-09-27 18:52:20] 138,768 rows affected in 13 m 35 s 303 ms
pour la bbox: 'BOX(1.3626 43.5362, 1.524 43.6712)'::box2d

Nico

Hors ligne

 

#12 Wed 27 September 2023 20:02

alextaz44
Participant actif
Lieu: Angers
Date d'inscription: 4 May 2006
Messages: 62

Re: ogr_fdw et IGN parcellaire

Ah...3s bon bah j'ai un soucis ici alors.

Hors ligne

 

#13 Thu 28 September 2023 09:18

alextaz44
Participant actif
Lieu: Angers
Date d'inscription: 4 May 2006
Messages: 62

Re: ogr_fdw et IGN parcellaire

Bon alors j'ai testé quelque truc... et je trouve le comportement de la machine très bizarre.

Par exemple j'ai tenté de faire ça :

Code:

IMPORT FOREIGN SCHEMA ogr_all
FROM SERVER fdw_ogr_ign_parc
INTO test_wfs
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'
)

Aucun problème, donc j'en déduis que le message passe bien entre mon serveur et celui de l'ign. Je récupere les 17 table étrangeres et tout semble bien aller.
Parce contre toujours impossible de requeter. Si je lance le petit extent (celui de 3 secondes), alors ça mouline pendant.... pas mal de temps. et au final je fini avec une erreur 504.

Parmi les pistes que j'ai pour l'instant :
- J'ai sur ce serveur : Vmap, Geoserver, et postgis. J'ai mis le mois dernier un certif SSL avec un nom de domaine qui pointe dessus.
Est-ce que ça peut avoir une influence? J'aurai dit que non car le serveur communique bien avec celui de l'ign, (A moins qu'il s'agisse de deux ports/protocoles différents?)
- mon ip est associé à un chargement de toutes les parcelles du flux depuis 1 semaine smile . Ou est blacklisté.

Je continue mes recherches mais j'avoue ne pas trop savoir vers quoi regarder.

Hors ligne

 

#14 Fri 29 September 2023 11:02

alextaz44
Participant actif
Lieu: Angers
Date d'inscription: 4 May 2006
Messages: 62

Re: ogr_fdw et IGN parcellaire

Bon alors je viens de tester sur un autre Flux :
J'ai donc lancé tout ça :

Code:

CREATE SERVER fdw_ogr_geo_risque
  FOREIGN DATA WRAPPER ogr_fdw
  OPTIONS (
        datasource 'WFS:https://www.georisques.gouv.fr/services',
        format 'WFS' );
create schema test_wfs_georisque;        
       IMPORT FOREIGN SCHEMA ogr_all
FROM SERVER fdw_ogr_geo_risque
INTO test_wfs_georisque
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 *
    from test_wfs_georisque.ms_etablissements_pollueurs mep 
    where msgeometry && 'BOX(1.08 43.4387,1.3576 43.6301)'::box2d;

La requete fonctionne!!! Bon par contre 5 minutes 32 elle a mis à passer.

Si quelqu'un pouvait faire la même manip pour voir ce que cela donne en terme de temps?
Si toutefois la requête est beaucoup plus rapide chez chez vous, auriez vous une piste qui expliquerai ce manque de "performance"?

Sachant que la base tourne chez un hébergeur avec par ailleurs aucun souci de vitesse de transfert.

Hors ligne

 

#15 Fri 29 September 2023 11:25

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: ogr_fdw et IGN parcellaire

Bonjour

Chez moi:

[2023-09-29 11:24:54] 49 rows affected in 3 s 459 ms


Nicolas

Hors ligne

 

#16 Fri 29 September 2023 12:58

alextaz44
Participant actif
Lieu: Angers
Date d'inscription: 4 May 2006
Messages: 62

Re: ogr_fdw et IGN parcellaire

Merci beaucoup!

Bon et bien j'ai donc un probleme serveur évident, qui ne ne vient probablement pas de la base elle même.

Je ne sais absolument pas où chercher quoi...

Merci en tout cas pour les tests!

Hors ligne

 

#17 Mon 09 October 2023 16:12

alextaz44
Participant actif
Lieu: Angers
Date d'inscription: 4 May 2006
Messages: 62

Re: ogr_fdw et IGN parcellaire

bonjour à tous, bon alors j'ai testé pas mal de chose sans grande réussite pour essayer d'expliquer le pourquoi ça n'avance pas.

Du coup j'en suis arrivé à ogr2ogr shp fws.

L'idée est de voir si l'import d'une petite partie de la base fonctionne.
Je cherche donc à lancer ça :


Code:

ogr2ogr "/home/user/a.shp" "WFS:https://wxs.ign.fr/parcellaire/geoportail/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=CADASTRALPARCELS.PARCELLAIRE_EXPRESS:parcelle&STARTINDEX=0&COUNT=1000000&SRSNAME=EPSG:4326&BBOX=1.443463,43.591762,1.446831,43.593707"

Mais il va systématiquement chercher toutes les couches dans l'ordre du flux, comme si mon &TYPENAMES n'était pas pris en compte. Vous sauriez comment trouvé la requete ogr2 précise qui est lancée par l'extension postgis_fdw? ça me faciliterai la tache afin de voir ce qui se passe exactement et découvrir d'où vient cette fameuse lenteur...

Dernière modification par alextaz44 (Mon 09 October 2023 16:31)

Hors ligne

 

#18 Mon 09 October 2023 16:22

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: ogr_fdw et IGN parcellaire

Bonjour,

Il faut préciser le nom de la couche qu'on veut dans ogr2ogr, pas dans l'url du service:

Code:

ogr2ogr a.shp "WFS:..." "CADASTRALPARCELS.PARCELLAIRE_EXPRESS:parcelle"

Nico

Hors ligne

 

#19 Tue 10 October 2023 09:02

alextaz44
Participant actif
Lieu: Angers
Date d'inscription: 4 May 2006
Messages: 62

Re: ogr_fdw et IGN parcellaire

Bon j'ai finalement réussi je crois à utiliser ogr2ogr pour télécharger une couche mais pour la couche ign ça me fais des truc bizarre, il fini toujours par vouloir télécharger toutes les couches du flux les une après les autres.

Et du coup j'avais une question pour les gens qui connaissent bien le truc : l'extension ogr_fdw elle s'appui sur sa propre librairie ogr/gdal ou elle utilise la sienne?
Je demande ça car je viens de voir que ma version gdal est assez ancienne :

Code:

gdalinfo --version
GDAL 2.4.0, released 2018/12/14

Ca pourrait jouer sur la lenteur du truc vous pensez? Je peux réinstaller une version de gdal sans "dommages". Il semble que sur debian on ne peux pas faire un simple update de gdal, il faut le reinstaller par dessus.

Hors ligne

 

#20 Tue 10 October 2023 11:59

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: ogr_fdw et IGN parcellaire

Bonjour,

ogr_fdw se base sur gdal/ogr détécté sur le système. Il ne recompile pas sa propre version
Oui, 2.4 c'est vieux, on en est a 3.7 pour gdal.

Pour avoir la liste des couches sur un service WFS, on peut utiliser ogrinfo:

Code:

ogrinfo -al -so "WFS:https://wxs.ign.fr/parcellaire/geoportail/wfs?SERVICE=WFS&REQUEST=GetCapabilities"

Ensuite pour choper une couche, et par ex la charger dans postgis dans une table ign_parcelle:

Code:

ogr2ogr -f PostgreSQL PG:"port=16432" \
  "WFS:https://wxs.ign.fr/parcellaire/geoportail/wfs?SERVICE=WFS&REQUEST=GetCapabilities" \
  "CADASTRALPARCELS.PARCELLAIRE_EXPRESS:parcelle" \
  -nln ign_parcelle

Bon le service renvoie des HTTP 500 de partout...

Nicolas

Hors ligne

 

#21 Tue 10 October 2023 12:01

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: ogr_fdw et IGN parcellaire

alextaz44 a écrit:

Ca pourrait jouer sur la lenteur du truc vous pensez? Je peux réinstaller une version de gdal sans "dommages". Il semble que sur debian on ne peux pas faire un simple update de gdal, il faut le reinstaller par dessus.


Sous debian, vous pouvez facilement tester la version que vous voulez de GDAL (notamment la plus récente, avec TOUS les formats compilés) en passant par une image Docker: https://github.com/OSGeo/gdal/pkgs/container/gdal

Nicolas

Hors ligne

 

#22 Wed 11 October 2023 15:55

alextaz44
Participant actif
Lieu: Angers
Date d'inscription: 4 May 2006
Messages: 62

Re: ogr_fdw et IGN parcellaire

Merci beaucoup pour tout!

Je ne connais pas (encore)  le fonctionnement des images docker.
Mais je vais tenter une mise à jour de gdal quand j'aurais un peu de temps.
Avec un peu beaucoup de chance, je vais finir par y arriver.
L'idée si je comprends bien c'est donc d'installer gdal via docker (donc install de docker etc)
mais du coup il faut supprimer l'ancien pour que postgis l'utilise?

Hors ligne

 

Pied de page des forums

Powered by FluxBB