Skip to main content

Спецификация подключения к многофайловым объектам

Подключения к многофайловым объектам (MFC) создаются с помощью диалогового окна Новое подключение к многофайловым объектам или инструмента Создать подключение к многофайловым объектам. С помощью диалогового окна Новое подключение к многофайловым объектам и инструмента генерируется элемент MFC, который можно просматривать и использовать в инструментах геообработки. Сведения об элементе MFC хранятся в файле .mfc. Сведения о MFC включают в себя расположение данных и информацию о каждом наборе данных.

Рекомендуется проверять и изменять наборы данных MFC, чтобы быть уверенными в том, что они правильно отображают ваши данные. Чтобы изменить MFC, используйте диалоговое окно или Инструменты MFC. В некоторых случаях вам может понадобиться изменить файл вручную, например, чтобы обновить путь к исходным данным или добавить сложное геометрическое форматирование. При изменении файла рекомендуется:

  • Создайте резервную копию текущего файла .mfc на случай, если вы захотите отменить изменения.

  • Выполните проверку обновленного файла .mfc с помощью проверки JSON, свободно доступной в Интернете.

Используйте текстовый редактор для изменения файла .mfc. Спецификация файла описана ниже:

"connection" : {}
"datasets":[]

Подключение включает в себя настройки типа и свойств. В свойствах указывается путь к исходной папке. Чтобы переместить данные, можно обновить путь к свойствам.

"connection" : {
"type": "filesystem",
"properties":{
   "path": <path to source folder>
   }
}

Наборы данных включают в себя один или несколько наборов данных в вашем подключении MFC. Количество наборов данных зависит от количества папок, из которого состоит MFC. В примере ниже представлено 5 наборов данных:

"datasets":[
{.. dataset1 ..},
{.. dataset2 ..},
{.. dataset3 ..},
{.. dataset4 ..},
{.. dataset5 ..},
]

В каждом наборе данных есть 5 объектов верхнего уровня, которые можно применить. Из этих объектов обязательными являются name, format и schema.

{
"name": <dataset name>,
"alias": <alias name>,
"sourceName": <source name>,
"filter": <where clause>,
"properties": {},
"fields": {},
"geometry": {},
"time": {}
}

Имя

Объект name является обязательным и определяет имя набора данных. Имя должно быть уникальным внутри манифеста.

Псевдоним

Объект alias является необязательным и представляет собой альтернативное имя набора данных, которое является более описательным и может содержать символы, запрещенные в объекте name. Псевдоним должен быть либо таким же, как имя набора данных, либо уникальным в файле .mfc.

Имя источника

Объект sourceName является необязательным, если объект name соответствует имени исходной папки. Если имя не совпадает с исходной папкой, необходимо включить объект sourceName, и он должен точно соответствовать имени папки. Объект sourceName позволяет создавать несколько наборов данных с уникальными именами, используя одну и ту же исходную папку. Например, если у вас есть набор данных с именем taxis, где в качестве sourceName указано taxis, вы можете иметь наборы данных с именами taxi_pickup и taxi_dropoff с различной геометрией и форматированием времени. Эти наборы данных имеют одинаковое имя источника, но разные имена. Все три набора данных представляют собой один и тот же исходный набор данных taxis.

Фильтр

Объект filter является необязательным и применяет выражение SQL к набору данных. Используются только объекты, подходящие под условие фильтра. Фильтр влияет на отображение, на наличие объектов в атрибутивной таблице слоя, возможность их выделения, надписывания, идентификации и обработки инструментами геообработки. Например, фильтр "X IS NOT NULL AND Y IS NOT NULL" будет использовать только те объекты, в которых поля x и y не содержат значений null.

Свойства

Объект properties является обязательным и определяет тип набора данных и его формат.

Синтаксис

"properties" : {
"fileformat" :  "< delimited | shapefile | orc | parquet >",
"delimited.extension" : "< csv | tsv | txt | other >",
"delimited.fieldDelimiter" : "< delimiter >",
"delimited.recordTerminator: "< terminator >",
"delimited.quoteChar":  "< character for quotes>",
"delimited.escapeChar":  "< character for escape>",
"delimited.hasHeaderRow" :  < true | false >,
"delimited.encoding" : "< encoding format >"
}

Примеры

Ниже приводится пример использования шейп-файла:

"format" : {
"type": "shapefile",
}

Ниже приводится пример использования файла с разделителями:

"format" : {
"type": "delimited",
"delimited.extension": "csv",
"delimited.fieldDelimiter": ",",
"delimited.recordTerminator": "\n",
"delimited.quoteChar" "\"",
"delimited.escapeChar" "\"",
"delimited.hasHeaderRow": true,
"delimited.encoding" : "UTF-8"
}

Описание

  • type – обязательное свойство, определяющее источник данных. Это может быть delimited, shapefile, или parquet``orc.

  • Остальные объекты задаются только для файлов с разделителями и являются обязательными:

    • delimited.extension — обязательное свойство, обозначающее расширение файла (например, csv или tsv).

    • delimited.quoteChar – обозначает, как указываются кавычки в файле с разделителями.

    • delimited.escapeChar – обозначает, как указываются обратные слеши в файле с разделителями.

    • delimited.encoding – указывает тип кодирования.

    • delimited.recordTerminator – описывает, что является разделителем объектов в файле.

    • delimited.fieldDelimiter – описывает, что отделяет поля в файле с разделителями.

    • delimited.hasHeaderRow – указывает, как следует считать первую строку в файле с разделителями: как заголовок или как первый объект.

Поля

Объект fields является обязательным; он определяет поля набора данных, типы полей и видимость.

Синтаксис

"fields" : [{
"name": <fieldName>,
"sourceName": <field name in source>,
"type" : < Int8 | Int16 | Int32 | Int64 | Float32 | Float64 | String |
  Binary | Date >,
"visible" : <true | false>
},
{...field 2...},
{...field 3...}
...
{...field n...}
}

Пример

"fields" : {
{
"name": "trackid",
"type": "String"
},
{
"name": "x",
"type": "Float32",
"visible" : false
},
{
"name": "y",
"type": "Float32",
"visible" : false
},
{
"name": "time",
"type": "Int64",
"visible" : false
},
{
"name": "value",
"type": "Float64"
}
]
}

Описание

  • name – обязательное свойство, описывающее имя поля. Имя поля должно быть уникальным и состоять только из букв, цифр и подчеркиваний.

  • sourceName – необязательное свойство, обозначающее имя поля в исходном наборе данных. Оно необходимо только в том случае, если имя не совпадает с именем папки.

  • visible – необязательное свойство указывает, будет ли поле отображаться в инструментах геообработки. По умолчанию поля, которые изначально заданы как поля времени и геометрии с помощью инструмента Создать подключение к многофайловым объектам или Обновить подключение к многофайловым объектам, имеют значение видимости false. Для всех остальных полей по умолчанию установлено значение true.

  • type – обязательное свойство, описывающее тип поля. К этим возможностям относятся:

    • Int8 — представляется в ArcGIS Pro как короткое поле.

    • Int16 — представляется в ArcGIS Pro как короткое поле.

    • Int32 — представляется в ArcGIS Pro как длинное поле.

    • Int64 — представляется в ArcGIS Pro как поле двойной точности.

    • Float32 — представляется в ArcGIS Pro как поле с плавающей точкой.

    • Float64 — представляется в ArcGIS Pro как поле двойной точности.

    • String — представляется в ArcGIS Pro как строковое поле.

    • Binary — представляется в ArcGIS Pro как поле BLOB. Только входные данные parquet и ORC могут включать бинарные значения.

    • Date — представляется в ArcGIS Pro как поле даты. Только шейп-файлы, наборы данных ORC и parquet могут включать поля date.

Геометрия

Объект geometry является необязательным; однако он требуется, если набор данных содержит пространственное представление, такое как точка, полилиния или полигон.

Синтаксис

"geometry" : {
"geometryType" : "< esriGeometryType >",
"spatialReference" : {
<spatial reference JSON>
},
"fields": [
{
"name": "<fieldName1>",
"formats": ["<fieldFormat1>"]
},
{
"name": "<fieldName2>",
"formats": ["<fieldFormat2>"]
}
]
}

Примеры

Пример использования файла с разделителями со значениями x и y:

"geometry" : {
"geometryType" : "esriGeometryPoint",
"spatialReference" : {
"wkid" : 3369
},
"fields": [
{
"name": "Longitude",
"formats": ["x"]
},
{
"name": "Latitude",
"formats": ["y"]
}
]
}

Пример использования файла с разделителями со значениями x, y и z:

"geometry" : {
"geometryType" : "esriGeometryPoint",
"spatialReference" : {
"wkt" : "GEOGCS[\"GCS_WGS_1984_Perfect_Sphere\",DATUM[\"D_Sphere\",SPHEROID[\"Sphere\",6371000.0,0.0]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]"
},
"fields": [
{
"name": "Longitude",
"formats": ["x"]
},
{
"name": "Latitude",
"formats": ["y"]
},
{
"name": "Height",
"formats": ["z"]
}
]
}

Ниже приведен пример использования файла .tsv:

"geometry" : {
"geometryType" : "esriGeometryPolygon",
"spatialReference" : {
"wkid": 4326
},
"fields": [
{
"name": "Shapelocation",
"formats": ["WKT"]
}
]
}

Ниже приведен пример использования файла с разделителями с x-значениями, которые находятся в форматированном поле, а y-значения находятся в нескольких полях:

"geometry" : {
"geometryType" : "esriGeometryPoint",
"spatialReference" : {
"wkid": 3857
},
"fields": [
{
"name": "XValue",
"formats": ["{x:degrees}° {x:minutes}' {x:seconds}" ]
},
{
"name": "YDegrees",
"formats": ["{y:degrees}"]
},
{
"name": "YMinutes",
"formats": ["{y:minutes}"]
},
{
"name": "YSeconds",
"formats": ["{y:seconds}"]
}
]
}

Описание

Поскольку объект geometry является необязательным, следующие свойства перечислены как обязательные или необязательные, при условии, что используется geometry:

  • geometryType – обязательное свойство, описывающее тип геометрии. К этим возможностям относятся:

    • esriGeometryPoint – тип геометрии Точки.

    • esriGeometryPolyline – тип геометрии Полилинии.

    • esriGeometryPolygon – тип геометрии Полигоны.

  • spatialReference – обязательное свойство, описывающее пространственную привязку набора данных. Если набор данных имеет геометрию, то необходимо указать либо один, либо оба WKID (WKID и последний WKID), либо WKT.

    • wkid – пространственная привязка по WKID, например, 4326.

    • latestWkid – пространственная привязка в данной версии программного обеспечения.

    • wkt – пространственная привязка с помощью известной текстовой строки.

  • fields – обязательное свойство для наборов данных с разделителями с пространственной привязкой. Обозначает имя или имена полей и форматы геометрии.

    • name – обязательное свойство для наборов данных с разделителями с пространственной привязкой. Оно определяет имя поля геометрии. Они могут быть в нескольких экземплярах.

    • formats – обязательное свойство для наборов данных с разделителями с пространственной привязкой. Описывает формат поля, в котором представлена геометрия. Они могут быть в нескольких экземплярах. Если ваше местоположение распределено по нескольким полям или отформатировано в строку, используйте значения или degrees, minutes, seconds, чтобы указать единицы измерения, или direction, чтобы указать направление (С, Ю, З, В).

Время

Объект time является необязательным; однако он требуется, если набор данных имеет временное представление.

Синтаксис

"time" : {
"timeType" : "< instant | interval >",
"timeReference" : {
"timeZone" : "<timeZone >"
},
"fields": [
{
"name": "<fieldName1>",
"formats": ["<fieldFormat1>"]
"role": "< start | end >"
}
]
}

Примеры

В этом примере показан момент с несколькими форматами в полях времени:

"time": {
"timeType": "instant",
"timeReference": {"timeZone": "UTC"},
"fields": [
{
"name": "iso_time",
"formats": [
"yyyy-MM-dd HH:mm:ss",
"MM/dd/yyyy HH:mm"
]
}
]
}

Ниже приведен пример использования интервала с несколькими полями startTime:

"time": {
"timeType": "interval",
"timeReference": {"timeZone": "-0900"},
"dropSourceFields" : true,
"fields": [
{
"name": "time_start",
"formats": ["HH:mm:ss"],
"role" : "start"
},
{
"name": "date_start",
"formats": ["yyyy-MM-dd"],
"role" : "start"
},
{
"name": "datetime_ending",
"formats": ["yyyy-MM-dd HH:mm:ss"],
"role" : "end"
}
]
}

Описание

Поскольку объект time является необязательным, следующие свойства перечислены как обязательные или необязательные, при условии, что используется time:

  • timeType – обязательное свойство, если в набор данных включено время. К этим возможностям относятся:

    • instant – один момент времени

    • interval – временной интервал с начальным и конечным временем

  • timeReference – обязательное свойство, если в наборе данных есть время, которое описывает часовой пояс (timeZone).

    • timeZone – обязательное свойство, которое описывает формат часового пояса в данных. Часовые пояса основаны на Joda времени. Подробнее о форматах времени Joda см. Часовые пояса доступные в формате времени Joda. Свойство timeZone может быть отформатировано следующим образом:

      • Полное имя часового пояса: Pacific Standard Time.

      • Смещение часового пояса, выраженное в часах: или -0100``-01:00.

      • Сокращения часовых поясов: только UTC или GMT.

  • fields – обязательное поле, описывающее имена и форматы полей со временем. Обязательные свойства fields следующие:

    • name – обязательное свойство, которое описывает имя поля, в котором хранится время. Может быть несколько экземпляров этого объекта.

    • formats – обязательное свойство, которое описывает формат поля, в котором хранится время. Существует несколько форматов для одного поля (как показано выше), а также несколько экземпляров этого объекта. Чтобы узнать, как можно форматировать поля времени, см. раздел Форматы времени. Если формат времени включает ссылку на время, установите для свойства значение timeReference``UTC.

    • role – обязательное свойство, когда является timeType``interval. Оно может представлять либо startTime, либо endTime временного интервала.