Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#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: 1554
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
(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: 1554
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 , 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: 1554
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: 1554
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?)
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: 1554
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
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 . 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: 1554
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: 1554
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: 1554
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: 1554
Re: ogr_fdw et IGN parcellaire
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