Message posté par : Thomas Gratier (thomas.gratier(a)gmail.com)
----------------------------------------
Salut,
De base, tu mixes le GetCapabilities qui ne sert qu'à obtenir la liste des couches et
ce que permet le serveur en terme d'interrogation dont par exemple le format de sortie
SHP ou autre
Sur le papier, wfs_du:doc_urba a une géométrie si je me fie au DescribeFeatureType
-----------------
Code :
curl
'https://data.geopf.fr/wfs/wfs?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=wfs_du:doc_urba'
-----------------
J'ai testé
-----------------
Code :
curl
'https://data.geopf.fr/wfs/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=wfs_du:doc_urba&SRSNAME=urn:ogc:def:crs:EPSG::4326&BBOX=44.764,4.498,45.27,5.228,urn:ogc:def:crs:EPSG::4326&sortBy=gid&STARTINDEX=0&COUNT=10'
-----------------
Sauf que cela me renvoie vide
Je fais la même requête en changeant de couche
-----------------
Code :
curl
'https://data.geopf.fr/wfs/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=wfs_du:zone_urba&SRSNAME=urn:ogc:def:crs:EPSG::4326&BBOX=44.764,4.498,45.27,5.228,urn:ogc:def:crs:EPSG::4326&sortBy=gid&STARTINDEX=0&COUNT=10'
-----------------
qui elle ne me renvoie pas vide...
Je teste wfs_du:doc_urba sans passer de bbox
-----------------
Code :
curl
'https://data.geopf.fr/wfs/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=wfs_du:doc_urba&SRSNAME=urn:ogc:def:crs:EPSG::4326&sortBy=gid&STARTINDEX=0&COUNT=10'
-----------------
Miracle, cela me retourne les éléments. Sauf que je vois qu'ils sont sans géométries
donc cela va être difficile de filtrer par bbox comme tu l'envisageais...
Si tu veux les zones urba qui ont des géométries, pas dur, ton URL, c'est
https://data.geopf.fr/wfs/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSIO…
Si tu veux les doc_urba vu qu'ils n'ont pas de géométrie, alors, là, les grands
maux, les grands remèdes...
Prendre le fichier
https://cnig.gouv.fr/IMG/pdf/231220_standard_cnig_plu_v2024-01.pdf#page=18 et regarder
"Les différentes classes et leurs relations représentées en UML" pour comprendre
que tu vas devoir faire des filtres attributaires vu qu'il n'y a rien de spatial
sur la couche doc_urba et comprendre que via l'idurba, on devrait pouvoir filtrer en
passant les infos entre les zone_urba et les doc_urba
-----------------
Code :
curl
'https://data.geopf.fr/wfs/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=wfs_du:zone_urba&SRSNAME=urn:ogc:def:crs:EPSG::4326&BBOX=44.764,4.498,45.27,5.228,urn:ogc:def:crs:EPSG::4326&sortBy=gid&STARTINDEX=0&COUNT=10&propertyName=wfs_du:idurba'
| xq -r
'."wfs:FeatureCollection"."wfs:member"[]."wfs_du:zone_urba"."wfs_du:idurba"'
-----------------
PS: xq, utilitaire fournit par yq
https://kislyuk.github.io/yq/#xml-support
Mais GDAL c'est mieux car tu peux paginer
Bilan: je suis passé par gpu_doc_id qui est toujours rempli contrairement à idurba
-----------------
Code :
ogr2ogr -f CSV -dialect SQLite -sql 'SELECT DISTINCT gpu_doc_id FROM
"wfs_du:zone_urba"' /vsistdout/
'WFS:https://data.geopf.fr/wfs/wfs?sortBy=gid&SRSNAME=urn:ogc:def:crs:EPSG::4326&BBOX=44.764,4.498,45.27,5.228,urn:ogc:def:crs:EPSG::4326'
--config OGR_WFS_PAGING_ALLOWED ON --config OGR_WFS_PAGE_SIZE 5000 >|
liste_gpu_doc_id.txt
-----------------
J'ai pris une approche "brute force" (galèrer à retrouver autrement) mais
éviter de lancer sur la moitié de la France en plus ce serait BEAUCOUP trop lent... Ici,
il n'y a que 139 appels de 1 ou 2 features...
-----------------
Code :
| doc_urba.csv
for i in $(sed '1d'
liste_gpu_doc_id.txt);
do ogr2ogr -f CSV -dialect SQLite -sql "SELECT * FROM \"wfs_du:doc_urba\"
WHERE gpu_doc_id = '${i}'" /vsistdout/
'WFS:https://data.geopf.fr/wfs/wfs?sortBy=gid&SRSNAME=urn:ogc:def:crs:EPSG::4326'
--config OGR_WFS_PAGING_ALLOWED ON --config OGR_WFS_PAGE_SIZE 5000 >> doc_urba.csv;
done;
-----------------
Tip final le plus important: tu veux comprendre le WFS en ne comprenant rien au WFS. Soit
passe par QGIS via le Network logger (raccourci F12 sur des QGIS récents), soit tu passes
par ogrinfo/ogr2ogr. Le truc important, c'est --debug on --config CPL_CURL_VERBOSE YES
qui te sert à voir les appels http vers le serveur que fait GDAL genre comme ci-dessous
-----------------
Code :
ogr2ogr -f GeoJSON --debug on --config CPL_CURL_VERBOSE YES -dialect SQLite -sql
'SELECT * FROM "wfs_du:zone_urba" LIMIT 10' /vsistdout/
'WFS:https://data.geopf.fr/wfs/wfs?sortBy=gid' --config OGR_WFS_PAGING_ALLOWED ON
--config OGR_WFS_PAGE_SIZE 50
-----------------
Thomas
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=366915#p366915
Pour y répondre : donnees(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net