Возвращать только NumberOfFeatures в запросе WFS

11

Я выполняю запрос GetFeature WFS в GeoServer (ищу объекты в многоугольнике), но все, что я на самом деле хочу, это общее количество объектов. Есть ли способ просто вернуть эту информацию (в надежде, что запрос будет выполняться немного быстрее), а не все записи?

Запрос возвращает более 10000 функций, поэтому я надеюсь, что это будет иметь значение, если это возможно.

user8262
источник

Ответы:

12

Вы можете установить для параметра resultType значение «совпадения», и вы получите количество объектов в запросе, аналогичное функции count () в SQL.

Пример запроса HTTP HTTP:

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

Пример HTTP-запроса с фильтром:

<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
источник
Спасибо, таудорф - это сработало. Интересно, что время поиска (запуск поиска непосредственно в геосервере) заняло 18 секунд - в отличие от 41 секунды при возврате только одного поля на объект.
user8262
5

При условии, что вы используете WFS 1.1, вы можете установить resultype = совпадения, и это будет возвращать только количество записей, соответствующих вашему запросу.

Я не могу вспомнить, вернул ли GeoServer это значение на 1.0, но стандарт не поддерживает его.

Ян Тертон
источник