Suite

WMS GetFeatureInfo ne renvoie pas toutes les coordonnées de la géométrie

WMS GetFeatureInfo ne renvoie pas toutes les coordonnées de la géométrie


J'ai des couches de géoserveur créées à partir de tables PostGIS. Je les charge sur la carte à l'aide d'OpenLayers et j'utilise WMS GetFeatureInfo pour obtenir des fonctionnalités en cliquant sur la souris.

J'ai observé que la requête GetFeatureInfo optimise les géométries renvoyées en fusionnant des sommets très proches. Cependant, pour l'édition, j'ai besoin d'obtenir tous les sommets.

Existe-t-il un moyen de dire à WMS GetFeatureInfo de récupérer tous les sommets ?

Voici un exemple de demande que j'envoie :

http://localhost:8080/geoserver/MyWorkSpace/wms ?LAYERS=MyLayer &QUERY_LAYERS=MyLayer &STYLES=MyLayer_Style &SERVICE=WMS &VERSION=1.1.1 &REQUEST=GetFeatureInfo &BBOX=10064619.024143,2730298.878509,10064682.0TH2491427,2730&FE 844 &INFO_FORMAT=application/vnd.ogc.gml &SRS=EPSG:900913 &X=302 &Y=265

Comme commenté par user30184, je pourrais utiliser WFS. Mais il semble que WFS ne prenne pas les coordonnées des pixels en entrée. Je vais donc devoir traduire le pixel en coordonnées, ce qui peut être fait.
Cependant, dans ce cas, comment puis-je considérer le style du calque. Par exemple, pour une couche de points avec un grand rayon, l'utilisateur peut ne pas être en mesure de sélectionner les points même s'il clique à l'intérieur du point. Est-ce que j'ai raté quelque chose ?


Existe-t-il un moyen de dire à WMS GetFeatureInfo de récupérer tous les sommets ?

Non

Comme @user30184 le mentionne dans son commentaire :

GetFeatureInfo n'est pas prévu pour rendre les géométries dans leur précision d'origine mais principalement pour répondre à la question "Qu'est-ce qu'il y a ici sur une carte".

Un WMS est de par sa conception un moyen de présenter une représentation d'un ensemble de données sous forme de carte (souvent, vous obtenez différentes représentations des mêmes données lorsque vous effectuez un zoom avant ou arrière). UNEGetFeatureInfodemande agit sur les représentations cartographiques, que ce que les coordonnées X,Y (ou I,J) sont dans la demande.

Je pourrais utiliser WFS… Cependant, dans ce cas, comment puis-je considérer le style de la couche.

Un WFS vous donne toutes les données brutes (vectorielles), et une fois que vous les avez, vous pouvez les styliser comme vous le souhaitez.

Un WFS prend un paramètre de cadre de délimitation facultatif, comme vous le dites :

… Je vais devoir traduire le pixel en coordonnées, ce qui peut être fait.

Comme @ user30184 le mentionne également et que vous avez envisagé, vous pouvez obtenir l'identifiant de fonctionnalité (FID) du WMSGetFeatureInfodemander puis faire un WFSObtenirFonctiondemande précisant leID de fonctionnalitéparamètre, ou si votre service le prend en charge, en utilisant unGetFeatureByIdprocédure stockée.

Vous pouvez vérifier quelle requête stockée vous avez avec une requête telle que :

http://localhost:8080/geoserver/MyWorkSpace/wms?SERVICE=WFS&request=ListStoredQueries&version=2.0.0&

Ce qui donnerait une réponse comme :

  Obtenir la fonctionnalité par identifiant 

Une autre option serait de créer votre propre requête stockée


WMS et WFS ne s'excluent pas mutuellement !

Par exemple, cette carte des eaux pluviales de Glenorchy utilise WMS pour afficher les données et WFS pour afficher des informations sur les données.

Avec OpenLayers, vous pouvez obtenir LatLon à partir d'une valeur de pixel, il est donc très facile de lancer une requête WFS pour obtenir les données réelles.

De cette façon, vous pouvez styliser à l'aide de GeoServer et éditer à l'aide de WFS en même temps !


Voir la vidéo: Adding a WMS Web Map Service Link to ArcMap