Renvoie uniquement NumberOfFeatures dans une requête WFS

11

J'exécute une requête GetFeature WFS dans GeoServer (à la recherche d'entités dans un polygone) mais tout ce que je veux en fait, c'est le nombre total d'entités. Existe-t-il un moyen de simplement renvoyer ces informations (dans l'espoir que la requête s'exécute un peu plus rapidement) plutôt que tous les enregistrements?

La requête renvoie plus de 10 000 fonctionnalités, donc j'espère que cela fera une différence si possible.

user8262
la source

Réponses:

12

Vous pouvez définir le paramètre resultType sur "hits" et vous obtiendrez le nombre de fonctionnalités dans la requête similaire à la fonction count () dans SQL.

Exemple de requête HTTP Get:

http://localhost:8080/geoserver/wfs?request=GetFeature&typeName=topp:states&version=1.1.0&resultType=hits

Exemple de requête HTTP Post avec un filtre:

<wfs:GetFeature service="WFS" version="1.1.0"
  resultType="hits"
  xmlns:topp="http://www.openplans.org/topp"
  xmlns:wfs="http://www.opengis.net/wfs"
  xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.opengis.net/wfs
                      http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd">
  <wfs:Query typeName="topp:states">
    <ogc:Filter>
       <ogc:FeatureId fid="states.3"/>
    </ogc:Filter>
    </wfs:Query>
</wfs:GetFeature>
taudorf
la source
Merci taudorf - cela a fonctionné un régal. Fait intéressant, le temps de recherche (exécution de la recherche directement dans le géoserveur) a pris 18 secondes - contre 41 secondes lors du retour d'un seul champ par fonctionnalité.
user8262
5

Si vous utilisez WFS 1.1, vous pouvez définir resultype = hits et cela ne renverra que le nombre d'enregistrements correspondant à votre requête.

Je ne me souviens pas si GeoServer a de nouveau porté cela à 1.0 mais la norme ne le prend pas en charge.

Ian Turton
la source