(GDAL/OGR >= 1.9.0)
Ce pilote peut se connecter au service Google Fusion Tables. GDAL/OGR doit être compilé avec la gestion de Curl pour que le pilote GFT soit compilé.
Le pilote gère la lecture et l’écriture des opérations.
La syntaxe minimale pour ouvrir une source de données GFT est : GFT:
Des paramètres supplémentaires optionnels peuvent être définie après le signe ‘:’ comme :
Si plusieurs paramètres sont définie, ils doivent être séparés par un espace.
La plupart des opérations, en particulier celles pour écrire, nécessite un compte Google valide pour fournir les informations d’authentification au pilote. La seule exception est l’accès en lecture seule des tables publiques.
Afin de créer une clé d’autorisation, il est nécessaire de se loguer et d’autoriser l’accès aux tables fusion pour un compte google (ie. gmail). La clé d’autorisation résultante peut être transformée en un jeton de rafraichissement à utiliser avec le script gdal/swig/python/scripts/gdal_auth.py d’OGR distribué avec GDAL (GDAL/OGR >= 1.10.0). Notez que les jetons peuvnet être seulement utilisé une fois tandis que le jeton de rafraichissement dure indéfiniment.
gdal_auth.py auth2refresh auth_token
Ce token de rafraichissement peut être soit définie comme option de configuration (GFT_REFRESH_TOKEN) soit inclus dans la chaine de connection (ie. GFT:refresh=*refresh_token*).
En général les droits OAuth2 peuvent être fournie via ces mécanismes :
Les géométries dans les tables GFT doivent être exprimées dans la projection géodésique WGS84. GFT autorise qu’elle soit encodées sous différentes formes :
Seul les trois premiers types sont géré par OGR, pas le dernier.
Fusion tables peut avoir plusieurs colonnes géométriques par table. Par défaut, OGR utilisera la première colonne géométrique qu’il trouvera. Il est possible de sélectionner une autre colonne comme colonne géométrique en spécifiant table_name(geometry_column_name) comme nom de couche envoyé à GetLayerByName().
Le pilote fera parvenir n’importe quel filtre spatial définie avec SetSpatialFilter() au serveur. Il fera de même pour les filtres attributaires définie via SetAttributeFilter().
Les features sont récupérées à partir du serveur par tranche de 500 par défaut. Ce nombre peut être modifié avec l’option de configuration GFT_PAGE_SIZE.
La création et la suppression de table est possible. Notez que les champs ne peuvent qu’être ajouté à une table dans laquelle il n’y a pas de feature encore créé.
La gestion en écriture est seulement activée lorsque la source de données est ouverte en mode update.
La correspondance entre les opérations du service GFT et les concepts OGR est la suivante :
Lors de l’insertion d’une nouvelle feature avec CreateFeature(), et si la commande est réussie, OGR récupérera le rowid renvoyé et l’utilisera comme FID. OGR reprojetera automatiquement ses géométries dans la projection géodésique WGS84 si nécessaire (si la projection originale est liée à la géométrie).
Les opérations ci-dessus sont par défaut déclenchées vers le serveur synchrone avec l’appel à l’API d’OGR. Cela peut cependant causer des problèmes de performances lors de l’envoie de plusieurs commandes dû à de nombreux échanges client/serveur.
Il est possible d’encapsuler l’opération CreateFeature() entre OGRLayer::StartTransaction() et OGRLayer::CommitTransaction(). Les opérations seront stockées en mémoire et seulement exécutées lors de l’appel de CommitTransaction(). Notez que le service GFT gère seulement jusqu’à 500 INSERTs et jusqu’à 1 Mo de contenu par transaction.
Note
Seule CreateFeature() active l’utilisation du mécanisme des transactions OGR. SetFeature() et DeleteFeature() seront toujours déclenchés immédiatement.
Les commandes SQL envoyées aux appels OGRDataSource::ExecuteSQL() sont exécutées côté serveur, sauf si le dialecte OGRSQL est définie. Le sous ensemble de SQL géré par le service GFT est décrit dans le lien à la fin de cette page.
Le SQL géré par le serveur comprend seulement les id des tables et pas les noms des tables renvoyés par OGR. Pour convenance, cependant OGR modifiera vos commandes SQL pour remplacer le nom de la table par son id.
Lister les tables et les vues de l’utilisateur authentifié :
ogrinfo -ro "GFT:email=john.doe@example.com password=secret_password"
Créer et peupler une table à partir d’un shapefile :
ogr2ogr -f GFT "GFT:email=john.doe@example.com password=secret_password" shapefile.shp
Afficher le contenu d’une table publique avec des filtres attributaires et spatiaux :
ogrinfo -ro "GFT:tables=224453" -al -spat 67 31.5 67.5 32 -where "'Attack on' = 'ENEMY'"
Obtenir la clé d’authentification :
ogrinfo --config CPL_DEBUG ON "GFT:email=john.doe@example.com password=secret_password"
renvoie :
HTTP: Fetch(https://www.google.com/accounts/ClientLogin)
HTTP: These HTTP headers were set: Content-Type: application/x-www-form-urlencoded
GFT: Auth key : A_HUGE_STRING_WITH_ALPHANUMERIC_AND_SPECIAL_CHARACTERS
Maintenant vous pouvez définir la variable d’environnement GFT_AUTH à cette valeur et utiliser simplement “GFT:” comme DSN.