Spécification de la connexion Big Data

Les connexions Big Data (Big Data Connections (BDC)) sont créées à l’aide de la boîte de dialogue New Big Data Connection (Créer une connexion Big Data) ou de l’outil Créer une connexion Big Data. La boîte de dialogue et l’outil New Big Data Connection (Créer une connexion Big Data) génèrent un élément BDC que vous pouvez utiliser dans des outils de géotraitement. Les détails d’un élément BDC sont stockés dans un fichier .bdc. Les détails BDC comprennent l’emplacement des données et des informations sur chaque jeu de données.

Il est recommandé d’inspecter et de modifier vos jeux de données BDC pour vérifier qu’ils représentent correctement vos données. Pour modifier un BDC, utilisez la boîte de dialogue ou les outils BDC. Dans certains, cas, il peut être judicieux de modifier le fichier manuellement, par exemple pour mettre à jour le chemin de données source ou pour ajouter une mise en forme géométrique complexe. Si vous modifiez le fichier, tenez compte des recommandations suivantes :

  • Sauvegardez votre fichier .bdc actuel au cas où vous voudriez annuler vos modifications.
  • Validez votre fichier .bdc modifié à l’aide de la validation JSON, disponible gratuitement en ligne.

Utilisez un éditeur de texte pour modifier un fichier .bdc. La spécification du fichier est indiquée ci-dessous :

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

La connexion comprend le type et des propriétés. Les propriétés spécifient le chemin d’accès au dossier source. Pour déplacer vos données, vous pouvez mettre à jour le chemin des propriétés.

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

Les jeux de données consistent en un ou plusieurs jeux de données dans votre BDC. Le nombre de jeux de données dépend du nombre de dossiers que votre BDC contient. L'exemple suivant compte cinq jeux de données :

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

Dans de chaque jeu de données, cinq objets de niveau supérieur peuvent être applicables. Sur ces objets, name, format et schema sont obligatoires.

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

Nom

L’objet name est obligatoire et définit le nom du jeu de données. Le nom doit être unique au sein du manifeste.

Alias

L’objet alias est facultatif ; il constitue un nom alternatif pour le jeu de données qui est plus descriptif et peut contenir des caractères qui ne sont pas autorisés dans l’objet name. L’alias doit être soit identique au nom du jeu de données, soit unique dans le fichier .bdc.

Nom de la source

L’objet sourceName est facultatif lorsque l’objet name correspond au nom du dossier source. Si le nom n’est pas le même que celui du dossier source, l’objet sourceName doit être inclus et correspondre exactement au nom du dossier. L’objet sourceName vous permet de créer plusieurs jeux de données avec des noms uniques en utilisant le même dossier source. Par exemple, si vous avez un jeu de données nommé taxis, en définissant sourceName sur taxis, vous pouvez avoir des jeux de données nommés taxi_pickup et taxi_dropoff avec des géométries et une mise en forme temporelle différentes. Ces jeux de données ont le même nom de source et des noms différents. Les trois jeux de données représentent le même jeu de données d’origine : taxis.

Filtre

L’objet filter est facultatif et applique une expression SQL au jeu de données. Seules les entités qui répondent à la condition de filtrage sont utilisées. Le filtre a un impact sur le dessin, sur les entités qui apparaissent dans la table attributaire de la couche, qui peuvent être sélectionnées, étiquetées, identifiées et traitées par les outils de géotraitement. Par exemple, le filtre "X IS NOT NULL AND Y IS NOT NULL" n’utilisera que les entités dont les champs x et y ne sont pas nuls.

Propriétés

L’objet properties est requis est définit le type de jeu de données et son format.

Syntaxe

"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 >"
}

Exemples

Voici un exemple qui utilise un shapefile :

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

Voici un exemple qui utilise un fichier délimité :

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

Description

  • type : propriété obligatoire définissant les données source. Les valeurs possibles sont delimited, shapefile, parquet ou orc.
  • Les objets restants ne sont spécifiés que dans le cas de fichiers délimités et sont obligatoires :
    • delimited.extension : propriété obligatoire qui indique l’extension du fichier (par exemple csv ou tsv).
    • delimited.quoteChar : indique comment les guillemets sont spécifiés dans le fichier délimité.
    • delimited.escapeChar : indique comment les barres obliques inverses sont spécifiées dans le fichier délimité.
    • delimited.encoding : identifie le type de codage utilisé.
    • delimited.recordTerminator : représente ce qui termine les entités dans le fichier délimité.
    • delimited.fieldDelimiter : indique ce qui sépare les champs dans le fichier délimité.
    • delimited.hasHeaderRow : indique si la première ligne d’un fichier délimité est traitée comme un en-tête ou comme la première entité.

Champs

L’objet fields est obligatoire ; il définit les champs du jeu de données, les types de champ et la visibilité.

Syntaxe

"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...}
}

Exemple

"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"
  }
 ]
}

Description

  • name : propriété obligatoire qui indique le nom de champ. Le nom de champ doit être unique dans le jeu de données et ne peut contenir que des caractères alphanumériques et des traits de soulignement.
  • sourceName : propriété facultative qui indique le nom du champ dans le jeu de données source. Cette propriété est requise uniquement si le nom ne correspond pas au nom du dossier.
  • visible : propriété facultative qui indique si le champ sera visible dans les outils de géotraitement. Par défaut, la visibilité des champs initialement définis comme champs temporels et de géométrie à l’aide des outils Créer une connexion Big Data ou Actualiser une connexion Big Data est définie sur false. Tous les autres champs sont définis par défaut sur true.
  • type : propriété obligatoire qui indique le type du champ. Les options sont notamment les suivantes :
    • Int8 : représenté dans ArcGIS Pro en tant que champ numérique court.
    • Int16 : représenté dans ArcGIS Pro en tant que champ numérique court.
    • Int32 : représenté dans ArcGIS Pro en tant que champ numérique long.
    • Int64 : représenté dans ArcGIS Pro en tant que champ numérique réel double.
    • Float32 : représenté dans ArcGIS Pro en tant que champ numérique réel simple.
    • Float64 : représenté dans ArcGIS Pro en tant que champ numérique réel double.
    • String : représenté dans ArcGIS Pro en tant que champ de chaîne.
    • Binary : représenté dans ArcGIS Pro en tant que champ BLOB. Seuls les fichiers Parquet et ORC en entrée peuvent inclure des valeurs binaires.
    • Date : représenté dans ArcGIS Pro en tant que champ de date. Seuls les shapefiles, les fichiers ORC et les jeux de données Parquet peuvent comprendre des champs de date.

Géométrie

L’objet geometry est facultatif ; cependant, il est obligatoire si un jeu de données comprend une représentation spatiale, telle qu’un point, une polyligne ou un polygone.

Syntaxe

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

Exemples

Voici un exemple qui utilise un fichier délimité avec des valeurs x et y :

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

Voici un exemple qui utilise un fichier délimité avec des valeurs x, y et 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"]
 }
 ]
}

Voici un exemple qui utilise un fichier .tsv :

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

Voici un exemple qui utilise un fichier délimité dont les valeurs x se trouvent dans un champ formaté et les valeurs y dans plusieurs champs :

"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}"]
 }
 ]
}

Description

Puisque l’objet geometry est facultatif, les propriétés suivantes sont répertoriées comme requis ou facultatives, en supposant que geometry est utilisée :

  • geometryType : propriété obligatoire qui indique le type de géométrie. Les options sont notamment les suivantes :
    • esriGeometryPoint : la géométrie est de type point.
    • esriGeometryPolyline : la géométrie est de type polyligne.
    • esriGeometryPolygon : la géométrie est de type polygone.
  • spatialReference : propriété obligatoire indiquant la référence spatiale du jeu de données. Si le jeu de données a une géométrie, il faut spécifier l’un ou les deux WKID (WKID et dernier WKID) ou le WKT.
    • wkid : référence spatiale indiquée à l’aide d’un WKID, par exemple 4326.
    • latestWkid : référence spatiale pour une version donnée du logiciel.
    • wkt : référence spatiale indiquée à l’aide d’une chaîne de texte connue.
  • fields : propriété obligatoire pour les jeux de données délimités avec une représentation spatiale. Ce paramètre indique le ou les noms de champ et les formats de la géométrie.
    • name : propriété obligatoire pour les jeux de données délimités avec une représentation spatiale. Ce paramètre indique le nom du champ de géométrie. Il peut en exister plusieurs instances.
    • formats : propriété obligatoire pour les jeux de données délimités avec une représentation spatiale. Ceci indique le format du champ qui permet de représenter la géométrie. Il peut en exister plusieurs instances. Si votre emplacement est dispersé sur plusieurs champs ou s’il est formaté dans une chaîne, utilisez les valeurs ou degrees, minutes,seconds pour spécifier les unités ou direction pour spécifier la direction (N, S, W, E).

Durée

L’objet time est facultatif ; cependant, il est obligatoire si un jeu de données possède une représentation temporelle.

Syntaxe

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

Exemples

Exemple d’utilisation d’un instant avec plusieurs formats dans les champs temporels :

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

Voici un exemple qui utilise un intervalle avec plusieurs champs 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"
  }
 ]
}

Description

Puisque l’objet time est facultatif, les propriétés suivantes sont répertoriées comme requis ou facultatives, en supposant que time est utilisée :

  • timeType : propriété obligatoire si le temps est inclus dans le jeu de données. Les options sont notamment les suivantes :
    • instant : moment unique dans le temps
    • interval : intervalle temporel avec une heure de début et de fin
  • timeReference : propriété obligatoire si le jeu de données est de type temporel, indiquant le fuseau horaire (timeZone).
    • timeZone : propriété obligatoire qui indique le format du fuseau horaire des données. Les fuseaux horaires sont basés sur l’heure de Joda. Pour en savoir plus sur les formats d’heure de Joda, consultez la rubrique Fuseaux horaires disponibles à l’heure de Joda. La propriété timeZone peut se présenter comme suit :
      • Nom complet du fuseau horaire : Pacific Standard Time.
      • Le décalage du fuseau horaire exprimé en heures : -0100 ou -01:00.
      • Abréviation des fuseaux horaires : UTC ou GMT uniquement.
  • fields : champ obligatoire qui indique le nom et le format des champs temporels. Les propriétés obligatoires de fields sont les suivantes :
    • name : propriété obligatoire indiquant le nom du champ qui permet de représenter le temps. Plusieurs instances de cet objet peuvent être présentes.
    • formats : propriété obligatoire indiquant le format du champ qui permet de représenter le temps. Plusieurs formats peuvent être présents pour un seul champ (comme illustré ci-dessus) ainsi que plusieurs instances de cet objet. Pour savoir quel formatage appliquer aux champs temporels, reportez-vous à la rubrique Formats d’heure. Lorsque le format de l’heure inclut la référence temporelle, définissez la propriété timeReference sur UTC.
    • role : propriété obligatoire lorsque timeType correspond à interval. Il peut représenter la valeur startTime ou endTime d’un intervalle temporel.

Rubriques connexes