Skip To Content

Comprender el manifiesto de uso compartido de archivos de Big Data

Los recursos compartidos de archivos de big data se registran como un data store mediante ArcGIS Server Manager. Exigen un manifiesto en el que se describa el esquema de los datos, así como los campos que representan la geometría y el tiempo en el dataset. El manifiesto se genera automáticamente al registrar un recurso compartido de archivos de big data, pero puede que necesite realizar modificaciones si se produce algún cambio en los datos o si la generación del manifiesto no pudo determinar toda la información necesaria (por ejemplo, si el manifiesto generado automáticamente no seleccionó el campo correcto para la geometría o el tiempo).

Nota:

La edición del archivo compartido de Big Data es una opción avanzada. Para obtener más información sobre cómo aplicar cambios a datasets individuales del manifiesto, consulte Editar manifiestos de archivos compartidos de Big Data en Manager. Para obtener información sobre cómo aplicar un archivo de sugerencias a los archivos delimitados, consulte Comprender el archivo de sugerencias.

El manifiesto está compuesto por datasets. La cantidad de datasets depende de la cantidad de carpetas que contenga el uso compartido de archivos de Big Data. En el ejemplo siguiente existen cinco datasets:

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

Dentro de cada dataset, existen cinco objetos de nivel superior que pueden ser aplicables. De estos objetos, name, format y schema son necesarios.

{
 "name": "dataset1", "format": {}, "schema": {}, "geometry": {}, "time": {}
}

Nombre

El objeto name es necesario y define el nombre del dataset. Debe ser único en el manifiesto.

Formato

El objeto format es obligatorio y define el tipo de dataset y su formato.

SintaxisEjemplo
"format" : {
 "type" :  "< delimited | shapefile | orc | parquet >",
 "extension" : "< csv | tsv | shp | orc | parquet >",
 "fieldDelimiter" : "< delimiter >",
 "recordTerminator: "< terminator >",
 "quoteChar":  "< character for quotes>",
 "hasHeaderRow" :  < true | false >, 
 "encoding" : "< encoding format >"
}

Ejemplo utilizando un shapefile:

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

Ejemplo utilizando un archivo delimitado:

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

Descripción

  • type: una propiedad requerida que define la fuente de datos. Puede ser delimited, shapefile, parquet o orc.
  • extension: una propiedad requerida que indica la extensión del archivo. Para shapefiles, es shp; los archivos delimitados utilizan la extensión del archivo de los datos (por ejemplo, csv o tsv), los archivos ORC usan orc; y los archivos de parquet utilizan parquet.
  • fieldDelimiter: es necesario si type es delimited. Este campo representa qué es lo que separa a los campos en el archivo delimitado.
  • recordTerminator: solo es necesario si type es delimited. Este campo especifica qué es lo que finaliza las entidades en el archivo delimitado.
  • quoteChar: solo es necesario si type es delimited. El carácter indica cómo se especifican las comillas en el archivo delimitado.
  • hasHeaderRow: solo es necesario si type es delimited. Esta propiedad especifica si la primera fila de un archivo delimitado se debe tratar como un encabezado o como la primera entidad.
  • encoding: solo es necesario si type es delimited. Esta propiedad especifica el tipo de codificación utilizado.

Esquema

El objeto schema es necesario; define los campos del dataset y el tipo de campo.

SintaxisEjemplo
"schema" : {
 "fields" : {
  "name": "< fieldName >",
  "type" : "< esriFieldTypeString | 
     esriFieldTypeBigInteger | 
     esriFieldTypeDouble >"
 }
}
"schema" : {
 "fields":[  {
   "name": "trackid",   "type": "esriFieldTypeString"
  },  {
   "name": "x",   "type": "esriFieldTypeDouble"
  },  {
   "name": "y",   "type": "esriFieldTypeDouble"
  },  {
   "name": "time",   "type": "esriFieldTypeBigInteger"
  },  {
   "name": "value",   "type": "esriFieldTypeBigInteger"
  }
 ]
}

Descripción

  • fields: una propiedad requerida que define los campos en el esquema.
  • name: una propiedad requerida que indica el nombre del campo. El nombre del campo debe ser único en el dataset y solo puede contener caracteres alfanuméricos y guiones bajos.
  • type: es una propiedad requerida que define el tipo de campo. Entre las opciones se incluyen las siguientes:
    • esriFieldTypeString: para cadenas de caracteres
    • esriFieldTypeDouble: para dobles o flotantes
    • esriFieldTypeBigInteger: para enteros
    • esriFieldTypeDate: para shapefiles con campos de fecha. Los datasets delimitados, ORC y de parquet con campos que representan una fecha deben tener fechas representadas mediante un campo esriFieldTypeString.

Geometría

El objeto geometry es opcional. Es necesario si un dataset tiene una representación espacial como, por ejemplo, un punto, polilínea o polígono.

SintaxisEjemplo
"geometry" : {
 "geometryType" : "< esriGeometryType >",
 "spatialReference" : {
  "wkid": <wkidNum>,
  "latestwkid" : <latestWkidNum>
  },
 "fields": [
 {
  "name": "<fieldName1>",
  "formats": ["<fieldFormat1>"]
 },
 {
  "name": "<fieldName2>",
  "formats": ["<fieldFormat2>"]
 }
 ]
}

Ejemplo utilizando un archivo delimitado con valores x e y:

"geometry" : {
 "geometryType" : "esriGeometryPoint", "spatialReference" : {
  "wkid": 3857 }, "fields": [ {
  "name": "XValue",  "formats": ["x"] }, {
  "name": "YValue",  "formats": ["y"] }
 ]
}

Ejemplo utilizando un archivo delimitado con valores x,y,z:

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

Ejemplo utilizando un archivo .tsv:

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

Descripción

Nota:

Dado que el objeto geometry es opcional, las siguientes propiedades se enumeran como necesarias u opcionales, suponiendo que se utiliza una geometría:

  • geometryType: es necesaria. Entre las opciones se incluyen las siguientes:
    • esriGeometryPoint
    • esriGeometryPolyline
    • esriGeometryPolygon
  • spatialReference: una propiedad requerida que indica la referencia espacial del dataset.
    • wkid: un campo que indica la referencia espacial, donde wkid o latestWkid es necesario para un dataset con una geometría.
    • latestWkid: un campo que indica la referencia espacial en una versión de software determinada, donde wkid o latestWkid es necesario para un dataset con geometría.
  • fields: una propiedad requerida para datasets delimitados con una representación espacial. Esto indica los formatos y los nombres o el nombre del campo de la geometría.
    • name: una propiedad requerida para datasets delimitados con una representación espacial. Indica el nombre del campo utilizado para representar la geometría. Puede haber varias instancias de estos elementos.
    • formats: una propiedad requerida para datasets delimitados con una representación espacial. Indica el formato del campo utilizado para representar la geometría. Puede haber varias instancias de estos elementos.

Time

El objeto time es opcional. Es necesario si un dataset tiene una representación temporal.

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

Ejemplo con un instante con varios formatos en los campos de tiempo:

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

Ejemplo con un intervalo, con varios campos utilizados para startTime:

"time": {
 "timeType": "interval", "timeReference": {"timeZone": "-0900"}, "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"
  }
 ]
}

Descripción

Nota:

Dado que el objeto time es opcional, las siguientes propiedades se enumeran como necesarias u opcionales, suponiendo que se utiliza time:

  • timeType: el tipo de tiempo es necesario si el tiempo se incluye en el dataset. Entre las opciones se incluyen las siguientes:
    • instant: para un único momento en el tiempo
    • interval: para un intervalo de tiempo representado con un tiempo inicial y final
  • timeReference: un campo requerido si el dataset tiene habilitada la función de tiempo y que indica la zona horaria (timeZone).
    • timeZone: un campo requerido de timeReference que indica el formato de la zona horaria de los datos. timeZone puede tener el siguiente formato:
      • Utilizando el nombre completo de la zona horaria: Pacific Standard Time
      • Utilizando la abreviatura de la zona horaria: PST
  • fields: un campo requerido para indicar los nombres y formatos de los campos de tiempo. Estas son las propiedades requeridas de fields:
    • name: un campo requerido que indica el nombre del campo utilizado para representar el tiempo. Puede haber varias instancias de este objeto.
    • formats: un campo requerido que indica el formato del campo utilizado para representar el tiempo. Puede haber varios formatos para un único campo (como se muestra arriba). Puede haber varias instancias de este objeto. Para aprender cómo se pueden formatear los campos, consulte Formatos de hora en un manifiesto de recursos compartidos de archivos de big data.
    • role: un campo obligatorio si timeType es interval. Puede representar el startTime o el endTime de un intervalo de tiempo.