Инструменты пользователя

Инструменты сайта


ru:airlay:crud

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
ru:airlay:crud [2026/06/08 16:44]
Калинин Александр Игоревич [Описание формата загрузки и выгрузки формат GJR(GeoJSONRelation)]
ru:airlay:crud [2026/06/08 17:21] (текущий)
Калинин Александр Игоревич [Обновление списка объектов]
Строка 6: Строка 6:
   * [[ru:airlay:examples|Примеры данных]]   * [[ru:airlay:examples|Примеры данных]]
  
-==== Формат ====+==== Общая информация ====
  
-Формат загрузки Airlay GJR(GeoJson Relation) основан на формате  [[https://tools.ietf.org/html/rfc7946|RFC7946 GeoJson]]. Были добавлены в формат **relations** и необязательность задачи геометрии для объектов, которые строятся на основе других объектов через **relations**.+Для массового редактирования объектов в наборе данных необходимо создать поиск по набору данных. В настройках поиска необходимо указать ключевые поля, по которым будет осуществляться поиск по объектам. К примеру это будут идентификаторы, имена объектов, различные коды. 
 +После этого необходимо создать модуль администрирования. Необходимо указать в нём поиск и список полей, которые можно посмотреть в списке.
  
-==== Поля ====+==== Получение списка объектов ====
  
-"**geometry**": данное поле задаётся в рамках [[https://tools.ietf.org/html/rfc7946|RFC7946]]. Предпочтительный формат "Point", "LineString", "Polygon", "MultiPolygon". Но, возможно использование "GeometryCollection" это можно использовать для построения сложных геометрических объектов состоящих из множества различных объектов, но являющийся в атрибутивном отношении одним. К примеру можно задать точку, полигон и линия в одном объекте с одними атрибутивными значениями. Не все части ГИС поддерживают работу с "GeometryCollection".+Для получения данных можно воспользоваться данным API.
  
-"Polygon" должен быть обязательно зацикленным начинаться и заканчиваться на одну и ту же координату, не иметь самопересечений. +https://airlay.ru/api/v4/user/performUserSearch?type=user&searchId=62a884ed984cd32eaa3255fb&queries=%5B%2264661697%22%5D&objectType=Main&filter= ( (%7B%7Bvoltage%7D%7D=0.4%7C%7B%7Bvoltage%7D%7D=%220.4%22 ) )&sortField=_id&sortOrder=desc&skip=0&limit=10
-"LineString" - должна состоять хотя бы из 2 точек. +
-Координаты первые координаты -180 180; вторые -90 90;+
  
-Координаты могут быть не заданы при наличии объектов **"relations"** тогда геометрия наследуется у объектов от которых зависит икоторые находятся ниже по иерархии. К примеру опоры для линии. Если же не заданы **"relations"**, "**geometry**" то объект уходит в "toDoListc WARNING-ом. И сохраняется как **relation**+Во первых вам понадобиться идентификатор поиска, его можно получить в администрировании просто кликнув на идентификатор возле поиска. Его указываем в поле searchId = 62a884ed984cd32eaa3255fb. Поле type = user статичное, оно означает, что используем пользовательский поиск. objectType = Main тоже статическое поле. В поле queries = можно указать значение, по которому можно выполнить поиск объектов в БД.  
 + 
 +''filter = ( ( { { voltage } } = 0.4 | { { voltage } } = "0.4) )'' в фильтр через И и ИЛИ можно указать различные поля для фильтрации. ''sortField = _id'' атрибут отвечает за сортировку данных, мы можем по ключевому полю отсортировать объекты сюда указывается поле. sortOrder = desc атрибут отвечает за порядок сортировки может быть asc и desc. ''skip=0 и limit=10'' позволяет выгружать данные порционно, рекомендуемый объём это 1000 объектов. В целом система успешно выгружает и большие пакеты, но есть ограничение в оперативной памяти в 2GIG при котором система вернёт ошибку, если не получилось получить данные. Когда система вернёт ошибку 400, то объекты закончились или их нет по заданным фильтрам. 
 + 
 +==== Добавление списка объектов ==== 
 + 
 +Чтобы добавить список объектов необходимо отправить POST запрос
 + 
 +https://airlay.ru/api/v3/dataset/editor 
 + 
 +В POST запрос в FORM DATA нужно передать два поля 
 +Идентификатор набора данных dataSetId 62a811a3e143c06e854cda72 
 +Коммит на изменение commit  
 +<code javascript> 
 +
 + { 
 +  "type":"createRelation", 
 +  "id":-1, 
 +  "geometryType":"Point", 
 +  "members":[], 
 +  "properties": 
 +   { 
 +    "Date":null, 
 +    "updateDate":1780913201 
 +   } 
 + },  
 + { 
 +  "type":"createRelation", 
 +  "id":-2, 
 +  "geometryType":"Point", 
 +  "members":[], 
 +  "properties": 
 +  { 
 +   "Date":null, 
 +   "updateDate":1780913201 
 +  } 
 + } 
 +
 +</code> 
 + 
 +В коммит нужно передать массив изменений. Первое поле тип с операцией создать relation. Второе поле создать идентификатор для объекта указываются поля -1, -2, -3. В теории можно указать сразу связи между объектами. Параметр -1 и меньше означает, что система создаст идентификатор и проставит объекту и укажет для него связи из коммита. Второе поле geometryType указываем тип объекта. members массив геометрических ссылок на объекты. "properties" поля для объекта туда можно сложить атрибуты. В примере выше мы создали 2 точки с 2 атрибутами и уникальными идентификаторами. 
 + 
 +==== Обновление списка объектов ==== 
 + 
 +Чтобы обновить список объектов необходимо отправить POST запрос. 
 + 
 +https://airlay.ru/api/v3/dataset/editor 
 + 
 +В POST запрос в FORM DATA нужно передать два поля 
 +Идентификатор набора данных dataSetId 62a811a3e143c06e854cda72 
 +Коммит на изменение commit  
 +<code javascript> 
 +
 + { 
 +  "type":"updateRelationProperties", 
 +  "id":1, 
 +  "geometryType":"Point", 
 +  "members":[], 
 +  "properties": 
 +   { 
 +    "Date":null, 
 +    "updateDate":1780913201, 
 +    "newField":"new" 
 +   } 
 + },  
 + { 
 +  "type":"createRelation", 
 +  "id":2, 
 +  "geometryType":"Point", 
 +  "members":[], 
 +  "properties": 
 +  { 
 +   "Date":null, 
 +   "updateDate":1780913201, 
 +   "newField":"new" 
 +  } 
 + } 
 +
 +</code> 
 + 
 +В коммит нужно передать массив изменений. Первое поле тип с операцией создать updateRelationProperties. Мы после создания получаем список идентификаторов или через получения списка объектов мы меняем данные объекты. В текущем примере мы меняем новые точки с идентификаторами 1 и 2 и добавляем им новое поле с новым атрибутом в поле "properties" 
 + 
 +==== Удалить списка объектов ==== 
 + 
 +Чтобы удалить список объектов необходимо отправить POST запрос. 
 + 
 +https://airlay.ru/api/v3/dataset/delete 
 + 
 +В POST запрос в FORM DATA нужно передать два поля 
 +Идентификатор набора данных dataSetId 62a811a3e143c06e854cda72 
 +Список уникальных идентификаторов ids ["1", "2"
 +В примере выше мы удаляем 2 точки с идентификаторами 1 и 2.
ru/airlay/crud.1780911840.txt.gz · Последнее изменение: 2026/06/08 16:44 — Калинин Александр Игоревич