mapSurfer — rest — groups
Группы слоев
Список групп
GET /groups
Структура запроса:
GET /groups?token=bw3ty3h46yth
token: ключ доступа
Ответ:
Статус: 200 — успешное выполнение
Формат: json
{
"groups": [
{
"id": 32,
"name": "Группа 1",
"order": "1"
}
]
}
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
GET /groups/withLayers
Список групп, включая полную информацию по принадлежащим им слоям
Структура запроса:
GET /groups/withLayers?token=bw3ty3h46yth
token: ключ доступа
Ответ:
Статус: 200 — успешное выполнение
Формат: json
{
"groups": [
{
"id": 32,
"name": "Группа1",
"order": "1",
"groupLayers": [
{
"layer": {
"id": 10,
"name": "Слой 1",
"enabled": false,
"info": {
"id": 10,
"typeName": "test:test_layer",
"style": "test_layer_a",
"service": "WMS",
"poly": false,
"requestUrl": "/service/wms"
},
"fields": [
{
"id": 4076,
"name": "adm_znach",
"nameRu": "Поле 1",
"order": 1,
"title": false
}
],
"isKosmosnimok": false
},
"order": 1,
"groupId": 32
}
]
}
]
}
// массив групп
// объект
// id группы, целое число
// название группы, строка
// порядковый номер группы, целое число
// массив слоев
// информация по слою, объект
// id слоя, целое число
// русское название слоя, строка
// включен ли слой по умолчанию, булевое поле
// информация по слою, объект
// id слоя, целое число
// английское название слоя, строка
// название стиля, строка
// тип сервиса, WMS/WFS
// является ли полигоном, булевое поле
// url для запроса, строка
// массив полей
// объект поля
// id поля, целое число
// английское название поля, строка
// русское название поля , строка
// порядок следования в списке, целое число
// является ли заголовком, булевое поле
// является ли космоснимком, булевое поле
// порядок слоя в списке, целое число
// id группы
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
GET /groups/shortdata/withLayers
Список групп, включая краткую информацию по принадлежащим им слоям
Структура запроса:
GET /groups/shortdata/withLayers?token=bw3ty3h46yth
token: ключ доступа
Ответ:
Статус: 200 — успешное выполнение
Формат: json
{
"groups": [
{
"id": 32,
"name": "Группа1",
"order": "1",
"groupLayers": [
{
"layer": {
"id": 10,
"name": "Слой 1",
"enabled": false,
"info": {
"id": 10,
"typeName": "test:test_layer",
"style": "test_layer_a",
"service": "WMS",
"poly": false,
"requestUrl": "/service/wms",
},
},
"order": 1,
"groupId": 32
}
]
}
]
}
// массив групп
// объект
// id группы, целое число
// название группы, строка
// порядковый номер группы, целое число
// массив слоев
// информация по слою, объект
// id слоя, целое число
// русское название слоя, строка
// включен ли слой по умолчанию, булевое поле
// информация по слою, объект
// id слоя, целое число
// английское название слоя, строка
// название стиля, строка
// тип сервиса, WMS/WFS
// является ли полигоном, булевое поле
// url для запроса, строка
// порядок слоя в списке, целое число
// id группы
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Поиск по названию
GET /groups
Структура запроса:
GET /groups?name=Пункт&token=bw3ty3h46yth
name: слово/фраза, которая входит в название списка групп
token: ключ доступа
Ответ:
Статус: 200 — успешное выполнение
Формат: json
{
"groups": [
{
"id": 32,
"name": "Группа 1",
"order": "1"
}
]
}
// массив объектов с информацией по группе
// id группы, целое число
// название группы, строка
// порядковый номер группы в списке, целое число
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
GET /groups/withLayers
Поиск списка групп, включая полную информацию по принадлежащим им слоям
Структура запроса:
GET /groups/withLayers?name=Пункт&token=bw3ty3h46yth
name: слово/фраза, которая входит в название списка групп
token: ключ доступа
Ответ:
Статус: 200 — успешное выполнение
Формат: json
{
"groups": [
{
"id": 32,
"name": "Группа1",
"order": "1",
"groupLayers": [
{
"layer": {
"id": 10,
"name": "Слой 1",
"enabled": false,
"info": {
"id": 10,
"typeName": "test:test_layer",
"style": "test_layer_a",
"service": "WMS",
"poly": false,
"requestUrl": "/service/wms"
},
"fields": [
{
"id": 4076,
"name": "adm_znach",
"nameRu": "Поле 1",
"order": 1,
"title": false
}
],
"isKosmosnimok": false
},
"order": 1,
"groupId": 32
}
]
}
]
}
// массив групп
// объект
// id группы, целое число
// название группы, строка
// порядковый номер группы, целое число
// массив слоев
// информация по слою, объект
// id слоя, целое число
// русское название слоя, строка
// включен ли слой по умолчанию, булевое поле
// информация по слою, объект
// id слоя, целое число
// английское название слоя, строка
// название стиля, строка
// тип сервиса, WMS/WFS
// является ли полигоном, булевое поле
// url для запроса, строка
// массив полей
// объект поля
// id поля, целое число
// английское название поля, строка
// русское название поля , строка
// порядок следования в списке, целое число
// является ли заголовком, булевое поле
// является ли космоснимком, булевое поле
// порядок слоя в списке, целое число
// id группы
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Поиск по id
GET /groups/{groupId}
Структура запроса:
GET /groups/224?token=bw3ty3h46yth
groupId: id группы
token: ключ доступа
Ответ:
Статус: 200 — успешное выполнение
Формат: json
{
group: {
id: 32,
name: "Базовые слои",
order: "1"
}
}
// группа, объект
// id группы, целое число
// название группы, строка
// порядок группы в списке
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
GET /groups/{groupId}/withLayers
Группа слоев, включая полную информацию по принадлежащим ей слоям
Структура запроса:
GET /groups/224/withLayers?token=bw3ty3h46yth
groupId: id группы
token: ключ доступа
Ответ:
Статус: 200 — успешное выполнение
Формат: json
{
"group": {
"id": 32,
"name": "Населенные пункты",
"order": "1",
"groupLayers": [
{
"layer": {
"id": 10,
"name": "Населенные пункты",
"enabled": false,
"info": {
"id": 10,
"typeName": "test:test_a",
"style": "style_test__a",
"service": "WMS",
"poly": true,
"requestUrl": "/service/wms"
},
"fields": [
{
"id": 4076,
"name": "test",
"nameRu": "Поле1",
"order": 1,
"title": true
}
],
"isKosmosnimok": false
},
"order": 1,
"groupId": 32
}
]
}
}
// группа, объект
// id группы, целое число
// название группы, строка
// порядковый номер группы, целое число
// массив слоев
// информация по слою, объект
// id слоя, целое число
// русское название слоя, строка
// включен ли слой по умолчанию, булевое поле
// информация по слою, объект
// id слоя, целое число
// английское название слоя, строка
// название стиля, строка
// тип сервиса, WMS/WFS
// является ли полигоном, булевое поле
// url для запроса, строка
// массив полей
// объект поля
// id поля, целое число
// английское название поля, строка
// русское название поля , строка
// порядок следования в списке, целое число
// является ли заголовком, булевое поле
// является ли космоснимком, булевое поле
// порядок слоя в списке, целое число
// id группы
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
mapSurfer — rest — service
Сервисы
WMS
GET /wms
Получение тайла слоя
Структура запроса:
GET /service/wms?service=WMS&request=GetMap&version=1.1.1&layers=kziokzn:vamin_kioski_p_vw&
styles=vamin_kioski_p_vw_style_21_03_2011_19_20_16&format=image/png&transparent=true&height=256&
width=256&srs=EPSG:900913&bbox=5283327.395071382,7514065.628545966,5322463.153553393,7553201.387027976&
token=bw3ty3h46yth
service: сервис запроса WMS
request: название запроса GetMap
version: версия 1.1.1
layers: английское название слоя или слоев через запятую
styles: название стиля или стилей через запятую
format: формат, в котором вернется тайл
transparent: есть ли прозрачность
height: высота тайла
width: ширина тайла
srs: код проекции
bbox: область запроса
cql_filter: строка CQL фильтра
token: ключ доступа
Ответ:
Статус: 200 — успешное выполнение
Формат: зависит от параметра format
Статус: 404 — ни один слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 403 — нет доступа к слою
Формат: text/plain
Содержит описание ошибки
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
GET /wms
Запрос легенды слоя
Структура запроса:
GET /service/wms?request=GetLegendGraphic&style=vamin_kioski_p_vw_style_21_03_2011_19_20_16&
layer=kziokzn:vamin_kioski_p_vw&format=image/png&token=bw3ty3h46yth
request: название запроса GetLegendGraphic
layer: английское название слоя
style: название стиля слоя
format: формат, в котором вернется легенда
token: ключ доступа
Ответ:
Статус: 200 — успешное выполнение
Формат: зависит от параметра format
Статус: 404 — слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 403 — нет доступа к слою
Формат: text/plain
Содержит описание ошибки
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
WFS
GET /wfs
Получение WFS слоя
Структура запроса:
GET /service/wfs?service=WFS&version=1.0.0&request=GetFeature&typeName=DEMO:kfu_building&outputFormat=json&
bbox=40.14404296875,52.905589081407825,61.23779296875,57.630699148918424&token=bw3ty3h46yth
service: сервис запроса WFS
request: название запроса GetFeature
version: версия 1.0.0
typeName: английское название слоя
outputFormat: формат возвращаемых данных
bbox: область запроса слоя
srs: код проекции, по умолчанию EPSG:4326
token: ключ доступа
Ответ:
Статус: 200 — успешное выполнение
Формат: зависит от параметра outputFormat
Статус: 404 — слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 403 — нет доступа к слою
Формат: text/plain
Содержит описание ошибки
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Стиль слоя
GET /service/styles/{layerId}/{styleName}.sld
Запрос sld-файла стиля
Структура запроса:
GET /service/styles/367/set_wifi_iconstyle_02_10_2012_14_00_01.sld?token=bw3ty3h46yth
layerId: id слоя
styleName: название стиля
token: ключ доступа
Ответ:
Статус: 200 — успешное выполнение
Формат: text/xml
Статус: 404 — слой не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 403 — нет доступа к слою
Формат: text/plain
Содержит описание ошибки
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
mapSurfer — rest — auth
Авторизация
Авторизация на сервере
POST /auth/token
Пример запроса
{
"login": "testlogin",
"password": "12345"
}
Ответ:
Статус: 200 — успешное выполнение
Формат: json
{
{
"token": "ethryhetyjtyj",
"refreshToken": "ethryhetyjtyj",
"ttl": 3600
}
}
// ключ доступа, строка
// ключ для обновления ключа доступа, строка
// время жизни ключа доступа в секундах, целое число
Статус: 401 — логин или пароль переданы неверно
Формат: text/plain
Содержит описание ошибки
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Обновление ключа доступа
GET /auth/token/refresh
Структура запроса:
GET /auth/token/refresh?refreshToken=738975947453
}
refreshToken: ключ для обновления ключа доступа
Ответ:
Статус: 200 — успешное выполнение
Формат: json
{
"token": "ethryhetyц4564",
"refreshToken": "yrjryukryukryu",
"ttl": 3600
}
}
// новый ключ доступа, строка
// новый ключ для обновления ключа доступа, строка
// время жизни ключа доступа в секундах, целое число
Статус: 400 — не передан параметр refreshToken
Формат: text/plain
Содержит описание ошибки
Статус: 404 — параметр refreshToken не найден в системе
Формат: text/plain
Содержит описание ошибки
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Авторизован ли пользователь
GET /auth
Структура запроса:
GET /auth?token=bw3ty3h46yth
token: ключ доступа
Ответ:
Статус: 200 — успешное выполнение
Формат: json
{
"authenticated": true,
"user": {
"id": 11,
"name": "Пользователь",
"right": {
"id": 1,
"name": "Права",
"admin": false,
"mapExtent": {
"id": 2,
"name": "Republic of Tatarstan",
"extent": {
"minX": 46.09270788877181,
"minY": 53.99190870342375,
"maxX": 55.299713101706935,
"maxY": 56.68378708907719,
"projection": "EPSG:4326"
}
}
}
}
}
}
// true, если пользователь авторизован, иначе false, булевое поле
// данные о пользователе, если он авторизован, объект
// id пользователя, целое число
// имя пользователя, строка
// данные о группе прав, объект
// id группы прав, целое число
// название группы прав, строка
// имеются ли права админа, булевое поле
// данные о границе карты для данной группы прав, объект
// id границы карты, целое число
// название границы карты, строка
// область видимости карты, объект
// минимальный x, число с плавающей точкой
// минимальный y, число с плавающей точкой
// максимальный x, число с плавающей точкой
// максимальный y, число с плавающей точкой
// проекция
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
Выход
GET /logout
Структура запроса:
GET /logout?token=bw3ty3h46yth
token: ключ доступа
Ответ:
Статус: 200 — успешное выполнение
Формат: json
{
"status": "ok"
}
Статус: 500 — ошибка на сервере
Формат: text/plain
Содержит описание ошибки
mapSurfer — API — ex
Примеры использования
Подключение API
Для начала работы с API Вам необходимо в своем проекте сделать несколько подключений:
<script src="@utils.Config.baseHost/public/javascripts/libs/jquery/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="@utils.Config.baseHost/public/javascripts/libs/jquery/jquery-ui-1.9.2.custom.min.js" type="text/javascript"></script>
Кроме подключения jquery и jquery-ui, необходимо подключить сам API.
<script src="@utils.Config.baseHost/public/geoportal/geoportal-api.min.js" type="text/javascript"></script>
Создание простой карты
Для добавления карты у Вас должен быть DOM элемент, предположим, что он имеет id=”map”, тогда создание карты будет выглядеть следующим образом:
var map = new GeoPortal.Map(“map”);
Добавление и управления слоями
Далее на эту карту наверняка понадобится добавить несколько слоев.
Предположим, что мы знаем id слоя, который нам нужно добавить на карту (пусть id буде равен 204), найдем этот слой и добавим на карту.
function exampleForLayer(layer){
map.addLayer(layer); //обавляем слой на карту
layer.setOpasity(0.6); //добавляем слою прозрачность
}
GeoPortal.Layer.findLayerById(
204,
exampleForLayer,
function(status, error){
console.log(error);
}
);
Динамические элементы
Динамические объекты нужны для выделения областей, добавления на карту маркеров и т.д.
Примеры использования:
var popup = new GeoPortal.Popup({closeButton: true, minWidth: 100});
popup.setLatLng(new GeoPortal.LatLng(55,49));
map.addLayer(popup)
var marker = new GeoPortal.Marker(new GeoPortal.LatLng(55,49))
map.addMarker(marker);
var polyline = new GeoPortal.Vector.PolyLine([new GeoPortal.LatLng(55,49), new GeoPortal.LatLng(55.1, 49.1)]);
map.addLayer(polyline);
mapAdmin — reg
Регистрация
Регистрация пользователя
POST /registration
Отправляется json строка с параметрами регистрации:
{
"login": ,
"paswd": ,
"email": ,
"status": ,
"ur_fio": "",
"ur_address": ,
"phone":
}
// логин
// пароль
// email
// 1 - юридическое лицо, 2 - физическое
// ФИО
// адрес
// телефон
Формат ответа:
{
"res" : 1,
"resText":
}
Список полей для регистрации
GET /registration/form
general — общие поля
physicalPerson — поля для физических лиц
legalPerson — поля для юридических лиц
url — url для отправки полей на регистрацию
{
"name":,
"rusName":,
"required":,
"values":
}
// английское название параметра
// русское название параметра
// обязательный ли параметр: true, false
// какие может применять значения (важен для параметра status)
Формат ответа:
{
"res": 1,
"fields": {
"general": [{
"name": "login",
"rusName": "Логин",
"required": true,
"values": ""
}]
},
"url": "/rest/registration/"
}
// название поля
// русское название поля
// обязательное ли поле true или false
Проверка логина на существование в системе
POST /registration/checklogin
login — логин
{
"login": ""
}
// логин
Формат ответа:
check = true — логина не существует в системе
check = false — логин существует в системе
{
"res": 1,
"check":
}
// true или false, свободен ли логин
mapAdmin — version
Версия
Текущая версия системы
GET /version
Формат ответа:
{
"res": 1,
"version":
}
// версия
mapAdmin — users
Пользователи
Список пользователей
Доступ для пользователей (кроме администратора всех ведомств, которому всегда доступен запрос) определяется в настройках системы
GET /users
Формат ответа:
{
"res": 1,
"users": [{
"id": ,
"login": ,
"fio": ,
"role_id": ,
"department_id":
}]
}
// id пользователя
// логин
// ФИО
// id роли: 6, 7 - обычный пользователь, 10 - админ ведомства, 8 - админ всех ведомств
// id ведомства, либо null, если пользователь с ролью 8
Формат ответа, если нет доступа:
{
"res": 0,
"resText": "У вас нет прав для получения данных."
}
Количество пользователей в системе
GET /users/count
Формат ответа:
{
"res": 1,
"count": "{количество}"
}
Стандартное хранилище данных для пользователя, если оно существует
GET /users/standartStore
Формат ответа:
{
"res": 1,
"store": {
"id": ,
"host": ,
"port": ,
"database":
}
}
// ip адрес host, напр."178.213.246.98"
// порт, напр. "5432"
// название базы данных, напр. "testdb2"
mapAdmin — departments
Ведомства
Путь к логотипам ведомств:
/department_files/department_logo
Cписок организаций / ведомств, доступных в АРМ Губернатора
GET /departments/
Формат ответа:
{
"res": 1,
"departments": [{
"id": "{}",
"name": "{}",
"logo": "{}",
"people_dep": "{}",
"arm_view": "{}",
"map_extent_id": "{}",
"users_count": "{}",
"right_id": 0
}]
}
// id ведомства/организации
// название ведомства/организации
// название логотипа
// является ли ведомство ведомством населения
// отображать ведомство в АРМ Губернатора
// id положения карты
// количество пользователей
// id права
Список организаций / ведомств
GET /departments/{all|arm}/{limit}/{offset}
all — все
arm — видимые в АРМ Губернатора
limit — количество организаций, выводимых в запросе
offset — количество организаций, которое будет пропущено в общем списке и после него будет формироваться запрос
Формат ответа:
{
"res": 1,
"departments": [{
"id": "{}",
"name": "{}",
"logo": "{}",
"people_dep": "{}",
"arm_view": "{}",
"map_extent_id": "{}",
"users_count": "{}",
"right_id": 0
}]
}
// id ведомства/организации
// название ведомства/организации
// название логотипа
// является ли ведомство, ведомством населения
// отображать ведомство в АРМ Губернатора
// id положения карты
// количество пользователей
// id права
Количество организаций / ведомств
GET /departments/count
Формат ответа:
{
"res": 1,
"count":
}
// количество
Название организации / ведомства
GET /departments/{departmentId}/name
Формат ответа:
{
"res": 1,
"department_name":
}
// название
Список пользователей ведомства
Доступ для пользователей (кроме администратора всех ведомств, которому всегда доступен запрос) определяется в настройках системы
GET /departments/{departmentId}/users
Формат ответа:
{
"res": 1,
"users": [{
"id": ,
"login": ,
"fio": ,
"role_id": ,
"department_id": ""
}]
}
// id пользователя
// логин
// ФИО
// id роли: 6, 7 - обычный пользователь, 10 - админ ведомства, 8 - админ всех ведомств
// id ведомства, либо null, если пользователь с ролью 8
Формат ответа, если нет доступа:
{
"res": 0,
"resText": "У вас нет прав для получения данных."
}
mapAdmin — city
Города
Путь к фотографиям городов: /department_files/city_photos
Список городов
GET /city
Формат ответа:
{
"res": 1,
"cities": [{
"id": ,
"name": ,
"photo": ,
"matrix": ,
"order":
}]
}
// id города
// название
// название фотографии
// матрица перелета
// порядок отображения
mapAdmin — files
Файлы
Загрузка файлов
POST /files/upload/{photos|video|files|sounds|sld}
Передавать файл в переменной Filedata (Content-Disposition: name=»Filedata»;)