Это старая версия документа!
Формат загрузки Airlay основан на формате RFC7946 GeoJson. Были добавлены в формат relations и необязательность задачи геометрии для объектов, которые строятся на основе других объектов через relations.
«geometry»: данное поле задаётся в рамках RFC7946. Предпочтительный формат «Point», «LineString», «Polygon», «MultiPolygon». Но, возможно использование «GeometryCollection» это можно использовать для построения сложных геометрических объектов состоящих из множества различных объектов, но являющийся в атрибутивном отношении одним. К примеру можно задать точку, полигон и линия в одном объекте с одними атрибутивными значениями. Не все части ГИС поддерживают работу с «GeometryCollection».
«Polygon» должен быть обязательно зацикленным начинаться и заканчиваться на одну и ту же координату, не иметь самопересечений. «LineString» - должна состоять хотя бы из 2 точек. Координаты первые координаты -180 180; вторые -90 90;
Координаты могут быть не заданы при наличии объектов «relations» тогда геометрия наследуется у объектов от которых зависит и, которые находятся ниже по иерархии. К примеру опоры для линии. Если же не заданы «relations», «geometry» то объект уходит в «toDoList» c WARNING-ом. И сохраняется как relation.
«relations»: Объект задаёт связи между объектами.
«deleted»: Необязательное поле, если true, объект будет удален из базы данных.
«objectId»: Уникальный идентификатор объекта, алгоритм ищет объект с этим id в файле и затем в связанных слоях, если объект не обнаружен то во время загрузки появится WARNING о том что связь не была создана.
Иерархия между объектами строится за счёт relations. Если в объекте указан relations на другие объекты то текущий объект находиться в иерархии выше чем указанные в нём объекты.
3) Features - коллекция в которой хранятся геометрические объекты с их свойствами в формате GeoJSON с нашими полями в systemProperties.
{ "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "key": "value" }, "system": { "relations": [ { "objectId": "37afa850-82bc-4692-b7c7-e7a1bc4aa1c9" }, { "objectId": "37afa850-82bc-4692-b7c7-e7a1bc4aa142" } ], "operation": "delete"/"create"/"relationUpdate"/"coordinatesUpdate" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 42.73633, 44.40153 ], [ 42.73696, 44.40228 ], [ 42.73797, 44.40185 ], [ 42.73732, 44.4011 ], [ 42.73633, 44.40153 ] ] ] } } ] }
Для удаления объекта, значение properties.id(уникальное поле) должно соответствовать удаляемому объекту:
{ "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "id": "value" }, "system": { "relations": [ { "objectId": "37afa850-82bc-4692-b7c7-e7a1bc4aa1c9" }, { "objectId": "37afa850-82bc-4692-b7c7-e7a1bc4aa142" } ], "operation": "delete"/"create"/"update"/"relationUpdate"/"coordinatesUpdate" }, "geometry": { "type": "Polygon" } } ] }
Данный параметр является необязательным в формате и используется для специфических бизнес задач.
Для добавления иерархических связей, необходимо задать массив связей «hierarchy». Один набор данных может содержать несколько различных связей.
Объект иерархии содержит «name» : «»,
{ "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "id": "value" }, "system": { "relations": [ { "objectId": "37afa850-82bc-4692-b7c7-e7a1bc4aa1c9" }, { "objectId": "37afa850-82bc-4692-b7c7-e7a1bc4aa142" } ], "hierarchy" : [ { "name" : "direct", "elements" : [ { "type" : "aggregation\composition" "objectId": "37afa850-82bc-4692-b7c7-e7a1bc4aa1c9" }, { "type" : "aggregation\composition" "objectId": "37afa850-82bc-4692-b7c7-e7a1bc4aa1c9" } ] }, { "name" : "direct", "elements" : [ { "type" : "aggregation\composition" "objectId": "37afa850-82bc-4692-b7c7-e7a1bc4aa1c9" }, { "type" : "aggregation\composition" "objectId": "37afa850-82bc-4692-b7c7-e7a1bc4aa1c9" } ] }, ] "operation": "delete"/"create"/"update"/"relationUpdate"/"coordinatesUpdate" }, "geometry": { "type": "Polygon" } } ] }