| Предыдущая версия справа и слева
Предыдущая версия
Следующая версия
|
Предыдущая версия
|
ru:airlay:crud [2026/06/08 16:44] Калинин Александр Игоревич [Описание формата загрузки и выгрузки формат GJR(GeoJSONRelation)] |
ru:airlay:crud [2026/06/08 17:21] (текущий) Калинин Александр Игоревич [Обновление списка объектов] |
| * [[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**" то объект уходит в "toDoList" c 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. |