Category

(SIG) Système d’Information Géographique

FME 2017 : récupérer les photos au format .jpg stockées en blob dans ODK Aggregate

By | (SIG) Système d'Information Géographique, Tutoriels, PostgreSQL/PostGIS, (BDD) Base de données, FME | No Comments

Via l’application smartphone ODK Collect, nous pouvons associer une photo à toute donnée naturaliste collectée.

Lors de l’envoi du relevé sur le serveur Aggregate, cette photo est insérée dans la base de données PostgreSQL au format blob (Binary Large OBject).

 

Avec FME, nous allons pouvoir associer à une observation sa photo, puis l’enregistrer au format .jpg sur son disque.

Nous utilisons SICEN pour organiser nos observations : on nommera donc la photo avec l’identifiant unique id_obs attribué par SICEN.

 

Voici les tables concernées dans la base de données Aggregate :

Table IMAGE_OBS_BN : contient l’identifiant de l’observation (_PARENT_URI) stockée dans la table SAISIE_OBSERVATION et un identifiant unique (_URI)

Table IMAGE_OBS_BLB : contient le champ blob avec la photo (VALUE) et un identifiant unique (_URI)

Table IMAGE_OBS_REF : fait le lien entre les deux tables précédentes (_SUB_AURI = IMAGE_OBS_BLB._URI et _DOM_AURI = IMAGE_OBS_BN._URI)

 

 

Transformers concernés

DatabaseJoiner : effectuer les jointures entre les tables

AttributeRenamer : renommer les champs pour plus de clarté dans le traitment

StringConcatenator : paramétrer le chemin d’enregistrement sur notre disque

AttributeFileWriter : enregistrer la photo sur notre disque

 

 

Chaîne de traitement

traitement_FME

 

1 : On récupère l’identifiant _URI de la table IMAGE_OBS_BN correspondant à l’identifiant de l’observation dans Aggregate (on a déjà récupéré cet identifiant antérieurement dans le traitement et on l’a renommé id_infos_obs).

On renomme l’identifiant récupéré pour plus de clarté.

joiner_BN       AttributeRenamer_BN

 

2 : On répète le traitement effectué en 1 mais cette fois-ci pour récupérer l’identifiant _SUB_AURI de la table IMAGE_OBS_REF

joiner_REF       AttributeRenamer_REF

 

3 : On répète le même traitement pour récupérer la valeur de l’attribut VALUE qui contient la photo au format blob

joiner_BLB

 

4 : On créer l’attribut photo_path pour créer le chemin de stockage du fichier avec son nom.

On utilise l’attribut nextval que l’on a récupéré antérieurement dans le traitement et qui correspond à l’identifiant unique de la donnée dans le système SICEN

stringconcatenator

 

5 : On enregistre la photo à partir de l’attribut VALUE récupéré grâce aux jointures vers le disque (attribut photo_path)

filewriter