Формат файлов подключения больших данных

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

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

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

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

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

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

Наборы данных включают в себя один или несколько наборов данных в вашем подключении BDC. Количество наборов данных зависит от количества папок, из которого состоит BDC. В примере ниже представлено 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. Псевдоним должен быть либо таким же, как имя набора данных, либо уникальным в файле .bdc.

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

Этот объект 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 является обязательным, он определяет тип набора данных и формат.

Синтаксис

"format" : {
 "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 как поле short.
    • Int16 – представлен в ArcGIS Pro как поле short.
    • Int32 – представлен в ArcGIS Pro как поле long.
    • Int64 – представлен в ArcGIS Pro как поле double.
    • Float32 – представлен в ArcGIS Pro как поле float.
    • Float64 – представлен в ArcGIS Pro как поле double.
    • String – представлен в ArcGIS Pro как поле string.
    • Binary – представлен в ArcGIS Pro как поле BLOB. Только входные данные parquet и ORC могут включать бинарные значения.
    • Date – представлен в ArcGIS Pro как поле data. Только шейп-файлы, наборы данных ORC и parquet могут включать поля date.

Геометрия

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

Синтаксис

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

Примеры

Пример использования файла с разделителями со значениями x и 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 интервала времени.

Связанные разделы