Спецификация подключения к многофайловым объектам
Подключения к многофайловым объектам (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временного интервала.