Протоколы передачи данных WMTS и WFS#

Протокол WMTS#

API Jet использует версию протокола WMTS – 1.0.0.

Передать внешней системе можно только кэшируемые слои. Для этого на GeoServer выберите необходимый слой для передачи и в его настройках установите «Создать кэшируемый слой для этого слоя».

Запрос GetCapabilities

Операция GetCapabilities запрашивает информацию об операциях, службах и данных, которые предлагает сервис WMTS.

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

https://{APIURL}/api/jet/v1/{schemeId}/gwc/service/wmts?version=1.0.0&request=GetCapabilities&service=wmts

Где:

  • APIURL – хост сервиса API Jet;

  • jet – имя сервиса;

  • v1 – версия API Jet;

  • schemeId – алиас проекта;

  • request – значение этого параметра всегда должно быть «GetCapabilities».

Пример ответа на запрос GetCapabilities

Посмотреть

Запрос GetTile

Запрос GetTile позволяет клиенту получить тайл необходимого слоя. Алиас GLV указывается в запросе. Для передаваемого слоя должно быть настроено кэширование тайлов на GeoServer.

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

https://{APIURL}/api/jet/v1/{schemeId}/wmts?service=WMTS&version=1.0.0&request=GetTile&layer=GeoTopoGidrogrArea&tilematrixset=EPSG:3857&tilematrix=EPSG:3857:7&tilerow=20&tilecol=40&format=image/png

Где:

  • APIURL – хост сервиса API Jet;

  • jet – имя сервиса;

  • v1 – версия API Jet;

  • schemeId – алиас проекта;

  • GeoTopoGidrogrArea – алиас GLV;

  • EPSG:3857 – имя геосетки;

  • format – формат передачи данных (др.форматы доступны в ответе GetCapabilities);

  • tilematrixset – геосетка;

  • tilematrix – название матрицы с масштабом (например, EPSG:3857:7)

  • tilerow – индекс строки матрицы;

  • tilecol – индекс столбца матрицы.

Примечание

Посмотреть масштаб геосетки и количество tilerow и tilecol соответствующих масштабу можно в результате на запрос GetCapabilities.

Пример ответа на запрос GetTile

Посмотреть

Пример REST запроса GetTile:

https://{APIURL}/api/jet/v1/{schemeId}/wmts/rest/GeoTopoGidrogrArea/EPSG:3857/EPSG:3857:7/19/40?format=image/png

Где:

  • APIURL – хост сервиса API Jet;

  • jet – имя сервиса;

  • v1 – версия API Jet;

  • schemeId – алиас проекта;

  • GeoTopoGidrogrArea – алиас GLV;

  • EPSG:3857 – имя геосетки;

  • EPSG:3857:7 – название матрицы с масштабом;

  • 19 – индекс строки матрицы;

  • 40 – индекс столбца матрицы.

  • format – формат передачи данных (др.форматы доступны в ответе GetCapabilities).

Пример ответа на REST запрос GetTile

Посмотреть

Протокол WFS#

API Jet использует версию протокола WFS – 2.0.0. Вместе с векторными данными передаются семантические данные — это простые поля из LV/LT, ключ объекта и фулнейм. Если поле является ссылочным, то передается ключ объекта, на который ведет ссылка из этого поля. Векторные данные передаются в системе координат, которая указана на GeoServer.

Запрос GetCapabilities

Операция GetCapabilities запрашивает информацию об операциях, службах и данных, которые предлагает сервис WFS.

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

https://{APIURL}/api/jet/v1/{schemeId}/gwc/service/wfs?service=wfs&version=2.0.0&request=GetCapabilities

Где:

  • APIURL – хост сервиса API Jet;

  • jet – имя сервиса;

  • v1 – версия API Jet;

  • schemeId – алиас проекта;

  • service – имя службы (значение wfs);

  • request – значение этого параметра всегда должно быть «GetCapabilities».

Пример ответа на запрос GetCapabilities

Посмотреть

Запрос DescribeFeatureType

Запрос позволяет клиенту получить описание слоя, прежде чем запрашивать фактические данные.

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

https://{APIURL}/api/jet/v1/{schemeId}/wfs?service=wfs&version=2.0.0&request=DescribeFeatureType&typeNames=GeoTopoGreen,

Где:

  • APIURL – хост сервиса API Jet;

  • jet – имя сервиса;

  • service – имя службы (wfs);

  • version – версия службы;

  • request – вид запроса;

  • typeNames – алиас GLV для получения описания

  • propNamesSource/Jet-Prop-Names-Source – получение наименования полей в виде алиасов. Получить в ответе на запрос DescribeFeatureType названия полей в виде алиасов можно 2 способами:

    1. Указать в URL query-параметр propNamesSource со значением alias.

    2. Указать в Headers заголовок Jet-Prop-Names-Source со значением alias.

    Если ни одно из условий не выполнено, то названия полей будут получены в виде наименования полей в Системе.

Пример ответа на запрос DescribeFeatureType

Посмотреть

Процесс выполнения запроса:

  1. Из входящего запроса из параметра строки запроса typeNames извлекается алиас GLV. По алиасу ищутся в таблице ClientLayer схемы Jet имя слоя геосервера. Найденное значение имени слоя подставляется как значение typeNames в новом запросе к геосерверу.

  2. По найденному имени слоя геосервера ищется url-адрес геосервера. И строится новый запрос по протоколу wfs к методу DescribeFeatureType.

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

http://10.4.1.178:8093/geoserver/{schemeId}/wfs?service=wfs&version=2.0.0&request=DescribeFeatureType&typeNames=kazan:kazan_geo_topo_gidrogr_area
  1. Остальные параметры строки запроса передаются без изменений.

Геосервер отвечает в xml формате. Ответ содержит xsd – схему, которая описывает тип feature, запрошенной в параметре typeNames.

  • В узле <xsd:element></xsd:element>, расположенного непосредственно в узле <xsd:schema></xsd:schema>, атрибут name заменяется на алиас GLV. Этот узел описывает наименование feature.

  • В узле <xsd:element></xsd:element>, расположенного непосредственно в узле <xsd:sequence>, атрибут name заменяется на алиас логического поля GLV, вместо наименования поля. Этот узел описывает имена свойств feature. Так же остаются только те узлы <xsd:element></xsd:element>, для которых существуют поля в GLV. Остальные удаляются.

Запрос GetFeature

Запрос позволяет получить данные слоя.

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

https://{APIURL}/api/jet/v1/{schemeId}/wfs?service=wfs&version=2.0.0&request=GetFeature&outputFormat=json&typeNames=GeoTopoGidrogrArea&count=2

Где:

Обязательные параметры запроса:

  • APIURL – хост сервиса API Jet;

  • jet – имя сервиса;

  • v1 – версия API Jet;

  • service – имя службы (wfs);

  • version – версия службы;

  • request – вид запроса;

  • typeNames – алиас GLV для получения данных.

Дополнительные параметры запроса:

  • outputFormat – получение данных в необходимом формате (поддерживается json);

  • count – получение необходимого количества feature;

  • propNamesSource/Jet-Prop-Names-Source – получение наименования полей в виде алиасов. Получить в ответе на запрос GetFeature названия полей в виде алиасов можно 2 способами:

  1. Указать в URL query-параметр propNamesSource со значением alias.

  2. Указать в Headers заголовок Jet-Prop-Names-Source со значением alias.

Если ни одно из условий не выполнено, то названия полей будут получены в виде наименования полей в Системе.

Пример ответа на запрос GetFeature

Посмотреть

CQL-фильтр#

CQL позволяет выполнять сложные запросы, включая запросы с использованием логических операторов, сравнения и функций. Он может быть использован для поиска данных в каталоге геопространственных данных, таких как карты, изображения и другие геоданные.

API Jet может работать с CQL-фильтром только по протоколу WFS.

При работе с CQL-фильтром необходимо использовать алиасы полей, а не их наименования в Системе.

Для использования CQL-фильтра необходимо добавить параметр &cql_filter= и указать требуемое условие. Параметр cql_filter возможно использовать только в запросе GetFeature.

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

https://jet-marvel-isogd.gemsdev.ru/api/jet/v1/kazan/wfs?service=wfs&version=2.0.0&request=GetFeature&outputFormat=json&typeNames=GeokznZUConclusion&count=1&featurePropNames=alias&cql_filter=FullName='Анализ по ЗУ'

Есть возможность указать BBOX внутри cql-фильтра:

https:/{APIURL}/api/jet/v1/{schemeId}/wfs?service=wfs&version=2.0.0&request=GetFeature&outputFormat=json&typeNames={AliasGLV}&cql_filter=BBOX(Geometry,{дМин,шМин,дМакс,шМакс})&propNamesSource=alias

Где:

  • APIURL – хост сервиса API Jet;

  • schemeId – алиас проекта;

  • AliasGLV – алиас GLV для получения данных;

  • дМин,шМин,дМакс,шМакс - координаты двух точек ограничивающего прямоугольника (долгота, широта левой нижней и долгота, широта правой верхней) в десятичных градусах в системе координат EPSG:4326.

Важно

Работа с QGIS

QGIS не может обработать cql-фильтр по протоколу WFS, поскольку QGIS автоматически указывает параметр BBOX в запросе. А для протокола WFS использование CQL-фильтра и BBOX несовместимо.