Взаимодействие с WFS сервисом в браузере

Для каждой операции, поддерживаемой совместимым WFS-сервером, предусмотрен онлайн-ресурс в виде унифицированного указателя информационного ресурса (URL) по протоколу HTTP, таким образом WFS-сервис следует считать REST-сервисом. С помощью параметров URL можно использовать эти операции для получения метаданных сервиса, информации о типе объектов и GML-кодированные объекты от сервиса WFS. Эти операции и параметры подробно описаны в спецификации OGC WFS.

Типы клиентов

Сервисы WFS могут использоваться в любом клиенте, поддерживающем WFS. Чаще всего браузер — самый простой клиент сервиса WFS. Запросы WFS можно отправлять по протоколу HTTP, а ответы или исключения будут возвращаться через браузер. Все сервисы WFS поддерживают три операции: GetCapabilities, DescribeFeatureType и GetFeature.

Также доступно большое количество клиентов сторонних производителей для работы с сервисами WFS. Для использования сервисов WFS клиент должен поддерживать WFS 1.0.0 или 1.1.0 и профиль Simple Features GML. Кроме того, ArcGIS for Desktop может работать с сервисами WFS. Об использовании сервисов WFS в ArcMap см. раздел Как работать с WFS, используя ArcGIS for Desktop.

Структура URL WFS

Для подключения к сервису необходимо знать URL, который использует следующий формат:

http://gisserver.domain.com:6080/arcgis/services/<имя папки (если необходимо)>/<имя сервиса>/<тип сервиса>/WFSServer?

Так, если включена функция WFS для картографического сервиса WFSDemoService в папке DemoFolder на сервере gisserver.domain.com с портом 6080, то URL будет выглядеть следующим образом:

http://gisserver.domain.com:6080/arcgis/services/DemoFolder/WFSDemoService/MapServer/WFSServer?request=GetCapabilities

Аналогично, если вы включили функциональность WFS для сервиса геоданных, URL будет выглядеть следующим образом:

http://gisserver.domain.com:6080/arcgis/services/DemoFolder/WFSDemoService/GeoDataServer/WFSServer?

Использование фильтров

Параметр Filter можно использовать в запросах WFS для получения определенных объектов от сервиса WFS. Преимущество параметра Filter состоит в том, что это часть стандартной пары ключевого слова и значения, определенной в разделе 9.5 спецификации реализации WFS 1.1, и его можно добавлять в конец запросов HTTP. Сервисы WFS используют спецификацию реализации кодирования OGC OpenGIS (FE) версии 1.1.

Далее представлены фильтры, которые можно применять:

Geometry

Spatial

Логические

Comparison

Сортировать (Sort)

Конверт (Envelope)

BBOX

And

EqualTo

SortBy*

Точки

Равно (Equals)

Or

NotEqualTo

Мультиточка

Disjoint

Not

LessThan

LineString

Пересекает

GreaterThan

Полигоны

Пересекает

LessThanOrEqualTo

Касается

GreaterThanOrEqualTo

Радиус поиска

Like

Содержит

Между

Перекрытия

NullCheck

ПримечаниеПримечание:

*Фильтр SortBy можно применять только к сервисами WFS, основанным на данным в базе геоданных ArcSDE.

Например, если вы создали тип объекта blockgroups в сервисе WFS, вы можете запросить объекты blockgroups с экстентом -122.423192682619, 37.7877919206256, -122.421377806544, 37.7893634225143, отправив следующий запрос GetFeature:

http://gisserver.domain.com:6080/arcgis/services/playground/sanfrancisco_wfs/MapServer/WFSServer?service=WFS&request=GetFeature&version=1.1.0&typename=esri:blockgroups&Filter=<ogc:Filter><ogc:BBOX><ogc:PropertyName>Shape</ogc:PropertyName><gml:Box srsName="urn:x-ogc:def:crs:EPSG:4326"><gml:coordinates>37.7877919206256,-122.423192682619 37.7893634225143,-122.421377806544</gml:coordinates></gml:Box></ogc:BBOX></ogc:Filter>

Если вы хотите запросить объект blockgroups, содержащий определенный точечный объект, например 122.431577, 37.749936, можно отправить следующий запрос GetFeature:

http://gisserver.domain.com:6080/arcgis/services/playground/sanfrancisco_wfs/MapServer/WFSServer?service=WFS&request=GetFeature&version=1.1.0&typename=esri:blockgroups&Filter=<ogc:Filter><ogc:Contains><ogc:PropertyName>Shape</ogc:PropertyName><gml:Point srsName="urn:x-ogc:def:crs:EPSG:4326"><gml:pos srsName="urn:x-ogc:def:crs:EPSG:4326">37.749936 -122.431577</gml:pos></gml:Point></ogc:Contains></ogc:Filter>

ПримечаниеПримечание:

Спецификация WFS требуется, что префиксы пространства имен были включены в строку XML фильтра. Кроме того, чтобы избежать неправильного преобразования браузерами или веб-серверами, URL кодирует строку XML фильтра перед ее отправкой на сервер.

Использование сервиса WFS в браузере

Далее представлены примеры использования параметров URL для работы с сервисом WFS в браузере:

GetCapabilities

Этот запрос возвращает все типы объектов и функции, доступные через сервис, в формате GML. Чтобы использовать операцию GetCapabilities, скопируйте и вставьте URL сервиса WFS в адресную строку и добавьте ?request=getcapabilities в конец URL.

Пример URL: http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=GetCapabilities

На следующем рисунке представлен пример функциональности, возвращаемой операцией GetCapabilities:

Функциональность, возвращаемая операцией GetCapabilities

GetCapabilities также возвращает список всех доступных классов и таблиц объектов:

Доступные классы и таблицы объектов, возвращаемые операцией GetCapabilities

DescribeFeatureType

Этот запрос описывает сведения о полях одного или нескольких объектов в сервисе WFS. К ним относятся имена полей, типы полей, разрешенные минимальные и максимальные значения полей и другие ограничения, заданные для поля классов или таблиц объектов.

Чтобы использовать операцию DescribeFeatureType, скопируйте и вставьте URL сервиса WFS в адресную строку и добавьте ?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&VERSION=1.1.0 в конец URL. Этот запрос возвращает сведения о полях каждого типа объектов и таблиц, доступных в сервисе.

Пример URL: http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&VERSION=1.1.0

Классы объектов, таблицы и сведения о полях, возвращаемые операцией DescribeFeatureType

Добавление фильтров

Вы также можете указать один класс объектов или одну таблицу, для которой требуется получить сведения о полях, добавив следующий запрос в конец URL с именем типа объекта или таблицы:

?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=<тип_объекта>&VERSION=1.1.0

В следующем примере запрос DescribeFeatureType используется для определения информации о полях для типа объектов cities.

пример URL: http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=cities&VERSION=1.1.0

Класс объектов Cities и сведения о его полях, возвращаемые отфильтрованной операцией DescribeFeatureType

GetFeature

Этот запрос возвращает информацию об определенных типах объектов, доступных через сервис WFS.

Чтобы использовать операцию GetFeature в браузере, скопируйте и вставьте URL сервиса WFS в адресную строку и добавьте ?request=getFeature&typename=<тип_объекта> в конец URL. Этот запрос возвращает сведения об атрибутах и геометрии каждого объекта или каждой строки в типе объектов.

Пример URL: http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities

Сведения об атрибутах и геометрии для класса объектов Cities, возвращаемые операцией GetFeature

Добавление фильтров

Вы также можете добавить в запрос фильтры, чтобы уточнить возвращаемые результаты. Например, можно запросить все города, попадающие в указанный диапазон координат. В примере ниже два города попадают в указанный диапазон координат:

Пример URL: http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities&BBOX=46.90,-76.21,42.12,-72.88

Города, попадающие в указанный диапазон координат и возвращаемые фильтрованной операцией GetFeature

Работа с параметром FeatureID

Параметр FeatureID можно использовать в запросах GetFeature для получения определенных объектов от сервиса WFS. Параметр FeatureID состоит из типа объекта и ID объекта (gml:id), но не идентификатора объекта (OBJECTID). Формат ID объекта в сервисе WFS: <тип_объекта>.<gml:id>. Один из методов определения gml:id объекта в сервисе WFS — выполнить запрос GetFeature для интересующего типа объекта.

ПримечаниеПримечание:

gml:ids не предоставляются для объектов в сервисах WFS, основанных на шейп-файлах.

Допустим, что в сервисе WFS есть тип объекта Cities. Если выполнить запрос GetFeature для Cities, ответ будет содержать gml:id для каждого объекта.

Пример URL: http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities

Запрос GetFeature

В этом примере ID объекта для Ванкувера будет иметь значение cities.F293__1. Следующий запрос можно использовать для запроса города Ванкувер с помощью ID объекта:

http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&featureid=cities.F293__1

5/16/2014