spatialite`` sous android
Transcription
spatialite`` sous android
PROJET PERSONNEL GEOMATIQUE Présenté par TCHAKO NGANGUE Gilles Bertrand En vue de l’obtention du diplôme de MASTER 2 IASIG Informatique Appliquée aux Systèmes d’Informations Géographiques Thème Etude de la plateforme opensource ‘’spatialite’’ sous android Université de Douala (Cameroun) Année universitaire : 2014-2015 TCHAKO NGANGUE Gilles Bertrand RESUME La géomatique a de plus en plus de domaines d’applications de nos jours et comme en informatique la problématique du stockage d’informations dans cette discipline se veut aussi cruciale. Les technologies mobiles ont pris le pas et les différentes techniques de stockage qui sont maintenant créées doivent forcément en tenir compte. Il existe aujourd’hui de plus en plus de bases de données géographiques pouvant s’intégrer sous des systèmes mobiles. Une étude de la base de données SpatiaLite sous le système mobile Android est faite, elle comporte à décrire les concepts sous-jacents, faire un état de l’art des solutions équivalentes et présenter une étude du cas SpatiaLite sous Android avec des exemples. 2 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand Table des matières INTRODUCTION ....................................................................................................................................... 4 1. 2. Contexte et justificatifs.................................................................................................................... 5 1.1. Contexte .................................................................................................................................. 5 1.2. Justificatifs ............................................................................................................................... 6 Les concepts .................................................................................................................................... 7 2.1. 2.1.1. Géomatique ..................................................................................................................... 7 2.1.2. Système d’Information Géographique (SIG) ................................................................... 7 2.1.3. Données dans les SIG....................................................................................................... 7 2.1.4. Les formats de données SIG ............................................................................................ 8 2.2. 4. Les concepts dans les bases de données................................................................................. 8 2.2.1. Base de données.............................................................................................................. 8 2.2.2. Système de Gestion de Base de Données (SGBD) ........................................................... 8 2.2.3. Base de données géographiques ou spatiales ................................................................ 9 2.2.4. SQLite et SpatiaLite.......................................................................................................... 9 2.3. 3. Les concepts dans les Système d’Information Géographique ................................................ 7 Les concepts des systèmes d’exploitations mobiles ............................................................... 9 Etat de l’art .................................................................................................................................... 11 3.1. Route-Me............................................................................................................................... 11 3.2. CouchBase Mobile ................................................................................................................. 11 3.3. ArcGIS for Smartphones SDK ................................................................................................. 11 3.4. Cloudmade SDK ..................................................................................................................... 11 3.5. gvSIG Mobile.......................................................................................................................... 12 Etude de cas .................................................................................................................................. 13 4.1. Création d’une base de donnée SpatiaLite ........................................................................... 13 4.2. Intégration de SpatiaLite sous un projet Android ................................................................. 18 4.3. Connexion de notre projet Android à la BDD Cameroun.sqlite ............................................ 18 4.4. Quelques exemples de méthode de requêtes spatiales sous Android ................................. 19 CONCLUSION ......................................................................................................................................... 21 BIBLIOGRAPHIE ...................................................................................................................................... 22 WEBOGRAPHIE ...................................................................................................................................... 22 3 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand INTRODUCTION Dans le cadre l’aboutissement de notre formation de MASTER 2 IASIG (Informatique Appliquée aux Systèmes d’Information Géographique) de l’Université de Douala, notamment dans l’Unité d’Enseignement : Projet Personnel Géomatique, il nous est assigné à chacun un sujet d’étude et de recherche. Le sujet d’étude : « Etude de la plateforme opensource ‘’spatialite’’ sous android » qui m’a été assigné fait appel au principal concept de base de données géographiques pour terminaux mobiles android. Le cas sur lequel s’appliquera notre étude est la plateforme « SpatiaLite » qui est une base de données géographique. Il serait difficile pour nous de parcourir tous les aspects liés à cette plateforme, néanmoins cette présente étude nous permettra de nous appesantir sur les concepts, les fondamentaux et quelques cas d’exemples d’utilisations de cette plateforme avec Android. 4 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand 1. Contexte et justificatifs 1.1. Contexte Le monde en quelques décennies s’est transformé en un réel village planétaire, cette tournure souvent utilisée pour montrer combien est devenu importante l’avancée des télécommunications et des TICs dans notre ère, le sera encore et encore, quand on sait que c’est l’association des deux sciences suscitées qui nous permet aujourd’hui d’être plus que jamais interconnecté. Les ordinateurs de bureau et ordinateurs portables sont entrain être supplantés par les terminaux mobiles de plus en plus prisés dans les domaines des sciences aussi. Ceci étant dû d’une part par leur architecture matériel miniaturisée, facile à transporter de plus en plus sophistiquée et d’autre part aux applications informatiques regroupant intelligence, interopérabilité et facilité d’utilisation qui y sont intégrées. Les domaines des sciences se rattachant aux Systèmes d’Information Géographique, gagneraient grandement à s’associer ou à se lier davantage aux technologies des terminaux mobiles afin d’optimiser ses rendements. Il est plus aisé par exemple d’effectuer des opérations de collectes d’informations géographiques dans des zones difficiles d’accès ou enclavées (absence de connexion internet) avec un terminal mobile plutôt qu’avec un ordinateur de bureau. Dans le domaine des SIG, les équipements mobiles et les applications jouent aussi un rôle déterminant pour la consultation rapide des informations (données météo, Affichage des cartes avec google API, identification des zones, mise à jours des données etc…). Ainsi survient donc la nécessité de stockage de l’information géographique collectée à l’aide d’un terminal, et donc la communication entre le système d’exploitation du terminal et la base de données distante. 5 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand Il sera donc question pour nous d’étudier la base de données géographique « SpatiaLite », son fonctionnement et ses interactions avec le système d’exploitation pour terminaux mobiles « Android ». 1.2. Justificatifs Notre étude est bien justifiée car l’on observe une utilisation croissante des technologies des terminaux mobiles en ce qui concerne la collecte et le stockage de l’information géographique aujourd’hui, car aisément et facilement manipulable et transportable dans des zones géographiquement enclavées par exemple. L’étude est aussi justifiée parce qu’elle repose sur le système d’exploitation pour terminaux mobile le plus répandu et le plus utilisé dans le monde : le système « Android ». En outre la plateforme « SpatiaLite » est très utilisée et appréciée car opensource, très légère et facile d’utilisation. 6 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand 2. Les concepts 2.1. Les concepts Géographique dans les Système d’Information 2.1.1. Géomatique La géomatique est l'ensemble des techniques de traitement informatique des données géographiques. Elle regroupe donc les outils et méthodes permettant l'acquisition, le stockage, le traitement et la diffusion de données à référence spatiale. 2.1.2. Système d’Information Géographique (SIG) Un Système d’Information Géographique est un système permettant de gérer des informations localisées géographiquement. Il est composé des données, logiciels, matériels informatique, savoir-faire et utilisateurs. 2.1.3. Données dans les SIG On distingue généralement deux grands types de données dans les SIG : vecteur et raster. - Les données vecteurs : se définissent uniquement par des coordonnées. On trouvera des données vecteurs de type point, ligne et polygone. Un point sera défini par un couple de coordonnées XY, une ligne ou un polygone par les coordonnées de leurs sommets. Une couche vecteur sera soit de type point, soit de type ligne, soit de type polygone, mais ne pourra contenir de données de deux types différents (sauf dans le cas particuliers de certains formats). - Les données rasters : ou images, sont constituées de pixels. En zoomant sur un raster, on finit par distinguer les pixels. Chaque pixel possède une valeur correspondant par exemple à sa couleur, ou à son altitude. Un raster est caractérisé par la taille d'un pixel, ou résolution. 7 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand 2.1.4. Les formats de données SIG Les données géographiques peuvent bien aussi être stockées dans les fichiers, ceci est une alternative aux bases de données géographiques. Les formats de données ou de fichiers utilisés dans les SIG sont rangés en plusieurs catégories, les plus usités sont les formats vectoriels et raster. Exemple de formats vecteur : - Shapefile : devenu un standard de facto, il a été créé par ESRI et utilise 3 types de fichiers (shp, shx, dbf) pour un jeu de données unique. Plusieurs utilitaires existent pour l’exportation des fichiers shape vers des bases de données géographiques comme PostGreSQL/PostGis. - Mapinfo : utilise les fichiers TAB, DAT, ID et MAP - Drawing eXchange Format (DXF) : utilisé par les logiciels AutoCAD - Keyhole Markup Language (KML) : Utilisé par Google Exemple de formats raster : - GeoTIFF : format TIFF enrichie avec des métadonnées relatives au SIG - JPEG2000 : format compressé, permettant une compression avec ou sans perte - ESRI grid : fichier binaire ou ASCII utilisé par ESRI 2.2. Les concepts dans les bases de données 2.2.1. Base de données Une base de données est un ensemble structuré et organisé permettant le stockage d’une grande quantité d’information afin d’en faciliter l’exploitation (ajout, mise à jour, recherche de données). 2.2.2. Système de Gestion de Base de Données (SGBD) Un Système de Gestion de Base de Données est un ensemble de programmes qui permettent la gestion et l’accès à une base de données. Il héberge généralement plusieurs bases de données, qui sont destinées à des logiciels ou des thématiques différentes. 8 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand 2.2.3. Base de données géographiques ou spatiales Ce sont des bases de données qui vont permettre le stockage et la manipulation des objets spatiaux comme les autres objets de la base de données 2.2.4. SQLite et SpatiaLite Commençons tout d'abord par SpatiaLite qui permet au moteur SQLite de gérer les objets spatiaux (comparable à posgis pour postgresql). Le moteur SGBD SQLite, remarquable par sa taille (le code précompilé pèse entre 200 et 600 Ko) l'est également par son mode de fonctionnement. En effet, ce dernier ne se base pas sur l'habituel paradigme client/serveur mais sur une bibliothèque de fonctions directement appelées par l'application. Ses caractéristiques qui en font la base de données idéale pour les applications légères embarquées ont déjà séduit des grands noms de l'informatique tels que Google, Adobe ou encore Mozilla. SpatiaLite est donc l'extension spatiale de SQLite. Il est conforme à la norme OGC-SFS (Open Geospatial Consortium - Simple Feature SQL). Ainsi, à l'heure du "tout spatial", il était obligatoire pour une bibliothèque de cette qualité de gérer les objets géographiques. Gestion qui, comme nous l'avons vu précédemment, est assurée par SpatiaLite. 2.3. Les concepts des systèmes d’exploitations mobiles Un équipement mobile ne peut fonctionner sans systèmes d'exploitation ou programmes applicatifs pour mobiles (SE), d’où la nécessité de développer des applications mobiles orientées besoins telles que : une application de géolocalisation, une application de gestion, etc... Actuellement, dans le monde du développement mobile, la quasi-totalité des équipements mobiles fonctionnent sous un OS appelé Android (Operating Systems en anglais ou Système d’Exploitation). L’existence d’Android comme système d’exploitation pour terminaux mobiles offre un intérêt immense, particulièrement pour les fournisseurs, les développeurs mais aussi pour les éditeurs d’application pour terminaux mobiles. 9 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand A l’instar d’Android il existe plusieurs autres systèmes d’exploitation pour les terminaux mobiles notamment : - Windows Mobile - Palm OS - Windows CE - Windows Phone - Windows mobile 5 et 6 - iOS/iPhone/iPad 10 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand 3. Etat de l’art Les bases de données géographiques qui servent typiquement à la sauvegarde d’information collectées à partir de terminaux mobiles observent aujourd’hui un essor fulgurant. Ceci n’étonne personne quand on voit la vitesse avec laquelle les technologies mobiles croissent et s’implantent dans tous les secteurs d’activités majeurs. SpatiaLite n’est donc pas la seule base de données de ce genre, qui est spécialement adaptés pour une application mobile de par ses caractéristiques, notamment légèreté, simplicité et portabilité. SpatiaLite peut être déployé sous des environnements mobiles Android et iOS. Ci-dessous sont listées quelques autres bases de données spatiales adaptées spécialement pour un fonctionnement sous terminaux mobiles : 3.1. Route-Me C’est une base de données géographique fonctionnant essentiellement sous les environnements iPhone et iPad, adaptés pour les petites cartes permettant afficher les tuiles. 3.2. CouchBase Mobile C’est une base de données spatiale pour terminaux mobiles aussi, elle fonctionne sous les environnements Android et iOS. 3.3. ArcGIS for Smartphones SDK C’est la plateforme ArcGIS servant à la création des applications géographiques mobiles sous Android et iOS, elle englobe la base de données géographique et toutes les autres librairies nécessaires. 3.4. Cloudmade SDK Fonctionnant dans les environnements Android et iOS aussi, c’est une base de données spatiale disposant de ses propres couches avec quelques petites options de personnalisation. 11 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand 3.5. gvSIG Mobile C’est un moteur SGBD spatiale recent, fonctionnant actuellement sous environnement Android. Sa portion iOS étant encore en plein développement. 12 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand 4. Etude de cas Dans cette étude de cas nous allons vous présenter à l’aide de simples petits exemples le processus de création d’une base de données SpatiaLite, l’intégration de spatiaLite sous un projet Android, la connexion entre l’application et la base de données géographique créée et quelques exemples de méthodes de requêtes spatiales sous Android. 4.1. Création d’une base de donnée SpatiaLite Tout d'abord, téléchargez le logiciel spatialite_gui : un petit utilitaire graphique simple mais puissant pour gérer les bases de données SpatiaLite. La dernière version en date (Janvier 2011) est v.2.4.0-RC4, vous trouverez les logiciels ici : http://www.gaia-gis.it/spatialite-2.4.0-4/spatialite_gui-win-x86-1.4.0.zip . Ensuite, télécharger les Shapefiles que l’on va intégrer dans la base de données à l’adresse: http://data.biogeo.ucdavis.edu/data/gadm2.7/shp/CMR_adm.zip Après avoir téléchargé, ouvert et exécuté l’archive spatialite_gui-win-x861.4.0.zip, nous allons créer notre fichier de base de données spatiale à partir des fichiers shape du Cameroun. Pour ce faire, allons dans file et cliquons sur « Creatins et new (empty) SQLite DB ou sur l’icône correspondante. 13 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand 14 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand Comme vous le constatez, juste après sa création, la BDD contient déjà plusieurs tables: ce sont des tables système (metatables), c’est à dire nécessaires au fonctionnement de votre base de données. Pour l'instant, nous allons les ignorer. Nous voilà maintenant connecté à une BDD valide. Nous allons donc charger (insérer) le premier jeu de donnée: Nous allons cliquer sur le bouton Virtual Shapefile et sélectionner le fichier CMR_adm2.shp. Une boîte de dialogue apparaît : et rempli exactement les paramètres comme sur l'image ci-dessus. Notre base de données devrait ressembler à ceci : 15 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand Pour finaliser la création de la base de données, allons sur le bouton : Virtual CSV/TXT Quelques exemples de requêtes : 16 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand . 17 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand 4.2. Intégration de SpatiaLite sous un projet Android Premièrement on va télécharger les bibliothèques. Elles peuvent être téléchargées à partir de ce lien : http://www.gaia-gis.it/gaia-sins/spatialite- android/spatialite-for-android-3.0.1.zip. L’archive téléchargée contient 2 éléments de base nécessaires pour permettre à un projet d’utiliser SpatiaLite : - les bibliothèques SpatiaLite natives : elles sont placées dans un dossier nommé libs et contient plusieurs dossiers pour différentes plates-formes qui détiennent la bibliothèque principale, appelée libspatialite.so - les classes de l'API de base, contenues dans le paquet jsqlite. Utilisons maintenant l’assistant Android Studio de nouveau projet pour créer un exemple de projet pour Android. Il nous génère une application Android prêt à être utiliser qui montre une belle vue avec Bonjour tout le monde en affichage. Une fois que le projet peut être exécuté, nous pouvons commencer à ajouter la partie spatiaLite. La première étape consiste à copier les principales composantes des bibliothèques SpatiaLite mentionné précédemment dans notre projet Android. - copier les bibliothèques natives dans la racine du projet Android nouvellement créé - copier le package java de l'API de base dans le dossier source de votre nouveau projet. Et voilà, les fonctions spatiales SpatiaLite de notre projet sont déjà activées. Faisons quelques trucs de base avec ces fonctions. 4.3. Connexion de Cameroun.sqlite notre En à effet, cela consiste projet l’ouverture de Android cette base à la de BDD données (Cameroun.sqlite) spatiale dans notre projet. Le code de la méthode sous Android qui permet d’effectuer cette connexion est la suivante : 18 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand try { File sdcardDir = "E:/"; // le chemin du disque File spatialDbFile = new File(sdcardDir, "cameroun.sqlite"); db = new jsqlite.Database(); db.open(spatialDbFile.getAbsolutePath(), jsqlite.Constants.SQLITE_OPEN_READWRITE | jsqlite.Constants.SQLITE_OPEN_CREATE); } catch (Exception e) { e.printStackTrace(); } 4.4. Quelques exemples de méthode de requêtes spatiales sous Android - code d’une méthode Android permettant de donner la version du SpatiaLite utilisée : public String queryVersions() throws Exception { StringBuilder sb = new StringBuilder(); sb.append("Check versions...\n"); Stmt stmt01 = db.prepare("SELECT spatialite_version();"); if (stmt01.step()) { sb.append("\t").append("SPATIALITE_VERSION: " + stmt01.column_string(0)); sb.append("\n"); } stmt01 = db.prepare("SELECT proj4_version();"); if (stmt01.step()) { sb.append("\t").append("PROJ4_VERSION: " + stmt01.column_string(0)); sb.append("\n"); } stmt01 = db.prepare("SELECT geos_version();"); if (stmt01.step()) { sb.append("\t").append("GEOS_VERSION: " + stmt01.column_string(0)); sb.append("\n"); } stmt01.close(); sb.append("Done...\n"); return sb.toString(); } 19 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand - code d’une méthode utilisant la fonction ST_Area de SpatiaLite, cette fonction permet de donner la somme des surfaces des géométries : public String queryCamerounArea() { sb.append(SEP); sb.append("Requête des sommes des aires...\n"); String query = "SELECT ST_Area(Geometry) / 1000000.0 from CMR_adm2" + // ";"; sb.append("Execute query: ").append(query).append("\n"); try { Stmt stmt = db.prepare(query); double totalArea = 0; while( stmt.step() ) { double area = stmt.column_double(0); totalArea = totalArea + area; } sb.append("\Aire total : ").append(totalArea).append("Km2\n"); stmt.close(); } catch (Exception e) { e.printStackTrace(); sb.append(ERROR).append(e.getLocalizedMessage()).append("\n"); } sb.append("Fait...\n"); return sb.toString(); } 20 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand CONCLUSION Les possibilités de SpatiaLite sont énormes, notre étude aurait pu s’étendre sur des choses encore plus complexes. Cette étude nous a tout de même permis d’appréhender de concepts nouveaux sur les bases de données géographiques pour les terminaux mobiles, d’explorer quelques fonctionnalités de SpatiaLite et de présenter son processus d’intégration sous le système mobile Android. 21 Etude de la plateforme opensource ‘’spatialite’’ sous android TCHAKO NGANGUE Gilles Bertrand BIBLIOGRAPHIE - SQL-Bases de données : Maîtrise d'ouvrage : MEDDE - METL - MAAF / Maîtrise d'oeuvre : ENTE Aix - ENSG / Licence ouverte ETALAB - Spatialite-gui a GUI tool to manage SQLite and SpatiaLite databases - spatialite_gui 1.4.0 release notes - spatialite_gui-1.4.1 libspatialite v.2.4.0-RC5 Experimental UPDATE - spatialite_gui v.1.5.0 a quick tutorial - Spatialite-Cookbook WEBOGRAPHIE - http://www.gaia-gis.it/gaia-sins/spatialite-cookbook/html/first-spatial.html - https://www.gaia-gis.it - http://www.opengeospatial.org/standards/sfs - https://bitbucket.org/moovida/spatialite-android-example/ 22 Etude de la plateforme opensource ‘’spatialite’’ sous android