3liz / py-qgis-server

QGIS embbeded WMS/WFS/WCS asynchronous scalable http server
https://docs.3liz.org/py-qgis-server
Mozilla Public License 2.0
68 stars 16 forks source link

WFS3 URL Paramètres #34

Closed prahout59 closed 2 years ago

prahout59 commented 2 years ago

Lorsque je rentre cette URL, le paramètre limit, n'est pas pris en compte.

http://epfsqlcarto:9091/ows/wfs3/collections/opis/items.json?limit=1000&map=bluepad.qgs

La réponse est toujours limitée à une dizaine d'items et la fin de la réponse semble contenir une info contradictoire sur le paramètre 'limit' (voir ci-dessous) HARNES","titre":"HARNES (62413) - Centre ville ancien","type_operation":null},"type":"Feature"}],"links":[{"href":"http://epfsqlcarto:9091/ows/wfs3/collections/opis/items.geojson?LIMIT=1000&MAP=bluepad.qgs","rel":"self","title":"Retrieve the features of the collection as GEOJSON","type":"application/geo+json"},{"href":"http://epfsqlcarto:9091/ows/wfs3/collections/opis/items.html?LIMIT=1000&MAP=bluepad.qgs","rel":"alternate","title":"Retrieve the features of the collection as HTML","type":"text/html"},{"href":"http://epfsqlcarto:9091/ows/wfs3/collections/opis/items.json?LIMIT=1000&MAP=bluepad.qgs&offset=10&limit=10","name":"Next page","rel":"next","title":"Retrieve the features of the collection as GEOJSON","type":"application/geo+json"}],"numberMatched":1243,"numberReturned":10,"timeStamp":"2022-02-15T10:51:16Z","type":"FeatureCollection"}

J'ai essayé d'autres paramètres comme "properties" et c'est pareil, en indiquant ne vouloir qu'un attribut spécifique, tous les attributs sont retournés.

La carte que j'interroge était dans un sous-dossier, je l'ai déplacé à la racine pour ne pas être embété avec le caractère "/" mais idem (je n'ai pas trouvé la façon de faire comme dans qgis server avec le fichier de configuration et l'ajout de [projects.schemes])

dmarteau commented 2 years ago

Lorsque je rentre cette URL, le paramètre limit, n'est pas pris en compte.

py-qgis-server ne traite pas ces paramètres et passe ces paramètres directement Qgis (QgsServer), Il faut ouvrir un ticket sur le projet Qgis https://github.com./qgis/qgis/issues.

La carte que j'interroge était dans un sous-dossier, je l'ai déplacé à la racine pour ne pas être embété avec le caractère "/"

Cela ne doit pas poser de problèmes.

je n'ai pas trouvé la façon de faire comme dans qgis server avec le fichier de configuration et l'ajout de [projects.schemes]

Que cherchez vous a faire ? [projects.schemes] est utilisé pour controler les paramètres des sources de données et des paramètres associés: https://py-qgis-server.readthedocs.io/en/latest/schemes.html#scheme-aliases

prahout59 commented 2 years ago

Sur la version qgis server officielle, le passage de paramètre fonctionne. Je mets à disposition d'un prestataire externe nos données par l'API WFS3. Il faut donc qu'il puisse récupérer toutes les lignes de données de la couche (environ 1200). Pourquoi la version py-qgis-server ne respecte-t-elle pas les paramètres comme décrit dans l'API par l'OGC ?

Concernant [projects.schemes], je l'avais fait aussi dans la version qgis server et cela me permettait d'appeler une carte sans indiquer le dossier qui la contient.

Si je comprend bien, cette version de serveur OWS n'est compatible qu'avec le client lizmap et on ne peut l'utiliser comme vrai serveur WFS ? Je dois donc utiliser une autre version de serveur WFS3 comme Qgis server ?

dmarteau commented 2 years ago

Pourquoi la version py-qgis-server ne respecte-t-elle pas les paramètres comme décrit dans l'API par l'OGC ?

Comme précisé précédemment, les paramètres sont passés directement à l'API Qgis server et donc doit retourner les mêmes réponse que la version Qgis server 'officielle'. Si ce n'est pas le cas c'est qu'il y a un effectivement un problème que l'on doit investiguer.

Si je comprend bien, cette version de serveur OWS n'est compatible qu'avec le client lizmap et on ne peut l'utiliser comme vrai serveur WFS ?

Non pas du tout, py-qgis-server est un middleware devant l'api qgis serveur et se doit de retourner les mêmes reponses.

prahout59 commented 2 years ago

Je peux vous affirmer qu'il y a bien des différences. Sur l'image qui suit, le serveur Qgis est en haut sur le port 8080 et le serveur py-qgis-server est en bas sur le port 9091. La landing page ne s'affiche pas alors que je l'ai activée image

Utilisation du paramètre "limit" sur qgis server (les 1000 lignes sont bien retournées avec uniquement l'attribut reference) image

La même chose avec py-qgis-server. Seul une dizaine de lignes sont retournées avec tous les attributs. image

Donc, aucun paramètre n'est pris en compte dans le cas de py-qgis-server et la landing page ne fonctionne pas. Pour moi, il n'est donc pas conforme à l'API WFS3. Je vais réactiver le serveur OWS Qgis provisoirement.

dmarteau commented 2 years ago

Je peux vous affirmer qu'il y a bien des différences. Sur l'image qui suit, le serveur Qgis est en haut sur le port 8080 et le serveur

Personne n'a dit qu'il n'y a pas de différence: simplement que si différence il y a, c'est un bug que nous devons fixer et merci de nous le rapporter.

Apparemment il s'agirait d'un problème de traitement majuscule/minuscule des paramètres. Pour tester , essayez LIMIT en majuscule avec le serveur Qgis fcgi...

prahout59 commented 2 years ago

J'avais remarqué que dans la réponses, certains paramètres étaient en double (par exemple, limit à 10 et LIMIT à 1000). J'ai donc testé en majuscules et le résultat est le même.

dmarteau commented 2 years ago

Je confirme qu'il s'agit bien d'un problème de casse des paramètres (les paramètres passés a l'api qgis server étant par défaut convertis en majuscule. Un correctif est en cours.

dmarteau commented 2 years ago

A noter que cela n'affecte que l'api wfs3

dmarteau commented 2 years ago

Fixed with https://github.com/3liz/py-qgis-server/commit/281eb3e00bd12587bc5eb384322c2fb3daa467fc https://github.com/3liz/py-qgis-server/commit/2932b50ffefd2281420dafd565d2f29f6c65b346

prahout59 commented 2 years ago

merci beaucoup. Je vais tester cela demain. Une petite question subsidiaire, grâce à vous, j'utilise maintenant docker et c'est génial. Si je supprime mon image local du map server et que, du coup, je reprend une image du docker hub, est-ce que les correctifs indiqués y seront apportés ou est-ce que je dois passer par un build sur un dockerfile contenant une commande de copy des deux fichiers python corrigés. Cette question peut sembler bête mais je débute dans cet écosystème 😁

dmarteau commented 2 years ago

Si je supprime mon image local du map server et que, du coup, je reprend une image du docker hub, est-ce que les correctifs indiqués y seront apportés

Les images du docker hub sont systématiquement mis à jour lors des releases (la prochaine est 1.7.16) et ceci pour les versions ltr et release de Qgis.

Les images sont taggées qgis-map-server:<Qgis-version>-<py-qgis-server-version>, et les images taggées qgis-map-server:<Qgis-version> correspondent toujours à la dernière release de py-qgis-server si Qgis version est la version release ou ltr actuelle de Qgis.

Qgis 3.16 est la ltr actuelle de Qgis, donc qgis-map-server:3.16 est l'image contenant la dernière release de py-qgis-server.

Les images des versions de developpement sont taggées release-rc et ltr-rc.

Les correctifs seront dans la release 1.7.16. Dès que cette release sera publiée, si vous utilisez la version 3.16 de Qgis alors un docker pull 3liz/qgis-map-server:3.16 mettra votre image à jour avec contiendra avec cette release.

Gustry commented 2 years ago

C'est corrigé dans 1.7.16 https://github.com/3liz/py-qgis-server/releases/tag/1.7.16 Je pense que je peux fermer.