Table des matières

Formats d'import/export - Format v1.0

Accéder à la page de discussions sur le format d'import/export en cliquant sur l'icône de la barre d'outil à droite.

Objectif : proposer un format d'échange de données simple (autant que possible), bien documenté, pratique, facilitant l'intégration des données sous GeoNature et respectant le standard OccTax du SINP.

Processus d'importation

Ce document est en cours de travail. Les informations qu'il contient peuvent donc être amenées à changer à tout moment !

Transmission des fichiers

Les fichiers seront transmis dans un fichier d'archive au format ZIP. Le nom du fichier devra être en minuscule et contenir plusieurs parties séparées par des underscores ("_"). Les parties du fichier seront les suivantes :

  1. date au format ISO 8601 : 2020-08-26
  2. sujet : sinp
  3. abréviation de la région concernée : paca / aura
  4. abréviation de l'organisme fournisseur : cbna / cbnmed / cbnmc / cenpaca …
  5. extension : .zip

Exemple : 2020-08-26_sinp_paca_cbna.zip

L'archive devra contenir au minimum les fichiers suivants :

Les fichiers suivants pourront aussi être fournis sans être obligatoires :

Principe de la procédure d'import initial

Principe de la procédure de mise à jour

Format du fichier des métadonnées de l'archive "meta_archive.ini"

Ce fichier au format INI a pour objectif de fournir les informations sur l'origine des autres fichiers fournis dans l'archive.
Il concerne le créateur de l'archive.

Ce fichier devra:

Les règles à respecter pour ce format INI sont le suivantes :

Format (en gras les champs obligatoires) :

Exemple :

format_version = 1.0
export_date = 2020-08-27 10:15
taxref_version = 13
editor = Conservatoire Botanique National Alpin
contact = jp.milcent@cbn-alpin.fr
notes = "Données de test.
    À utiliser seulement lors de la phase de conception."

Format des fichiers d'import

Pour importer les données (initialement ou en mise à jour), nous utiliserons des fichiers CSV associé à la commande COPY. Ces fichiers CSV devront :

Le format CSV (en réalité plutôt TSV) qu'ils contiendront devra respecter les règles suivantes :

Il faut vous assurer d'avoir supprimé, remplacé ou protégé les caractères suivant dans les valeurs des champs :

Ce mécanisme de remplacement des caractères \n, \r… dans la base n'est pas fonctionnel pour l'instant. L'utilisation du mode CSV désactive ce mécanisme comme indiqué ici dans la doc de Postgresql.

Notes diverses

Champs additionnels

Le standard prévoit la transmission de champs additionnels.

Nous prévoyons la possibilité de fournir des champs additionnels pour toutes les types de ressources de 2 façons :

Afin de respecter le standard, il est nécessaire de fournir les méta-données de ces champs additionnel en fournissant le fichier meta_additional_data.csv (voir META_ADDITIONAL_DATA). Ce fichier contient la descriptions des champs additionnels.

Pour faciliter l'intégration des données, l'utilisation du champ additional_data est conseillée.
Les champs additionnels ne seront pas forcément traités pour toutes les ressources. Seuls les champs de la ressource SYNTHESE seront transmis au niveau national.

À faire / Améliorations

Évolutions

Format SYNTHESE d'import

NOTES : nous n'utilisons par le champ meta_v_taxref car la transmission de l'info via le fichier meta_archive.ini suffit.

Description du format SYNTHESE

Pour chaque ligne : nom_du_champ [format du champ] (=nom_champ_table_geonature) : description du champ.. Les champs en gras sont obligatoires. Pour les nomenclatures, le nom de la mnémonique du type dans GeoNature est indiqué en italique en fin de description. La correspondance avec le nom de cette nomenclature dans le standard OccTax est indiqué entre parenthèses et un lien pointe vers ses valeurs sur le site Standards d'échanges du SINP. Pour les nomenclatures, la valeur à transmettre est celle présente dans la colonne "Code" du standard qui est équivalente au champ cd_nomenclature de la table ref_nomenclatures.t_nomenclatures de GeoNature.

Précisions sur le champ additionnal_data

Correspondance avec la commune et le département

Dans le champ "additional_data", il est intéressant de faire figurer des informations concernant la commune et/ou le département d'appartenance de l'observation. Cela permet de "forcer" le rapprochment d'une observation à sa commune et/ou département quand celle-ci est très proche de la limite de sa géométrie. Le JSON peut alors contenir un objet avec les attributs suivant :

{
     "communeInseeCode": "<code-insee-de-la-commune-de-l'obs>", 
     "departementInseeCode": "<code-insee-du-departement>"
}

Mettre dans l'attribut "communeInseeCode" le code INSEE de la commune où l'observation a été réalisée si l'info est disponible.

Mettre dans le champ "departementInseeCode" le code INSEE du département uniquement si le code INSEE de la commune où l'observation a été réalisée est inconnu. Cela devrait être le cas uniquement pour les observations imprécises…

Du coup, le format JSON le plus courant devrait être :

{
     "communeInseeCode": "<code-insee-de-la-commune-de-l'obs>"
}

Notion de confidentialité

Vous pouvez ajouter une notion de confidentialité dans le champ additional_data avec l'attribut "confidential". Cet attribut prend en valeur un bouléen (true ou false). Son abscence équivault à false, vous pouvez donc l'ajouter que pour les observations confidentielles.

Donnée confidentielle : donnée privée dont niveau diffusion (code_nomenclature_diffusion_level) est différent de 5 ou donnée sensible dont valeur de sensibilité (code_nomenclature_sensitivity) est différente de 0.

Exemple du rendu JSON :

{
     "confidential": true
}

Champ précision et libellé

Dans le cadre du SINP PACA, le CEN-PACA utilise une notion de précision sous forme de libellés : "précis", "lieu-dit", "commune", "indéterminé".

Le champ précision est rempli en conséquence ainsi :

Du coup, il serait intéressant de faire figurer dans le champ additional_data les libellés qui pourront être associé à l'attribut "precisionLabel" d'un objet JSON.
Pour ce faire, attribuer un des 4 valeurs ci-dessous :

Exemple du rendu JSON :

{
     "precisionLabel": "lieu-dit"
}

Format SOURCE d'import

Description du format SOURCE

Pour chaque ligne : nom_du_champ [format du champ] (=nom_champ_table_geonature) : description du champ.. Les champs en gras sont obligatoires.

Format DATASET d'import

NOTES :

Description du format DATASET

Pour chaque ligne : nom_du_champ [format du champ] (=nom_champ_table_geonature) : description du champ.. Les champs en gras sont obligatoires.

Format de la table ACQUISITION_FRAMEWORK d'import

NOTES :

Description du format ACQUISITION_FRAMEWORK

Pour chaque ligne : nom_du_champ [format du champ] (=nom_champ_table_geonature) : description du champ.. Les champs en gras sont obligatoires.

Format ORGANISM d'import

Description du format ORGANISM

Pour chaque ligne : nom_du_champ [format du champ] (=nom_champ_table_geonature) : description du champ.. Les champs en gras sont obligatoires.

Format USER d'import

NOTES : nous ne gérons pas dans cette version la notion de groupe de GeoNature.

Description du format USER

Pour chaque ligne : nom_du_champ [format du champ] (=nom_champ_table_geonature) : description du champ.. Les champs en gras sont obligatoires.

Format META_ADDITIONAL_DATA d'import

Description du format META_ADDITIONAL_DATA

Pour chaque ligne : nom_du_champ [format du champ] (=nom_attribut_standard) : description du champ.. Les champs en gras sont obligatoires.