Инструменты геообработки
Отдельная группа запросов для планировщика отвечает за создание задач на выполнение инструментов геообработки. Для создания такой задачи необходимо выполнить POST-запрос:
POST {host}/scheduler/tasks#type={taskType}
Content-Type: application/json
JSON-тело запроса зависит от вида вызываемого инструмента:
- Построение буферных зон
type=buffer
; - Построение зоны доступности
type=route
; - Выборка геометрией
type=filterCopy
; - Объединение геометрий
type=union
; - Геометрический оверлей
type=overlay
; - Агрегация
type=aggregate
.
Построение буферных зон type=buffer
Инструмент позволяет строить буферные зоны вокруг точек, линий и полигонов
JSON-параметры:
type
-buffer
. Обязательный параметр если задача входит в пайплайн.source
- описание исходного слоя, от которого будут построены буферные зоны. Обязательный параметр. Подробнее об описаниях ресурсов;target
- описание целевого слоя, в который будут загружены результирующие буферные зоны. Обязательный параметр;radii
- список/массив радиусов. В качестве радиуса может быть подано расстояние в метрах либо выражение на основе атрибутов слоя. Обязательный параметр;excludeInnerBuffers
- вырезать меньшие буферы из больших (true
илиfalse
). По умолчанию -false
. Позволяет создавать из буферов кольца. Указывается только если задано несколько радиусов для буферов.excludeSourcePolygon
- вырезать из получившегося буфера исходный полигон (true
илиfalse
). По умолчанию -false
. Используется только в случаях, когда буфер строится по полигональному слою;baseObjectIdAttributeName
- название атрибута, в котором будет записана ссылка на исходный объект в результирующем слое. По умолчанию -base_object
;radiusAttributeName
- название атрибута, в котором будет записан радиус буфера в результирующем слое. По умолчанию -buffer_radius
;idAttributeName
- название атрибута-идентификатора для результирующего слоя. По умолчанию -gid
;geometryAttributeName
- название атрибута геометрии для результирующего слоя. По умолчанию -geometry
;
Пример
Создадим буферные зоны точек, содержащихся в слое username.source_points
, с радиусом, указанным в атрибуте radius
:
POST {host}/scheduler/tasks#type=buffer
Content-Type: application/json
{
"source": {
"type": "layerTaskDataStorage",
"serviceName": "username.source_points"
},
"target": {
"type": "layerTaskDataStorage",
"serviceName": "username.buffer_zones",
"createNewService": true
},
"radii": [
"radius"
]
}
Построение зон доступности type=route
Инструмент позволяет строить зоны доступности (изохроны) входных точек с использованием дорожного графа.
JSON-параметры:
type
-route
. Обязательный параметр если задача входит в пайплайн.source
- описание исходного слоя, от объектов которого будут построены зоны доступности. Обязательный параметр. Подробнее об описаниях ресурсов;target
- описание целевого ресурса, в который будут загружены результирующие зоны доступности. Обязательный параметр;duration
- радиус зоны доступности (изохрона) в секундах. Может быть задана числом либо выражением на основе атрибутов исходного слоя. Обязательный параметр;providerType
- тип зоны доступности. “sp_walk” - пешеходная, “sp_car” - автомобильная. Обязательный параметр;durationAttributeName
- атрибут результирующего слоя, в который будет записано значение радиуса зоны доступности;routeCenterXAttributeName
- атрибут результирующего слоя, в который будет записано значение координаты X исходной точки;routeCenterYAttributeName
- атрибут результирующего слоя, в который будет записано значение координаты Y исходной точки;baseObjectIdAttributeName
- название атрибута, в котором будет записана ссылка на исходный объект в результирующем слое. По умолчанию -base_object
;idAttributeName
- название атрибута-идентификатора для результирующего слоя. По умолчанию -gid
;geometryAttributeName
- название атрибута геометрии для результирующего слоя. По умолчанию -geometry
;
Пример
Создадим зоны доступности точек, содержащихся в слое username.source_points
, с радиусом в минутах, указанным в атрибуте duration
:
POST {host}/scheduler/tasks#type=route
Content-Type: application/json
{
"source": {
"type": "layerTaskDataStorage",
"serviceName": "username.source_points"
},
"target": {
"type": "layerTaskDataStorage",
"serviceName": "username.access_zones",
"createNewService": true
},
"duration": "duration * 60",
"providerType": "sp_walk"
}
Внимание: радиус зоны доступности в таблице указан в минутах, а инструмент требует указывать его в секундах. Поэтому в выражении значение duration
было умножено на 60.
Выборка геометрией type=filterCopy
Инструмент позволяет выбирать объекты исходного слоя, которые пересекаются с объектами выбирающего слоя.
JSON-параметры:
type
-filterCopy
. Обязательный параметр если задача входит в пайплайн.source
- описание исходного слоя, объекты которого будут выбраны. Обязательный параметр. Подробнее об описаниях ресурсов;target
- описание целевого слоя, в который будут загружены выбранные объекты. Обязательный параметр;geometryFilterStorage
- описание слоя, содержащего объекты, по которым будет осуществлена выборка;reverseGeometryFilter
- обратить геометрический фильтр (true
илиfalse
). Еслиtrue
, то будут выбраны объекты, которые не пересекаются с объектами слоя для выборки;attributeMapping
- сопоставление атрибутов исходного и целевого слоя;condition
- выражение для атрибутивной фильтрации копируемых объектов;
Сопоставление атрибутов
attributeMapping
используется в случае, если в исходном и целевом слое названия одного или нескольких атрибутов не совпадают. attributeMapping
задаётся в виде JSON-объекта, где ключами являются названия атрибутов исходного слоя, а значениями - названия соответствующих им атрибутов целевого слоя:
{
"sourceAttr1": "targetAttr1",
"sourceAttr2": "targetAttr2",
"sourceAttr3": "targetAttr3",
}
Пример
Осуществим выборку исходных точек, содержащихся в слое username.source_points
. Выберем те точки, которые находятся за пределами полигонов, содержащихся в слое username.filter_polygons
POST {host}/scheduler/tasks#type=filterCopy
Content-Type: application/json
{
"source": {
"type": "layerTaskDataStorage",
"serviceName": "username.source_points"
},
"target": {
"type": "layerTaskDataStorage",
"serviceName": "username.selected_points",
"createNewService": true
},
"geometryFilterStorage": {
"type": "layerTaskDataStorage",
"serviceName": "username.filter_polygons",
},
"reverseGeometryFilter": true
}
Объединение геометрий type=union
Инструмент позволяет объединить пересекающиеся геометрии одного слоя
JSON-параметры:
type
-union
. Обязательный параметр если задача входит в пайплайн.source
- описание исходного слоя, объекты которого будут объединены. Обязательный параметр. Подробнее об описаниях ресурсов;target
- описание целевого слоя, в который будут загружены результирующие объединённые объекты. Обязательный параметр;
Пример
Объединим пересекающиеся полигоны в слое username.source_polygons
.
POST {host}/scheduler/tasks#type=union
Content-Type: application/json
{
"source": {
"type": "layerTaskDataStorage",
"serviceName": "username.source_polygons"
},
"target": {
"type": "layerTaskDataStorage",
"serviceName": "username.polygon_union",
"createNewService": true
}
}
Геометрический оверлей type=overlay
Инструмент позволяет совершать операции геометрического оверлея (объединение, пересечение, вычитание, симметрическая разность) над объектами двух слоёв.
JSON-параметры:
type
-overlay
. Обязательный параметр если задача входит в пайплайн.source
- описание исходного слоя, объекты которого будут объединены. Обязательный параметр. Подробнее об описаниях ресурсов;target
- описание целевого слоя, в который будут загружены результирующие объединённые объекты. Обязательный параметр;operation
- тип операции оверлея (обязательный параметр):union
- объединение;intersection
- пересечение;subtraction
- вычитание;symDifference
- симметрическая разность;
toolLayer
- описание слоя (толькоlayerTaskDataStorage
), который будет использоваться для оверлея. Для операции вычитанияsubtraction
геометрияtoolLayer
будет вычтена из геометрииsource
;
Пример
Вычтем из объектов слоя username.source_polygons
объекты слоя username.subtract_polygons
:
POST {host}/scheduler/tasks#type=overlay
Content-Type: application/json
{
"source": {
"type": "layerTaskDataStorage",
"serviceName": "username.source_polygons"
},
"target": {
"type": "layerTaskDataStorage",
"serviceName": "username.subtract_polygons",
"createNewService": true
},
"toolLayer": {
"type": "layerTaskDataStorage",
"serviceName": "username.overlay_polygons"
},
"operation": "subtraction"
}
Агрегация данных type=aggregate
Инструмент агрегации позволяет рассчитывать различные метрики на основе значений указанного атрибута объектов исходного слоя, попадающих в каждый полигон агрегирующего слоя.
JSON-параметры:
type
-aggregate
. Обязательный параметр если задача входит в пайплайн.source
- описание исходного слоя, объекты и атрибуты которого будут агрегированы. Обязательный параметр. Подробнее об описаниях ресурсов;target
- описание целевого слоя, в который будут загружены результирующие объединённые объекты. Обязательный параметр;geometry
- описание слоя, содержащего агрегирующие полигоны. Обязательный параметр;aggregationSettings
- список/массив JSON-объектов, содержащих параметры настроек агрегации. Каждый элемент списка отвечает за расчёт одного агрегированного атрибута:sourceAttributeName
- название атрибута исходного слоя, который будет агрегирован. Обязательный параметр;targetAttributeName
- название атрибута целевого слоя, в который будут записаны агрегированные значения. Обязательный параметр;aggregationFunction
- функция агрегации значений атрибута исходного слоя:Array
- возвращает массив, собранный из значений атрибутов объектов исходного слоя, попавших в каждый из полигонов;Min
- минимальное значение;Max
- максимальное значение;Avg
- среднее значение;Sum
- сумма;Extent
- WKB ограничивающего прямоугольника выборки объектов;Count
- количество непустых записей в указанном поле;TotalCount
- количество объектов (в том числе с пустыми атрибутами);DistinctCount
- количество уникальных значений атрибута;First
- первая запись в выборке объектов;Last
- последняя запись в выборке объектов;Median
- медиана выборки;Mod
- мода выборки;StdDeviation
- стандартное отклонение выборки;SumOfProduct
- сумма произведений основного и вспомогательного атрибута;WeightedAvg
- взвешенное среднее (вспомогательный атрибут используется как веса);DensityIndicators
- сумма значений атрибута на единицу площади полигона;DividedSum
- частное суммы основного и суммы вспомогательного атрибута;
additionalSourceAttribute
- название вспомогательного атрибута исходного слоя, используемого в некоторых видах функции агрегации. Обязательный параметр для функцийSumOfProduct
,WeightedAvg
,DividedSum
.
Пример
Рассчитаем сумму значений атрибута value
, а также его средневзвешенное значение по весам weights
на основе данных слоя username.data_points
в пределах полигонов слоя username.aggregation_polygons
.
POST {host}/scheduler/tasks#type=aggregate
Content-Type: application/json
{
"source": {
"type": "layerTaskDataStorage",
"serviceName": "username.data_points"
},
"target": {
"type": "layerTaskDataStorage",
"serviceName": "username.aggregation_result",
"createNewService": true
},
"geometry": {
"type": "layerTaskDataStorage",
"serviceName": "username.aggretaion_polygons"
},
"aggregationSettings": [
{
"sourceAttributeName": "value",
"targetAttributeName": "value_SUM",
"aggregationFunction": "Sum"
},
{
"sourceAttributeName": "value",
"targetAttributeName": "value_WAVG",
"additionalSourceAttribute": "weights",
"aggregationFunction": "WeightedAvg"
}
]
}