ORBISmap REST API v2.4
ORBISmap REST API позволяет взаимодействовать с картами, слоями и объектами внутри ORBISmap. Вы можете использовать ORBISmap REST API для создания, изменения или удаления карт, слоёв и объектов или для построения выборок данных опубликованных карт для того, чтобы использовать их на Вашем web-сайте или в Вашем приложении.
Доступные функции
- Аутентификация
- Работа с картой
- Работа со слоями
- Работа со структурой слоя
- Работа с данными слоя
- Работа с объектами слоя
- Работа с файлами
- Поиск
- Запрос изображений
- Запрос тайлов
- Обработка ошибок
- Changelog
- Версии API
Пример использования ORBISmap REST API
С примером взаимодействия с ORBISmap REST API можно ознакомиться здесь.
Описание параметров
Описание параметров функций API, участвующих в URL запроса
project_code
- код каталогаmap_code
- код карты (совпадает с названием схемы PgSQL)layer_code
- код слоя (совпадает с названием таблицы PgSQL)field_id
- ID колонки структуры слояobject_id
- ID объекта (совпадает со значением колонки orbis_id в таблице PgSQL)file_id
- ID файлаfile_uuid
- uuid файла
Сервер принимает GET
,POST
,PUT
,PATCH
,DELETE
запросы.
Обратиться можно только к карте, для которой включена публикация. С учётом прав доступа и активной сессии.
Все функции редактирования данных в обязательном порядке требуют предварительной авторизации.
Код каталога (project
) выводится в верхней панели в строке навигации первым элементом.
На рисунке ниже project
="oms_tests_docker"
Если указан код несуществующего каталога, то сервер вернет ошибку со статусом 500
. Подробнее про описание ошибок.
Описание дополнительных необязательных параметров всех функций API
f
=json
,pdf
,fjson
: формат ответа (по умолчанию json);pdf
доступен исключительно для функции получения информации по объекту;fjson
позволяет форматировать выводимые данные согласно настройкам форматированияlng
=<код языка>
: указывает код языка для запроса. Если не указан, запрашивается основной язык карты. Язык учитывается в названиях контейнеров и колонок. При этом коды колонок и служебные константы имени сущностей (name
) будут приходить без суффиксов кода языка и без них же должны отсылаться на сервер.
Аутентификация
Аутентификация на проекте
POST http://<host>/api/2.4/<project_code>/login/
Здесь и далее считается, что за авторизованную сессию отвечает только параметр token. Он выдается как результат функции аутентификации и является идентификатором сессии. Сессия хранится на сервере в течении 10 минут после последнего запроса с ее участием, после чего автоматически уничтожается. Идентификатор сессии необходим при выполнении любых операций создания/изменения/удаления с использованием REST API. Для этого идентификатор сессии нужно передать в параметре token запроса. Результат выполнения любых операций REST API (как получения, так и изменения) зависит от настроек прав доступа пользователей в OMS. Если token не передан в функцию, результат будет зависеть от настроек прав доступа публичного пользователя, иначе - от настроек прав доступа пользователя, определяемого переданным token.
Обязательные параметры запроса:
user
- логин пользователяpass
- пароль пользователя
Ответ
{
"token": "Токен авторизации"
}
Если указан несуществующий логин или не верный пароль для существующего логина, то сервер вернет ошибку со статусом 403
. Подробнее про описание ошибок.
Проверка авторизации
GET http://<host>/api/2.4/<project_code>/authorized/
Обязательные параметры запроса:
token
- идентификатор сессии
Ответ
True
Если пользователь авторизован в системе администрирования (но не через API), или не авторизован - вернет False
Завершить авторизованную сессию
POST http://<host>/api/2.4/<project_code>/logout/
Обязательные параметры запроса:
token
- идентификатор сессии
Ответ
{
"token": ""
}
Работа с картой
Публичная карта отображает результат настройки карты в конструкторе интерфейсов
Создать карту
Созданные через API карты автоматически публикуются. Что такое опубликованная карта описано в разделе Публичная карта
Для выполнения запроса необходим токен авторизации.
POST http://<host>/api/2.4/<project_code>/
- параметры создаваемой карты передаются в формате json в теле запроса:
{
"code": "new_map",
"name": "Новая карта",
"css_style": "CartoCSS-стиль отображения карты - подложка для рисования слоев"
}
Где:
- code
(обязательный) - код создаваемой карты.
- name
(необязательный) - имя карты. Если не указано, то не будет заполнено.
- css_style
(необязательный) - CartoCSS-стиль отображения карты. Если не указан, то будет использован стиль отображения по умолчанию.
Ответ
Структура ответа на создание объекта карты соответствует ответу на запрос получения объекта карты.
Получить объект карты
GET http://<host>/api/2.4/<project_code>/<map_code>/
Здесь и далее считается, что в случае, если карта не опубликована и пользователь не авторизовался, система вернет ошибку доступа со статусом 403
. Подробнее про описание ошибок.
Ответ
{
"id": 1,
"code": "map1",
"name": "Карта 1",
"css_style": "CartoCSS-стиль отображения карты - подложка для рисования слоев",
"group_layers": 0,
"has_publication": true
}
Где:
id
- идентификатор карты.code
- код карты.name
- имя карты. Если не указано, то не будет заполнено.css_style
- CartoCSS-стиль отображения карты.group_layers
- Тип отображения карты. 0 - несколькими слоями. 1 - единым слоемhas_publication
- Признак публикации карты. Если значение равноtrue
- карта доступна для просмотра без авторизации.
Если указан код несуществующей карты, то сервер вернет ошибку со статусом 404
. Подробнее про описание ошибок.
Получить дерево слоев
Для чего используется дерево слоев публикации описано в подразделе Виджет “Список слоёв” раздела Конструктор публикаций.
GET http://<host>/api/2.4/<project_code>/<map_code>/layers/
Необязательные параметры запроса:
type
:full
- получить полное дерево слоёв с иерархией и порядком для отрисовкиpublish
(по умолчанию) - получить "дерево публикации"
returnBbox
:1
- включить в ответ габариты (Bounding Box) слоя0
(по умолчанию) - не включать в ответ габариты слоя
returnCss
:1
- включить в ответ CSS стили слоя0
(по умолчанию) - не включать в ответ CSS стили слоя
bboxSR
- spatial reference для габаритов объекта в формате EPSG. Возможные значения:4326
(значение по умолчанию) и3857
. Данный параметр учитывается и при фильтрации по BBOX.
Ответ
[
{
"id": 1,
"type": "layer",
"code": "layer1",
"name": "Слой 1",
"sort": 1,
"bbox": {
"sw" : [Lat, Lon],
"ne" : [Lat, Lon]
},
"parent_id": 0,
"selected": false,
"map_layer_id": 1,
"icon": "static/path/icon.png",
"icon_retina": "static/path/icon.png",
"g_type": "Point|LineString|Polygon|Unknown",
"render_type": 0,
},
...
]
При запросе "дерева публикации" (значение параметра type
= publish
) в ответ попадут только опубликованные слои.
При запросе полного дерева (значение параметра type
= full
) в ответ попадут все слои текущей карты.
Если указан код несуществующей карты, то сервер вернет ошибку со статусом 404
. Подробнее про описание ошибок.
Ответ
Структура каждого элемента в ответе на запрос дерева слоев соответствует ответу на запрос получения объекта слоя карты, за исключением элементов с типом folder
, которые являются папками.
Сохранить дерево публикации
Дерево слоев публикации - это наполнение виджета “Список слоёв”
Для выполнения запроса необходим токен авторизации.
POST http://<host>/api/2.4/<project_code>/<map_code>/publish/
Формат запроса:
[
{
"id": 1,
"sort": 1,
"parent_id": 0,
"selected": true,
"map_layer_id": 1,
"icon": "static/path/icon.png",
"icon_retina": "static/path/icon.png",
},
{
"id": 2,
"sort": 1,
"parent_id": 1,
"selected": true,
"map_layer_id": 2,
"icon": "static/path/icon.png",
"icon_retina": "static/path/icon.png",
},
{
"id": 3,
"sort": 2,
"parent_id": 1,
"selected": true,
"map_layer_id": 3,
"icon": "static/path/icon.png",
"icon_retina": "static/path/icon.png",
},
...
]
Где:
id
(обязательный) - уникальный идентификатор элемента дерева публикации. Используется в свойствеparent_id
дочерних элементов для создания древовидности.sort
(необязательный) - сортировка слоя в дереве публикации.parent_id
(обязательный) - идентификатор (id
) родительского элемента. 0 указывает на корень дерева.selected
(необязательный) - флаг, включен ли элемент по умолчанию в дереве публикации, значение по умолчанию =true
.map_layer_id
(обязательный) - идентификатор слоя в системе (векторный/растровый/виртуальный), на основе которого создается элемент дерева.icon
(необязательный) - иконка для отображения элемента на карте.icon_retina
(необязательный) - иконка для отображения элемента на карте для дисплеев с высокой плотностью точек.
Ответ
Формат ответа совпадает с функцией Получить дерево слоев с параметрами по умолчанию.
Получение начальных настроек публичной карты.
GET http://<host>/api/2.4/<project_code>/
Формат запроса:
{
"map_code": "new_map",
}
Полученный файл конфигурации инициализирует первоначальную работу ORBISmap JS API
Работа со слоями
Слой карты содержит объекты с геопространственными данными и должен принадлежать карте. Слои бывают нескольких типов:
Векторный слой
- У векторного слоя значение поляtype
=layer
.Виртуальный слой
- У виртуального слоя значение поляtype
=virtual
.Растровый слой
- У растрового слоя значение поляtype
=raster
.
Так же, слои карты, по типу геопространственных данных подразделяются на:
Point
- содержит геопространственные данные, представляющие собой точки на карте. Значение поляg_type
=Point
LineString
- содержит геопространственные данные, представляющие собой линии на карте. Значение поляg_type
=LineString
Polygon
- содержит геопространственные данные, представляющие собой полигоны на карте. Значение поляg_type
=Polygon
Unknown
- содержит геопространственные данные, представляющие собой любой из вышеперечисленных типов геопространственных данных на карте. Значение поляg_type
=Unknown
Создать слой
Для выполнения запроса необходим токен авторизации.
POST http://<host>/api/2.4/<project_code>/<map_code>/layers/
- параметры создаваемого слоя в json-формате должны передаваться в теле запроса:
{
"code": "new_layer",
"localized_name": true,
"name": "Имя",
"parent_id": 2,
"sort": 3.5,
"css_style": "CartoCSS-стиль отображения слоя"
}
Где:
- `code` (*необязательный*) - код создаваемого слоя. Если не указан, то будет сгенерирован автоматически.
- `localized_name` (*необязательный*) - флаг, локализовать ли название слоя. Значение по умолчанию = `false`.
- `name` (*необязательный*) - имя слоя. Если не указано, то не будет заполнено.
- `parent_id` (*необязательный*) - идентификатор родительского контейнера (`карта/папка`), в котором будет находиться слой в дереве. По умолчанию слой будет создаваться непосредственно в указанной (в url-пути) карте.
- `sort` (*необязательный*) - значение сортировки для создаваемого слоя. Если параметр не указан, то по умолчанию слой будет добавлять последним для указанного `parent_id`. *При изменении сортировки сервер выполнит пересортировку всех элементов в пределах указанного `parent_id`, в результате чего значение сортировки для каждого контейнера будет целочисленным.*
- `css_style` (*необязательный*) - CartoCSS-стиль отображения слоя. В случае отсутствия значения будет использован стиль отображения по умолчанию.
Ответ
Структура ответа на запрос создания слоя соответствует ответу на запрос получения объекта слоя карты.
Если указан несуществующий идентификатор родительского контейнера, или родительский контейнер принадлежит другой карте, то сервер вернет ошибку со статусом 404
.
Если указан не валидный CartoCSS-стиль отображения слоя, то сервер вернет ошибку со статусом 500
. Подробнее про описание ошибок.
Получить слой карты
GET http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/
Ответ
{
"id": 1,
"type": "layer",
"code": "layer1",
"name": "Слой 1",
"sort": 1,
"bbox": {
"sw" : ["Lat", "Lon"],
"ne" : ["Lat", "Lon"]
},
"parent_id": 0,
"selected": false,
"map_layer_id": 1,
"icon": "static/path/icon.png",
"icon_retina": "static/path/icon.png",
"g_type": "Point|LineString|Polygon|Unknown",
"css_style": "CartoCSS-стиль отображения слоя",
"render_type": 0,
"style_mode": 1
}
Где:
id
- уникальный идентификатор слоя. Используется в свойстве parent_id дочерних элементов для создания древовидности.type
- тип слоя. В данном случае, т.к. запрашивался слой карты, значение будет "layer".code
- код слоя. Уникален для всех слоев в пределах карты.name
- имя слоя. Может не иметь значения. Если значение не заполнено, то отображаться будет код карты.sort
- значение сортировки слоя в дереве.bbox
- значение габарита слоя в проекции EPSG:4326.parent_id
- идентификатор родительского контейнера (карта/папка
), в котором находится слой в дереве.selected
- признак, включен ли слой для отображения содержащихся в нем геопространственных данных на карте.map_layer_id
- уникальный идентификатор слоя - имеет тоже значение, что и свойствоid
и используется для совместимости с более старыми версиями.icon
- иконка для отображения элемента на карте.icon_retina
- иконка для отображения элемента на карте для дисплеев с высокой плотностью точек.g_type
- тип геопространственных данных слоя.css_style
- CartoCSS-стиль отображения слоя.render_type
- определяет тип отрисовки слоя:0
- отрисовка растром на сервере.1
- отрисовка вектором на клиенте.
style_mode
- определяет тип стиля отображения слоя:0
- тип не задан.1
- простой стиль.2
- CartoCSS3
- визуализация.
Описанный выше ответ может отличаться от реального в следующих случаях:
- запрашиваемый слой является виртуальным, тогда:
- измениться значение поля
type
с "layer" на "virtual"
- измениться значение поля
- запрашиваемый слой является визуализацией, тогда:
- добавиться поле
visualSettings
, значением которого будет объект json, описывающий настройки визуализации.
- добавиться поле
На данный момент существует 7 типов визуализаций:
{
"...": "...",
"visualSettings": {
"id": 16,
"type": 1,
"column": 5274,
"columnCode": "population",
"algorithm": 3,
"classesCount": 9,
"classesSettings": {
"opacity": 80,
"lineWidth": 1.0,
"midColor": "#00bfaf",
"linePattern": 1,
"minColor": "#ffffcc",
"maxColor": "#002080"
},
"pointSettings": {
"size": 10.0,
"allowOverlap": true,
"sizeEnabled": false
},
"showBorder": true,
"borderSettings": {
"opacity": 100,
"pattern": 1,
"width": 1.0,
"color": "#FFFFFF"
},
"showText": true,
"textSettings": {
"fontSize": 12.0,
"halo": true,
"haloOpacity": 100,
"fontOpacity": 100,
"fontFamily": "Arial Bold",
"allowOverlap": false,
"haloWidth": 1.0,
"haloColor": "#ffffff",
"column": "orbis_id",
"fontColor": "#000000",
"textOffset": 10.0,
"offsetEnabled": false
},
"showLegend": true,
"showLegendName": true,
"legendName": "Тематическая карта [mir]",
"legendNames": [
{
"ru": "Тематическая карта [mir]"
},
{
"fr": ""
},
{
"en": ""
}
],
"showValues": false
}
}
Где:
id
- уникальный идентификатор настроек визуализации.type
- тип визуализации.column
- уникальный идентификатор колонки, по значениям которой строится визуализация.columnCode
- код колонки, по значениям которой строится визуализация.algorithm
- алгоритм распределения:- 1 - Равные интервалы.
- 2 - Квантили.
- 3 - Естественные границы.
classesCount
- количество классов.classesSettings
- настройки отображения классов:opacity
- непрозрачность.lineWidth
- ширина линии.midColor
- промежуточный цвет.linePattern
- тип линии.minColor
- начальный цвет.maxColor
- конечный цвет.
pointSettings
- настройки отображения точки:size
- размер точки.allowOverlap
- перекрытие объектов.sizeEnabled
- признак управления размером точки.
showBorder
- признак отображения контура.borderSettings
- настройки отображения контура:opacity
- непрозрачность.pattern
- тип отображения.width
- ширина.color
- цвет.
showText
- признак отображения текста.textSettings
- настройки отображения текста:fontSize
- размер текста.halo
- признак отображения контура текста.haloOpacity
- непрозрачность контура текста.fontOpacity
- непрозрачность текста.fontFamily
- шрифт текста.allowOverlap
- признак перекрытия текста.haloWidth
- ширина контура текста.haloColor
- цвет контура текста.column
- код колонки, значения которой будут отображаться.fontColor
- цвет текста.textOffset
- смещение текста.offsetEnabled
- признак смещения текста.
showLegend
- признак отображения легенды.showLegendName
- признак отображения названия легенды.legendName
- название легенды.legendNames
- список локализованных значений названия легенды.-
showValues
- признак отображения значений.
{
"...": "...",
"visualSettings": {
"id": 17,
"type": 2,
"column": 5277,
"columnCode": "orbis_id",
"algorithm": 1,
"classesCount": 9,
"classesSettings": {
"opacity": 80,
"linePattern": 1,
"defaultClass": {
"count": 46,
"value": "Остальные",
"icon": null,
"checked": true,
"useIcon": false,
"color": "#05cfba"
},
"lineWidth": 1.0,
"classes": [
{
"count": 1,
"value": 2,
"icon": null,
"checked": true,
"useIcon": false,
"color": "#80f320"
},
{
"count": 1,
"value": 3,
"icon": null,
"checked": true,
"useIcon": false,
"color": "#86f11c"
},
{
"...": "..."
},
{
"count": 1,
"value": 100,
"icon": null,
"checked": true,
"useIcon": false,
"color": "#02c4c5"
},
{
"count": 1,
"value": 101,
"icon": null,
"checked": true,
"useIcon": false,
"color": "#03cac0"
}
]
},
"pointSettings": {
"sizeEnabled": false,
"allowOverlap": true,
"size": 10.0
},
"showBorder": true,
"borderSettings": {
"opacity": 100,
"pattern": 1,
"width": 1.0,
"color": "#FFFFFF"
},
"showText": false,
"textSettings": {
"fontSize": 12.0,
"haloOpacity": 100,
"fontOpacity": 100,
"fontFamily": "Arial Bold",
"haloWidth": 1.0,
"haloColor": "#ffffff",
"textOffset": 10.0,
"column": "orbis_id",
"halo": true,
"allowOverlap": false,
"fontColor": "#000000",
"offsetEnabled": false
},
"showLegend": false,
"showLegendName": true,
"legendName": "Категории [mir]",
"legendNames": [
{
"ru": "Категории [mir]"
},
{
"fr": ""
},
{
"en": ""
}
],
"showValues": false
}
}
Где:
id
- уникальный идентификатор настроек визуализации.type
- тип визуализации.column
- уникальный идентификатор колонки, по значениям которой строится визуализация.columnCode
- код колонки, по значениям которой строится визуализация.algorithm
- алгоритм распределения. Для данного типа визуализации всегда 1.classesCount
- количество классов.classesSettings
- настройки отображения классов:opacity
- непрозрачность.linePattern
- тип линии.defaultClass
- настройки отображения класса по умолчанию.count
- количество объектов, к которым применены текущие настройки отображения.value
- значение.icon
- иконка.checked
- признак отображения объектов этого класса.useIcon
- признак отображения иконки.color
- цвет.
lineWidth
- ширина линии.classes
- список настроек отображения классов. Структура каждого элемента соответсвует структуре поляdefaultClass
.
pointSettings
- настройки отображения точки:size
- размер точки.allowOverlap
- перекрытие объектов.sizeEnabled
- признак управления размером точки.
showBorder
- признак отображения контура.borderSettings
- настройки отображения контура:opacity
- непрозрачность.pattern
- тип отображения.width
- ширина.color
- цвет.
showText
- признак отображения текста.textSettings
- настройки отображения текста:fontSize
- размер текста.halo
- признак отображения контура текста.haloOpacity
- непрозрачность контура текста.fontOpacity
- непрозрачность текста.fontFamily
- шрифт текста.allowOverlap
- признак перекрытия текста.haloWidth
- ширина контура текста.haloColor
- цвет контура текста.column
- код колонки, значения которой будут отображаться.fontColor
- цвет текста.textOffset
- смещение текста.offsetEnabled
- признак смещения текста.
showLegend
- признак отображения легенды.showLegendName
- признак отображения названия легенды.legendName
- название легенды.legendNames
- список локализованных значений названия легенды.-
showValues
- признак отображения значений.
{
"...": "...",
"visualSettings": {
"id": 18,
"type": 3,
"column": 5281,
"columnCode": "orbis_id",
"algorithm": 1,
"classesCount": 9,
"classesSettings": {
"pointSizeMax": 50.0,
"icon": null,
"opacity": 80,
"pointSizeMin": 10.0,
"useIcon": false,
"color": "#ff6666"
},
"pointSettings": {
"size": 10.0,
"allowOverlap": true,
"sizeEnabled": false
},
"showBorder": true,
"borderSettings": {
"opacity": 100,
"pattern": 1,
"width": 1.0,
"color": "#FFFFFF"
},
"showText": false,
"textSettings": {
"fontSize": 12.0,
"halo": true,
"haloOpacity": 100,
"fontOpacity": 100,
"fontFamily": "Arial Bold",
"allowOverlap": false,
"haloWidth": 1.0,
"haloColor": "#ffffff",
"column": "orbis_id",
"fontColor": "#000000",
"textOffset": 10.0,
"offsetEnabled": false
},
"showLegend": false,
"showLegendName": true,
"legendName": "Пузырьковая диаграмма [mir]",
"legendNames": [
{
"ru": "Пузырьковая диаграмма [mir]"
},
{
"fr": ""
},
{
"en": ""
}
],
"showValues": false
}
}
Где:
id
- уникальный идентификатор настроек визуализации.type
- тип визуализации.column
- уникальный идентификатор колонки, по значениям которой строится визуализация.columnCode
- код колонки, по значениям которой строится визуализация.algorithm
- алгоритм распределения:- 1 - Равные интервалы.
- 2 - Квантили.
- 3 - Естественные границы.
classesCount
- количество классов.classesSettings
- настройки отображения классов:pointSizeMax
- максимальный размер маркера.icon
- иконка.opacity
- непрозрачность.pointSizeMin
- минимальный размер маркера.useIcon
- признак отображения иконки.color
- цвет.
pointSettings
- настройки отображения точки:size
- размер точки.allowOverlap
- перекрытие объектов.sizeEnabled
- признак управления размером точки.
showBorder
- признак отображения контура.borderSettings
- настройки отображения контура:opacity
- непрозрачность.pattern
- тип отображения.width
- ширина.color
- цвет.
showText
- признак отображения текста.textSettings
- настройки отображения текста:fontSize
- размер текста.halo
- признак отображения контура текста.haloOpacity
- непрозрачность контура текста.fontOpacity
- непрозрачность текста.fontFamily
- шрифт текста.allowOverlap
- признак перекрытия текста.haloWidth
- ширина контура текста.haloColor
- цвет контура текста.column
- код колонки, значения которой будут отображаться.fontColor
- цвет текста.textOffset
- смещение текста.offsetEnabled
- признак смещения текста.
showLegend
- признак отображения легенды.showLegendName
- признак отображения названия легенды.legendName
- название легенды.legendNames
- список локализованных значений названия легенды.-
showValues
- признак отображения значений.
{
"...": "...",
"visualSettings": {
"id": 19,
"type": 4,
"column": 5285,
"columnCode": "orbis_id",
"algorithm": 1,
"classesCount": 9,
"classesSettings": {
"sizeFrom": 60,
"showScale": false,
"sizeColumnCode": "orbis_id",
"sizeTo": 200,
"allowOverlap": false,
"opacity": 80,
"columns": [
{
"code": "orbis_id",
"id": 5285,
"color": "#d4b301"
}
],
"sizeValue": 100,
"sizeType": 1,
"sizeColumn": 5285
},
"pointSettings": {
"size": 10.0,
"allowOverlap": true,
"sizeEnabled": false
},
"showBorder": true,
"borderSettings": {
"opacity": 100,
"pattern": 1,
"width": 1.0,
"color": "#FFFFFF"
},
"showText": false,
"textSettings": {
"fontSize": 12.0,
"halo": true,
"haloOpacity": 100,
"fontOpacity": 100,
"fontFamily": "Arial Bold",
"allowOverlap": false,
"haloWidth": 1.0,
"haloColor": "#ffffff",
"column": "orbis_id",
"fontColor": "#000000",
"textOffset": 10.0,
"offsetEnabled": false
},
"showLegend": false,
"showLegendName": true,
"legendName": "Круговые диаграммы [mir]",
"legendNames": [
{
"ru": "Круговые диаграммы [mir]"
},
{
"fr": ""
},
{
"en": ""
}
],
"showValues": false
}
}
Где:
id
- уникальный идентификатор настроек визуализации.type
- тип визуализации.column
- уникальный идентификатор колонки, по значениям которой строится визуализация.columnCode
- код колонки, по значениям которой строится визуализация.algorithm
- алгоритм распределения. Для данного типа визуализации всегда 1.classesCount
- количество классов.classesSettings
- настройки отображения классов:sizeFrom
- размер от.showScale
- признак отображения шкалы.sizeColumnCode
- код колонки, по которой считается размер.sizeTo
- размер до.allowOverlap
- признак перекрытия.opacity
- непрозрачность.columns
- список колонок по которым строится визуализация:code
- код колонкиid
- уникальный идентификатор колонки.color
- цвет.
sizeValue
- значение размера.sizeType
- тип размера:- 1 - Фиксированный.
- 2 - Сумма значений.
- 3 - По колонке.
sizeColumn
- уникальный идентификатор колонки, по которой считается размер.
pointSettings
- настройки отображения точки:size
- размер точки.allowOverlap
- перекрытие объектов.sizeEnabled
- признак управления размером точки.
showBorder
- признак отображения контура.borderSettings
- настройки отображения контура:opacity
- непрозрачность.pattern
- тип отображения.width
- ширина.color
- цвет.
showText
- признак отображения текста.textSettings
- настройки отображения текста:fontSize
- размер текста.halo
- признак отображения контура текста.haloOpacity
- непрозрачность контура текста.fontOpacity
- непрозрачность текста.fontFamily
- шрифт текста.allowOverlap
- признак перекрытия текста.haloWidth
- ширина контура текста.haloColor
- цвет контура текста.column
- код колонки, значения которой будут отображаться.fontColor
- цвет текста.textOffset
- смещение текста.offsetEnabled
- признак смещения текста.
showLegend
- признак отображения легенды.showLegendName
- признак отображения названия легенды.legendName
- название легенды.legendNames
- список локализованных значений названия легенды.-
showValues
- признак отображения значений.
{
"...": "...",
"visualSettings": {
"id": 20,
"type": 5,
"column": 5289,
"columnCode": "orbis_id",
"algorithm": 1,
"classesCount": 9,
"classesSettings": {
"sizeFrom": 60,
"showScale": true,
"sizeColumnCode": "orbis_id",
"sizeTo": 200,
"allowOverlap": false,
"opacity": 80,
"columns": [
{
"code": "orbis_id",
"id": 5289,
"label": "orbis_id",
"color": "#fe3f38"
}
],
"sizeValue": 60,
"sizeType": 1,
"sizeColumn": 5289
},
"pointSettings": {
"size": 10.0,
"allowOverlap": true,
"sizeEnabled": false
},
"showBorder": true,
"borderSettings": {
"opacity": 100,
"pattern": 1,
"width": 1.0,
"color": "#FFFFFF"
},
"showText": false,
"textSettings": {
"fontSize": 12.0,
"halo": true,
"haloOpacity": 100,
"fontOpacity": 100,
"fontFamily": "Arial Bold",
"allowOverlap": false,
"haloWidth": 1.0,
"haloColor": "#ffffff",
"column": "orbis_id",
"fontColor": "#000000",
"textOffset": 10.0,
"offsetEnabled": false
},
"showLegend": false,
"showLegendName": true,
"legendName": "Столбчатые диаграммы [mir]",
"legendNames": [
{
"ru": "Столбчатые диаграммы [mir]"
},
{
"fr": ""
},
{
"en": ""
}
],
"showValues": false
}
}
Где:
id
- уникальный идентификатор настроек визуализации.type
- тип визуализации.column
- уникальный идентификатор колонки, по значениям которой строится визуализация.columnCode
- код колонки, по значениям которой строится визуализация.algorithm
- алгоритм распределения. Для данного типа визуализации всегда 1.classesCount
- количество классов.classesSettings
- настройки отображения классов:sizeFrom
- размер от.showScale
- признак отображения шкалы.sizeColumnCode
- код колонки, по которой считается размер.sizeTo
- размер до.allowOverlap
- признак перекрытия.opacity
- непрозрачность.columns
- список колонок по которым строится визуализация:code
- код колонкиid
- уникальный идентификатор колонки.label
- название колонки.color
- цвет.
sizeValue
- значение размера.sizeType
- тип размера:- 1 - Фиксированный.
- 2 - Сумма значений.
- 3 - По колонке.
sizeColumn
- уникальный идентификатор колонки, по которой считается размер.
pointSettings
- настройки отображения точки:size
- размер точки.allowOverlap
- перекрытие объектов.sizeEnabled
- признак управления размером точки.
showBorder
- признак отображения контура.borderSettings
- настройки отображения контура:opacity
- непрозрачность.pattern
- тип отображения.width
- ширина.color
- цвет.
showText
- признак отображения текста.textSettings
- настройки отображения текста:fontSize
- размер текста.halo
- признак отображения контура текста.haloOpacity
- непрозрачность контура текста.fontOpacity
- непрозрачность текста.fontFamily
- шрифт текста.allowOverlap
- признак перекрытия текста.haloWidth
- ширина контура текста.haloColor
- цвет контура текста.column
- код колонки, значения которой будут отображаться.fontColor
- цвет текста.textOffset
- смещение текста.offsetEnabled
- признак смещения текста.
showLegend
- признак отображения легенды.showLegendName
- признак отображения названия легенды.legendName
- название легенды.legendNames
- список локализованных значений названия легенды.-
showValues
- признак отображения значений.
{
"...": "...",
"visualSettings": {
"id": 21,
"type": 6,
"column": 5293,
"columnCode": "orbis_id",
"algorithm": 1,
"classesCount": 9,
"classesSettings": {
"sizeFrom": 60,
"showScale": true,
"sizeColumnCode": "orbis_id",
"sizeTo": 200,
"allowOverlap": false,
"opacity": 80,
"columns": [
{
"code": "population",
"id": 5296,
"color": "#dc0a86"
}
],
"sizeValue": 60,
"sizeType": 1,
"sizeColumn": 5293
},
"pointSettings": {
"size": 10.0,
"allowOverlap": true,
"sizeEnabled": false
},
"showBorder": true,
"borderSettings": {
"opacity": 100,
"pattern": 1,
"width": 1.0,
"color": "#FFFFFF"
},
"showText": false,
"textSettings": {
"fontSize": 12.0,
"halo": true,
"haloOpacity": 100,
"fontOpacity": 100,
"fontFamily": "Arial Bold",
"allowOverlap": false,
"haloWidth": 1.0,
"haloColor": "#ffffff",
"column": "orbis_id",
"fontColor": "#000000",
"textOffset": 10.0,
"offsetEnabled": false
},
"showLegend": false,
"showLegendName": true,
"legendName": "Линейные диаграммы [mir]",
"legendNames": [
{
"ru": "Линейные диаграммы [mir]"
},
{
"fr": ""
},
{
"en": ""
}
],
"showValues": false
}
}
Где:
id
- уникальный идентификатор настроек визуализации.type
- тип визуализации.column
- уникальный идентификатор колонки, по значениям которой строится визуализация.columnCode
- код колонки, по значениям которой строится визуализация.algorithm
- алгоритм распределения. Для данного типа визуализации всегда 1.classesCount
- количество классов.classesSettings
- настройки отображения классов:sizeFrom
- размер от.showScale
- признак отображения шкалы.sizeColumnCode
- код колонки, по которой считается размер.sizeTo
- размер до.allowOverlap
- признак перекрытия.opacity
- непрозрачность.columns
- список колонок по которым строится визуализация:code
- код колонкиid
- уникальный идентификатор колонки.color
- цвет.
sizeValue
- значение размера.sizeType
- тип размера:- 1 - Фиксированный.
- 2 - Сумма значений.
- 3 - По колонке.
sizeColumn
- уникальный идентификатор колонки, по которой считается размер.
pointSettings
- настройки отображения точки:size
- размер точки.allowOverlap
- перекрытие объектов.sizeEnabled
- признак управления размером точки.
showBorder
- признак отображения контура.borderSettings
- настройки отображения контура:opacity
- непрозрачность.pattern
- тип отображения.width
- ширина.color
- цвет.
showText
- признак отображения текста.textSettings
- настройки отображения текста:fontSize
- размер текста.halo
- признак отображения контура текста.haloOpacity
- непрозрачность контура текста.fontOpacity
- непрозрачность текста.fontFamily
- шрифт текста.allowOverlap
- признак перекрытия текста.haloWidth
- ширина контура текста.haloColor
- цвет контура текста.column
- код колонки, значения которой будут отображаться.fontColor
- цвет текста.textOffset
- смещение текста.offsetEnabled
- признак смещения текста.
showLegend
- признак отображения легенды.showLegendName
- признак отображения названия легенды.legendName
- название легенды.legendNames
- список локализованных значений названия легенды.-
showValues
- признак отображения значений.
{
"...": "...",
"visualSettings": {
"id": 22,
"type": 7,
"column": 5297,
"columnCode": "orbis_id",
"algorithm": 1,
"classesCount": 9,
"classesSettings": {
"markerSizeMin": 60,
"layerOpacity": 80,
"weightNormalizeMax": 10,
"useWeight": false,
"markerSizeType": "fixed",
"linkToScale": false,
"markerSizeMax": 200,
"weightNormalizeMin": 0.1,
"markerOpacity": 80,
"markerSize": 35.0,
"useWeightField": 5297,
"markerSizeField": 5297,
"linkToScaleZoom": 10,
"colors": [
"#0000ff",
"#00ffff",
"#90EE90",
"#ffff00",
"#ffa500",
"#ff0000"
],
"weightNormalize": false
},
"pointSettings": {
"size": 10.0,
"allowOverlap": true,
"sizeEnabled": false
},
"showBorder": true,
"borderSettings": {
"opacity": 100,
"pattern": 1,
"width": 1.0,
"color": "#FFFFFF"
},
"showText": false,
"textSettings": {
"fontSize": 12.0,
"halo": true,
"haloOpacity": 100,
"fontOpacity": 100,
"fontFamily": "Arial Bold",
"allowOverlap": false,
"haloWidth": 1.0,
"haloColor": "#ffffff",
"column": "orbis_id",
"fontColor": "#000000",
"textOffset": 10.0,
"offsetEnabled": false
},
"showLegend": false,
"showLegendName": true,
"legendName": "Тепловая карта [mir]",
"legendNames": [
{
"ru": "Тепловая карта [mir]"
},
{
"fr": ""
},
{
"en": ""
}
],
"showValues": false
}
}
Где:
id
- уникальный идентификатор настроек визуализации.type
- тип визуализации.column
- уникальный идентификатор колонки, по значениям которой строится визуализация.columnCode
- код колонки, по значениям которой строится визуализация.algorithm
- алгоритм распределения. Для данного типа визуализации всегда 1.classesCount
- количество классов.classesSettings
- настройки отображения классов:markerSizeMin
- минимальный размер маркера.layerOpacity
- непрозрачность.weightNormalizeMax
- максимальное значение нормализации веса.useWeight
- признак использования нормализации по весу.markerSizeType
- тип радиуса влияния маркера:- fixed - фиксированный.
- field - по колонке
linkToScale
- признак привязки к масштабу.markerSizeMax
- максимальный размер маркера.weightNormalizeMin
- минимальное значение нормализации веса.markerOpacity
- интенсивность.markerSize
- размер маркера.useWeightField
- уникальный идентификатор колонки значения которой нормализуются по весу.markerSizeField
- уникальный идентификатор колонки по значениям которой вычисляется радиус влияния.linkToScaleZoom
- значение привязки зума.colors
- список значений цветов, в градиенте которых меняется окраска маркера.weightNormalize
- признак нормализации по весу.
pointSettings
- настройки отображения точки:size
- размер точки.allowOverlap
- перекрытие объектов.sizeEnabled
- признак управления размером точки.
showBorder
- признак отображения контура.borderSettings
- настройки отображения контура:opacity
- непрозрачность.pattern
- тип отображения.width
- ширина.color
- цвет.
showText
- признак отображения текста.textSettings
- настройки отображения текста:fontSize
- размер текста.halo
- признак отображения контура текста.haloOpacity
- непрозрачность контура текста.fontOpacity
- непрозрачность текста.fontFamily
- шрифт текста.allowOverlap
- признак перекрытия текста.haloWidth
- ширина контура текста.haloColor
- цвет контура текста.column
- код колонки, значения которой будут отображаться.fontColor
- цвет текста.textOffset
- смещение текста.offsetEnabled
- признак смещения текста.
showLegend
- признак отображения легенды.showLegendName
- признак отображения названия легенды.legendName
- название легенды.legendNames
- список локализованных значений названия легенды.-
showValues
- признак отображения значений. -
включен режим отображения слоя - вектором, тогда:
- добавиться поле
vectorSettings
, значением которого будет объект json, описывающий стилей отрисовки векторного слоя на клиенте.
Пример возможного значения:
- добавиться поле
{
"...": "...",
"vectorSettings": {
"stylesPolygon": {},
"stylesText": {},
"minZoom": 2,
"clusterSettings": {
"objectsCountDx": 0,
"icon": null,
"showObjectsCount": true,
"iconSizeMax": 25,
"radius": 40,
"iconSizeEnabled": false,
"iconDx": 0,
"iconEnabled": false,
"iconOffsetEnabled": false,
"iconDy": 0,
"iconSizeMin": 15,
"clusteringType": "client",
"objectsCountDy": 0,
"maxZoom": 12,
"maxZoomEnabled": false,
"splitByCategories": false
},
"popupColumn": 1065,
"maxZoom": 5,
"popupColumnCode": "orbis_id",
"showPopup": false,
"zoomsEnabled": false,
"clusteringEnabled": true,
"id": 21,
"stylesPoint": {
"icon": null,
"iconDx": 0,
"iconOffsetEnabled": true,
"iconDy": 0
},
"stylesLine": {}
}
}
Где:
stylesPolygon
- не используются в настоящий момент.stylesText
- не используются в настоящий момент.minZoom
- минимальное значение ограничения по зуму.clusterSettings
- настройки кластеризацииobjectsCountDx
- смещение количества объектов по оси x.icon
- иконка.showObjectsCount
- признак отображения количества объектов.iconSizeMax
- максимальный размер иконки.radius
- радиус кластеризации.iconSizeEnabled
- признак использования ограничений размеров иконки.iconDx
- смещение иконки кластера по оси х.iconEnabled
- признак использования иконки.iconOffsetEnabled
- признак смещения иконки.iconDy
- смещение иконки по оси y.iconSizeMin
- минимальный размер иконки.clusteringType
- тип кластеризации.objectsCountDy
- смещение количества объектов по оси y.maxZoom
- максимальный зум кластеризации.maxZoomEnabled
- признак использования максимального зума.splitByCategories
- флаг отвечающий за способ формирования кластеров:true
- в кластеры будут попадать только объекты одинаковых категорий.false
- в кластеры будут попадать все объекты (без учета категории).
popupColumn
- уникальный идентификатор колонки, значение которой будет использоваться в сплывающей подсказке.maxZoom
- максимальное значение ограничения по зуму.popupColumnCode
- код колонки, значение которой будет использоваться в сплывающей подсказке.showPopup
- признак использования всплывающей подсказки.zoomsEnabled
- признак ограничения по зуму.clusteringEnabled
- признак использования кластеризации.id
- уникальный идентификатор настроек отображения.stylesPoint
- настройки отображения иконки:icon
- иконка.iconDx
- смещение иконки по оси x.iconOffsetEnabled
- признак использования смещения колонки.iconDy
- смещение иконки по оси y.
stylesLine
- не используются в настоящий момент.
Изменить слой
Для изменения слоя используйте метод PUT, если необходимо изменить объект слоя полностью, или PATCH, если необходимо изменить отдельные поля.
PUT/PATCH http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/
Для выполнения запроса необходим токен авторизации.
- параметры создаваемого слоя в json-формате должны передаваться в теле запроса:
{
"code": "new_code",
"localized_name": true,
"name": "Имя",
"parent_id": 2,
"sort": 3.5,
"css_style": "CartoCSS-стиль отображения слоя"
}
Где:
- `code` (*необязательный*) - новый код слоя. Если не указан, то значение останется прежним.
- `localized_name` (*необязательный*) - флаг, локализовать ли название слоя. Если не указан, то значение останется прежним.
- `name` (*необязательный*) - имя слоя. Если не указан, то значение останется прежним.
- `parent_id` (**обязательный**) - идентификатор родительского контейнера.
- `sort` (*необязательный*) - значение сортировки слоя. Если не указан, то значение останется прежним.
- `css_style` (*необязательный*) - CartoCSS-стиль отображения слоя. Если не указан, то значение останется прежним.
Ответ
Структура ответа на запрос изменения слоя соответствует ответу на запрос получения объекта слоя карты.
Если не указан идентификатор родительского контейнера, указан несуществующий, или родительский контейнер принадлежит другой карте, то сервер вернет ошибку со статусом 404
.
Если указан не валидный CartoCSS-стиль отображения слоя, то сервер вернет ошибку со статусом 500
. Подробнее про описание ошибок.
Получить легенду слоя карты
Получить легенду можно только для слоя с типом Визуализация
.
GET http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/legend/
Ответ
{
"name": "Название легенды",
"column": "orbis_id",
"showValues": true,
"showLegend": true,
"minValue": 1,
"maxValue": 200,
"type": 5,
"classificators": [
{
"value": "orbis_id"
,
, "fill":"#f82851",
"isIcon": false
}
],
}
Где:
name
- заголовок легенды.column
- код поля, из которого берутся значения для визуализации.showValues
- признак, будут ли отображаться граничные значения.showLegend
- признак, отображается ли легенда.minValue
- минимальное значение шкалы легенды.maxValue
- максимальное значение шкалы легенды.type
- тип визуализации. Подробнее о типах визуализаций.classificators
- список стилей отображения для каждой группы объектов визуализации.
Если запрошен несуществующий слой или запрошен слой с типом отличным от Визуализация
, то сервер вернет ошибку со статусом 404
. Подробнее про описание ошибок.
Работа со структурой слоя
Любой слой имеет, как минимум, 2 поля:
orbis_id
- уникальный идентификатор объекта.geom
- геопространственные данные объекта.
Дополнительно, к перечисленным выше обязательным полям, слой может содержать достаточно большое количество пользовательских полей. Максимальное количество зависит от типа создаваемых полей и примерно равно 1000, но желательно не создавать более 500.
Код пользовательских полей:
- может состоять из букв латинского алфавита, цифр от 0 до 9 или знака подчеркивания.
- не может начинаться с цифры.
- не должен превышать 44 символов.
Возможные типы полей, и их соответствие типам в базе данных:
number
- число. В БД имеет типfloat8
. Исключением в данном случае будет служебная колонкаorbis_id
- в БД имеет типint4
.geom
- геопространственные данные. В БД имеет пользовательский типGeometry
.string
- строка. В БД имеет типvarchar
.text
- текст. В БД имеет типtext
.datetime
- дата. В БД имеет типdatetime(6)
.bool
- логический. В БД имеет типbool
.file
- файл. В БД имеет типtext
. В одном файловом поле объекта может храниться неограниченное число файлов, т.к. они хранятся в виде текстовой строки, которая состоит из первичных ключей файлов, разделенных запятой.title
- заголовок. Не имеет отдельной колонки в БД, т.к. является логической абстракцией и используется для объединения колонок общим заголовком.
Получить структуру слоя
GET http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/structure/
Ответ
[
{
"id":48,
"sort":1,
"parent_id":0,
"code":"orbis_id",
"name":"",
"required": true,
"type":"number",
"localized_name":false,
"localized_value":false
},
{
"id":49,
"sort":2,
"parent_id":0,
"code":"geom",
"name":"",
"required": false,
"type":"geom",
"localized_name":false,
"localized_value":false
},
{
"id":50,
"sort":3,
"parent_id":0,
"code":"titles",
"name":"Подписи",
"type":"title",
"localized_name":true,
"localized_value":false
},
{
"id":51,
"sort":1,
"parent_id":50,
"code":"label_en",
"name":"Подпись английская",
"required": true,
"type":"title|number|string|text|datetime|bool|file|geom",
"localized_name":true,
"localized_value":false
},
{
"id":52,
"sort":2,
"parent_id":50,
"code":"label_ru",
"name":"Подпись русская",
"required": false,
"type":"title|number|string|text|datetime|bool|file|geom",
"localized_name":true,
"localized_value":false
}
]
Каждый элемент списка описывает 1 поле слоя. Где:
id
- уникальный идентификатор поля в пределах проекта.sort
- порядок сортировки в пределах родителя (поляparent_id
).parent_id
- идентификатор родительского поля - используется для построения древовидной структуры полей, например, несколько полей объединены общим заголовком.code
- код поля слоя. Уникальный в пределах слоя. Соответствует коду колонки таблицы в БД.name
- название поля слоя. Может не иметь значения.required
- признак, должно ли быть заполнено поле при сохранении объекта.type
- тип поля. Подробнее о типах полей.localized_name
- признак, локализовано ли имя поля.localized_value
- признак, локализовано ли значение поля.
Если запрошен несуществующий слой, то сервер вернет ошибку со статусом 404
. Подробнее про описание ошибок.
Изменить колонку
Для изменения колонки слоя используйте метод PUT, если необходимо изменить все поля колонки, или PATCH, если необходимо изменить отдельные поля.
PUT/PATCH http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/structure/<field_code>/
Для выполнения запроса необходим токен авторизации.
- параметры изменяемой колонки в json-формате должны передаваться в теле запроса:
{
"code": "New_column_1",
"name": "Новая колонка 1",
"localized_name": true,
"localized_value": false,
"required": false,
"type": "number",
"sort":4.5,
"parent_id": 50,
"...": "..."
}
Где:
sort
(необязательный) - значение сортировки колонки. Если не указан, то значение останется прежним.parent_id
(необязательный) - идентификатор родительского контейнера. Если не указан, то значение останется прежним.code
(необязательный) - новый код колонки. Если не указан, то значение останется прежним.name
(необязательный) - имя слоя. Если не указан, то значение останется прежним.required
(необязательный) - признак, должно ли быть заполнено поле при сохранении объекта. Если не указан, то значение останется прежним.type
(обязательный) - тип поля. Необходимо указать либо текущий тип - если тип поля менять не надо, или новый тип, если необходимо изменить. Если значение в объекте не может быть явно приведено к новому типу, например, строка (имеющая в составе буквы) к дате, то значение в объекте будет потеряно.localized_name
(необязательный) - признак, локализовано ли имя колонки. Если не указан, то значение останется прежним.localized_value
(необязательный) - признак, локализовано ли значение колонки. Если не указан, то значение останется прежним.
Ответ
Структура ответа на запрос изменения колонки слоя соответствует структуре элемента в ответе на запрос получения структуры слоя. Описание параметров можно посмотреть тут.
Если не указан тип поля, то сервер вернет ошибку со статусом 500
. Подробнее про описание ошибок.
Работа с данными слоя
Загрузка данных в слой
POST http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/import/
Для выполнения запроса необходим токен авторизации.
Загрузка данных поддерживает следующие форматы:
Вектор:
kml
shp
mid/mif
(Mapinfo)tab
(Mapinfo)geojson
xls/xlsx
dxf
csv
sxf
(КБ Панорама)
Растр:
tif
geotif
png
jpg/jpeg
Возможные способы загрузки:
- через POST - GeoJSON в теле POST-запроса
- через файл (excel, shp, ...)
Обязательные параметры:
GeoJSON
в теле POST-запроса
либо
file
- Файл в параметре POST-запроса
Дополнительные необязательные параметры:
srs
- id проекции (в формате epsg/wkt/proj4) загружаемого файла (если нужна); по умолчанию: "4326"(EPSG) (формат задаваемой проекции определяется сервером автоматически).action
- как производить импорт:- 1 - заменить.
- 2 (по умолчанию) - объединить. Доступно только для векторных слоёв
raster_bbox
- bbox для растровых данных в формате:BOX(x_min y_min,x_max y_max)
; значения по умолчанию не имеет, т.е. если растр не имеет данных о геопривязке и не будет задан этот параметр, это приведет к ошибке импорта.
Ответ
Структура ответа на запрос загрузки данных в слой соответствует ответу на запрос получения объекта слоя карты.
Выгрузка данных слоя
GET http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/export/
Выгрузка данных поддерживает следующие форматы:
Вектор:
kml
,kmz
: (format=kml|kmz)shp
: (format=shp)mid/mif
,tab
(MapInfo): (format=mif|tab)geojson
: (format=geojson)xlsx
(Excel): (format=xls)csv
: (format=csv)
Растр:
geotif
: (format=geotif)
Обязательные GET-параметры:
format
: shp|mif|tab|geojson|kml|kmz|xls|geotif|csv
Необязательные дополнительные GET-параметры:
langs
: ru, en, ... (коды языков через ","), если параметр пустой, будут выгружены все языки.zip
- принудительная упаковка в *.zip одиночных файлов (влияет только на экспорт в форматы, состоящие из одного файла).feature_ids
- список идентификаторов объектов слоя (через запятую), которые необходимо экспортировать (иначе экспортируется весь слой).
Дополнительные GET-параметры для экспорта CSV
encoding
- кодировка, в которую будут преобразованы текстовые данные экспортируемого слоя (utf-8, cp1251, ...). По умолчанию - utf-8.dialect
- диалект (формат разделителя, экранирования строк и переносов) CSV для экспорта. По умолчанию - ; (точка с запятой).- поддерживаемые диалекты:
comma
- разделитель запятая
- поддерживаемые диалекты:
Ответ
zip-архив (для типов shp, mif) или файл (для типов geojson, kml, kmz, xls, csv) с результатом. Если указан параметр zip
, то файлы любого типа (кроме kmz
) будут сжаты в *.zip
.
Экспорт в kmz всегда возвращает файл *.kmz
, вне зависимости от наличия параметра сжатия.
Если указан недопустимый формат, то сервер вернет ошибку со статусом 500
. Подробнее про описание ошибок.
Работа с объектами слоя
При работе с объектами слоя, в структуре которого есть локализованные по значению колонки, необходимо указывать код мета-колонки (одним из свойств параметра fields
) и код языка (параметр lng
), для которого необходимо получить/изменить значение. Здесь и далее считается, что если не указан код языка через параметр lng
, то будет использоваться язык по умолчанию. Подробнее об этом будет описано ниже.
Получить количество объектов слоя
GET http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/count/
Необязательные параметры запроса:
precise
- производить ли точное вычисление количества объектов:false
(по умолчанию) - подсчет производится быстро на основании внутреннего оптимизатора базы данных, возможен неточный результат.true
- подсчет производится точно, при большом количестве данных возможен долгий ответ от сервера.
Ответ
50
Получить список объектов слоя
GET http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/objects/
Необязательные параметры запроса:
fields
- список кодов колонок через запятую, значения которых также попадут в результат; если необходимо получить все колонки, то необходимо послатьfields
=*
.fcode
- код колонки для фильтрации. Колонка, по которой производится фильтрация, должна быть указана в параметреfields
, в противном случае сервер вернет ошибку со статусом 500. Подробнее про описание ошибок.fval
- значение фильтруемой колонки. Если не нашлось объектов, удовлетворяющих условию фильтрации, то вернется пустой список и статус ответа будет 200.offset
- стартовое смещение выдачи объектов.limit
- ограничение на количество выбранных объектов.sort
- набор колонок, по которым будет выполнена сортировка списка. Значение представляется в форматеname,a|capital|id,d
, где a=ASC (значение по умолчанию) - по возрастанию, d=DESC - по убыванию.fbbox
- фильтр по BBOX в форматеSW_LAT,SW_LON,NE_LAT,NE_LON
.returnBbox
- включать ли в ответ габариты объекта.0
(значение по умолчанию) - не включать;1
- включить bbox в ответ.bboxSR
- spatial reference для габаритов объекта в формате EPSG. Возможные значения:4326
(значение по умолчанию) и3857
. Данный параметр учитывается и при фильтрации по BBOX.returnGeom
- включать ли в ответ геопространственные данные объекта. Геопространственные данные в ответе будут возвращены в формате GeoJSON. Возможные значения:0
(значение по умолчанию) - не включать;1
- включить геопространственные данные в ответ.geomSR
- spatial reference для геопространственных данных объекта в формате EPSG. Возможные значения:4326
(значение по умолчанию) и3857
geomZoom
- параметр, учитываемый при запросе геопространственных данных объекта. В случае указания текущего зума, геопространственные данные будут автоматически упрощены под указанный зум. Если параметр не задавать, то геопространственные данные будут в исходном виде (без упрощения).returnCentroid
- если задан параметрreturnGeom
, то вместо геопространственных данных объектов будут возвращаться координаты точек их центроидов. Работает для всех типов геопространственных данных.lng
- код языка, для которого будут получены локализованные значения в полях свойстваfields
. Если параметр не указан, то будут получены значения для языка по умолчанию.
Ответ
Каждый элемент ответа на запрос получения списков объектов слоя по структуре соответствует ответу на запрос получения информации по объекту, кроме состава полей в свойстве fields
, т.к. текущий запрос может не иметь данного свойства (не указан параметр fields
в запросе), либо иметь ограниченный набор полей (в параметре fields
перечислены не все поля структуры слоя).
Получить информацию по объекту слоя
GET http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/objects/<object_id>/
Необязательные параметры запроса:
returnBbox
- включать ли в ответ габариты объекта.0
(значение по умолчанию) - не включать;1
- включить bbox в ответ.bboxSR
- spatial reference для габаритов объекта в формате EPSG. Возможные значения:4326
(значение по умолчанию) и3857
.returnGeom
- включать ли в ответ геопространственные данные объекта. Геопространственные данные в ответе будут возвращены в формате GeoJSON. Возможные значения:0
(значение по умолчанию) - не включать;1
- включить геопространственные данные в ответ.geomSR
- spatial reference для геопространственных данных объекта в формате EPSG. Возможные значения:4326
(значение по умолчанию) и3857
.geomZoom
- параметр, учитываемый при запросе геопространственных данных объекта. В случае указания текущего зума, геопространственные данные будут автоматически упрощены под указанный зум. Если параметр не задавать, то геопространственные данные будут в исходном виде (без упрощения).lng
- код языка, для которого будут получены локализованные значения в полях свойстваfields
. Если параметр не указан, то будут получены значения для языка по умолчанию.
Ответ
{
"id": 1,
"fields": {
"field_1": "Значение колонки 1",
"field_2": "Значение колонки 2",
"field_3": 3
},
"geom": {
"type": "Polygon",
"coordinates": [
[
[ 39.674470691019003, 45.201854294024443 ],
[ 39.672229085150633, 45.164807545385699 ],
[ 39.728412719962421, 45.151394461232584 ],
[ 39.674470691019003, 45.201854294024443 ]
]
]
},
"bbox": {
"sw" : [39.67222, 45.20185],
"ne" : [39.72841, 45.15139]
}
}
Где:
id
- уникальный идентификатор объекта. Соответствует колонкеorbis_id
. Всегда присутствует в ответе.geom
- геопространственные данные объекта в формате geojson. Может отсутствовать в ответе - это зависит от значения параметраreturnGeom
. Проекция зависит от параметраgeomSR
.bbox
- габариты объекта. Может отсутствовать в ответе - это зависит от значения параметраreturnBbox
. Проекция зависит от параметраbboxSR
.fields
- свойство, значением которого является объект json. Каждое свойство данного объекта описывает 1 поле (колонку) объекта. Ключ каждого поля - это код колонки слоя, а тип значения зависит от типа колонки. Подробнее о типах колонок.
Если запрошен несуществующий объект, то ответ будет:
{
"id": 1000,
"fields": {}
}
Где:
id
- запрошенный несуществующий идентификатор объекта.fields
- всегда пустой объект json.
Создать объект слоя
POST http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/objects/
Для выполнения запроса необходим токен авторизации.
- параметры создаваемого объекта передаются в формате json в теле запроса:
{
"fields": {
"field_1": "Значение колонки 1",
"field_2": "Значение колонки 2",
"field_3": 3
},
"geom": {
"type": "Polygon",
"coordinates": [
[
[ 39.674470691019003, 45.201854294024443 ],
[ 39.672229085150633, 45.164807545385699 ],
[ 39.728412719962421, 45.151394461232584 ],
[ 39.674470691019003, 45.201854294024443 ]
]
]
}
}
Где:
fields
(обязательный) - свойство, значением которого является объект json. Если у объекта нет обязательных полей, то может быть пустым. Если у слоя, в котором хранится объект, есть колонки обязательные для заполнения (required
=true
), то они должны быть перечислены.geom
(необязательный) - геопространственные данные объекта в формате geojson. Если не указан, то создастся объект без геопространственных данных.lng
- код языка, для которого будут изменены локализованные значения в полях объекта. Если параметр не указан, то будут изменены значения для языка по умолчанию.
Если слой имеет локализованную по значению колонку, и в нее необходимо установить значение для определенного языка, то в свойстве fields
указывается код колонки, а язык передается параметром запроса lng
, например, lng
=ru
. Если в fields
указан код локализованной колонки и не указан параметр lng
, то значение будет установлено для языка по умолчанию.
Ответ
Ответ на запрос создания объекта слоя по структуре соответствует ответу на запрос получения информации по объекту.
Изменить объект слоя
PUT http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/objects/<object_id>/
Для выполнения запроса необходим токен авторизации.
Формат запроса на изменение объекта соответствует формату запроса на создание объекта с одной оговоркой - нет необходимости указывать обязательные для заполнения поля, если нет необходимости их изменять.
Ответ
Ответ на запрос изменения объекта слоя по структуре соответствует ответу на запрос получения информации по объекту.
Если запрошен несуществующий объект, то сервер вернет ошибку со статусом 404
. Подробнее про описание ошибок.
Удалить объект слоя
DELETE http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/objects/<object_id>/
Для выполнения запроса необходим токен авторизации.
Ответ
true
Если запрошен несуществующий объект, то сервер вернет ошибку со статусом 404
. Подробнее про описание ошибок.
Получить геопространственные данные объекта слоя
GET http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/objects/<object_id>/geom/
Для выполнения запроса необходим токен авторизации.
Ответ
{
"type": "Point",
"coordinates": [ 3673543.19617802882567, 3895303.963393894489855 ]
}
Ответом будут геопространственные данные объекта в формате geojson.
Если запрошены геопространственные данные несуществующего объекта, то сервер вернет ошибку со статусом 404
. Подробнее про описание ошибок.
Изменить геопространственные данные объекта слоя
PUT http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/objects/<object_id>/geom/
Для выполнения запроса необходим токен авторизации.
- геопространственные данные в Geojson-формате передаются в теле запроса
Необязательные параметры запроса:
geomSR
- spatial reference для геопространственных данных объекта в формате EPSG. Возможные значения:4326
(значение по умолчанию) и3857
{
"coordinates": [61.33891, 35.83611],
"type": "Point"
}
Ответ
Ответ на запрос изменения геопространственных данных объекта слоя по структуре соответствует ответу на запрос получения геопространственных данных объекта.
Если запрошено изменение геопространственных данных несуществующего объекта, то сервер вернет ошибку со статусом 404
. Подробнее про описание ошибок.
Работа с файлами
Файлы можно добавлять только к объектам имеющим файловые поля. Код поля, в которое необходимо добавить файл, указывается одним из параметров при запросе. Если необходимо добавить файл в локализованную по значению колонку, то указывается параметр запроса языка lng
, например, lng
=ru
. Если, при добавлении файла в локализованную по значению колонку, параметр lng
не указать, то файл будет добавлен в значение языка по умолчанию.
Добавить файл к объекту
POST http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/objects/<object_id>/files/
Для выполнения запроса необходим токен авторизации.
Обязательные параметры запроса
field
- Код колонки, в которую необходимо добавить файл.file
- Файл в параметре POST-запроса.
Ответ
{
"name": "имя загруженного файла.m4a",
"path": "//<host>/static/content_files/oms_tests_docker/0bb97e774aee56cf3e7b0b0717ab62ce.m4a",
"mime": "audio/x-m4a",
"id": 3,
"uuid": "754279f7-fdf1-4f75-a5d8-1bbd18c3dd5b"
}
Где:
name
- имя загруженного файла.path
- путь, по которому можно запросить файл.mime
- mime-тип файла.id
- уникальный идентификатор файла.uuid
- uuid файла.
Удалить файл объекта
Код поля, из которого необходимо удалить файл, указывается одним из параметров при запросе. Если необходимо удалить файл из локализованной по значению колонки, то укажите язык параметром запроса lng
, например, lng
=ru
. Если параметр lng
не указать при удалении файла из локализованной по значению колонки, то файл будет удален из значения языка по умолчанию.
DELETE http://<host>/api/2.4/<project_code>/<map_code>/layers/<layer_code>/objects/<object_id>/files/<file_id>/
Для выполнения запроса необходим токен авторизации.
Обязательные параметры запроса
field
- Код колонки, из которой необходимо удалить файл.
Ответ
null
Поиск
Поиск по слоям и метаданным
GET http://<host>/api/2.4/<project_code>/<map_code>/search/
Ищет по полному или частичному совпадению слов в фразе и данных для поиска. При поиске по слоям учитывается поле name
. Поиск по метаданным (объектам слоев) использует настройки, которые можно сохранить при публикации карты. Результаты сортированы по приоритетам, затем по типу, затем по значению. Если найдено достаточное количество объектов с точным совпадением, то поиск не продолжается (другие слои, ниже по списку в настройках поиска, не участвуют). При равных приоритетах слои важнее объектов.
30
- Точное совпадение фразы и данных объекта20
- Все слова из фразы присутствуют в данных10
- Присутствуют некоторые слова из фразы
Обязательные параметры запроса
phrase
- Фраза поискового запроса.
Необязательные параметры запроса:
lang
- Код языка для поиска по локализованным названиям слоев. По-умолчаниюru
limit
- Количество элементов в результатах поиска. По-умолчанию 3
Ответ
[
{
"id": 103,
"code": "visual",
"name": "Визуализация для поиска",
"priority": 20,
"type": "layer",
"icon": "/static/geoicons/visual.png"
},
{
"id": 101,
"code": "layer",
"name": "Слой для поиска",
"priority": 20,
"type": "layer",
"icon": "/static/geoicons/polygon.png"
},
{
"name": 3,
"orbis_id": 3,
"priority": 20,
"layer": "layer",
"type": "object",
"name_column": "orbis_id",
"search_column": "data",
"layer_name": "Слой для поиска",
"layer_icon": "/static/geoicons/polygon.png",
"value": ""
},
{
"name": 8,
"orbis_id": 8,
"priority": 20,
"layer": "layer",
"type": "object",
"name_column": "orbis_id",
"search_column": "data",
"layer_name": "Слой для поиска",
"layer_icon": "/static/geoicons/polygon.png",
"value": ""
}
]
Где:
type
- тип элемента результатаlayer
- слой картыobject
- объект слоя
Поля слоя карты:
id
- Идентификатор слоя в системе.code
- Строковый код слоя.icon
- Путь до иконки слоя.type
- Тип элемента результата.name
- Значение имени слоя, которое участвовало в поиске.priority
- Значение приоритета при поиске.
Поля объекта слоя:
orbis_id
- Идентификатор объекта в слое.priority
- Значение приоритета при поиске.type
- Тип элемента результата.layer
- Строковый код слоя.layer_name
- Имя слоя.layer_icon
- Путь до иконки слоя.name
- Значение имени объекта.name_column
- Строковый код поля названия объекта.search_column
- Строковый код поля объекта для поиска.value
- Значение поля объекта, которое участвовало в поиске.
Запрос изображений
Позволяет на лету изменить размер любого изображения, привязанного к любому объекту в системе. Например создать уменьшенную копию изображения.
GET http://<host>/api/2.4/<project_code>/image/<file_uuid>/
Необязательные параметры запроса:
w
- желаемая ширина итогового изображения; еслиh
не будет указан, изображение изменится с сохранением пропорций.h
- желаемая высота итогового изображения; еслиw
не будет указан, изображение изменится с сохранением пропорций.fit
- параметр преобразования изображения (работает аналогично CSS3 object-fit). Применяется, если указаны оба параметра:w
иh
. Допустимые значения:none
,fill
,contain
,cover
,scale-down
. По умолчаниюfill
.f
- желаемый формат изображения. Допустимые значения:png
,jpg
,jpeg
. По умолчанию используется исходный формат изображения.
Запрос тайлов
GET http://<host>/tms/<project_code>/<map_code>/?x={x}&y={-y}&z={z}
Дополнительные необязательные параметры запроса:
base
- 1 или 0, включать ли в тайл базовую карту (по умолчанию - 1)layers
- список идентификаторов слоёв через запятуюretina
- множитель Retina-экранов (retina=2 выдаст тайлы 512x512)lng
- язык текстов на карте
Обработка ошибок
HTTP-статусы выполнения запросов:
- HTTP 200 - запрос выполнен успешно; в ответе json-объект с результатом операции.
- HTTP 401 – ошибка аутентификации: выполнение данного запроса требует аутентификации.
- HTTP 403 – ошибка авторизации: выполнение данной операции для данного пользователя запрещено правами доступа.
- HTTP 404 - не найдена сущность, соответствующая запросу.
- HTTP 500 - в результате выполнения запроса произошла ошибка; в ответе json-объект описания ошибки:
{
"error": "error|warning|notice",
"code": "код_ошибки",
"message": "Описание ошибки выполнения запроса",
"data": {}
}
Где:
- data
- всегда json-объект, который может содержать дополнительную информацию по ошибке. Например, список обязательных параметров запроса или колонок, установление значения для которых вызывало ошибку при редактировании объекта.
Ответы со статусами 401
, 403
, 404
приходят в виде HTML. Со статусами 200
и 500
- json-объект.
Changelog
- Изменены выходные данные получения слоя карты
- Добавлен параметр
style_mode
. - Настройки визуализации содержат уникальный идентификатор колонки, вместо кода колонки.
- Добавлен параметр