IPT 2014–2015 TP 15
L’objectif de ce TP est de manipuler une base de donnée SQLite à l’intérieur d’un
programme Python. Pour l’occasion, nous parlerons des arbres de Paris.
1 Pendant que l’ordi démarre
Pour ce TP, ni sqliteman ni Sqlite Manager ne sont indispensable. En revanche, vous
avez tout à fait le droit de les lancer pour voir à quoi ressemblent les bases que vous
manipulez.
La base 15-arbres.db est sur le site http://h4.tourniaire.org et libre en té-
léchargement. Elle contient une seule table arbres et un enregistrement par arbre
dont les champs sont les suivants :
—id est une clé primaire.
—lat et lon sont les coordonnées GPS de l’arbre.
—espece est l’espèce de l’arbre.
—circonference et hauteur sont respectivement la circonférence de l’arbre (en
centimètres) et sa taille (en mètres)
—age est l’âge depuis lequel cet arbre est planté, en jours (calculé le 2016-05-29).
—adresse est une indication sur l’adresse de l’arbre en quesiton.
—localisation donne le type de lieu dans lequel se trouve l’arbre (par exemple,
JARDIN pour les arbres se situant dans un jardin).
Note : comme pour le TP précédent, ces données sont réelles.
2 Importer une table en Python
Rappel des commandes pour manipuler la base en python :
—import sqlite3 as lite (charge le module)
—dbh=lite.connect(’15-arbres.db’) (ouvre le fichier de base de donnée).
—cur=dbh.cursor() (cur est alors l’outil de manipulation de la base de donnée,
il « pointe » dessus, d’où le nom de curseur).
—cur.execute("SELECT (...)") pour exécuter une requête. Vous pouvez
mettre n’importe quelle chaine qui est une requête SQL valide.
—res=cur.fetchall() et res contient alors le résultat de la requête sous forme
d’une liste de nuplets.
ÏQuestion 1 Faire en sorte que Python affiche le nombre d’arbres total dans la
table, à l’aide de la requête SELECT count(*) FROM arbres.
ÏQuestion 2 Parmi ces arbres, combien sont des « Acer pseudoplatanus » ?
ÏQuestion 3 Quel est le plus vieil arbre de Paris (parmi ceux dont on connait
l’âge) ? Où se trouve-t-il ? On pourra utiliser google map pour se donner une idée.
ÏQuestion 4 Écrire une fonction distance(lat1,lon1,lat2,lon2) qui prend
en entrée 4 coordonnées (latitude et longitude) et calcule une approximation de la
distance entre les deux. On pourra considérer que la terre est sphérique de rayon
6370km, et on pourra éventuellement ajouter que notre zone d’étude est d’extension
spatiale faible (il y a plusieurs manières de répondre à cette question, vérifier que la
distance entre la gare St Lazare et la gare d’Austerlitz est d’environ 5km).
ÏQuestion 5 Vérifier que la distance entre l’arbre le plus au nord et l’arbre le plus
au sud de la base est d’environ 23.7 km.
ÏQuestion 6 [Facultative pour plus tard] Calculer le rayon approximatif de la terre
aux alentours de Paris en utilisant la norme WGS_84.
3 Afficher les arbres
On utilisera la bibliothèque matplotlib dans cette partie. Pour des raisons de per-
formance, afficher tous les points d’un coup peut ralentir votre machine. Il est
conseillé de limiter votre recherche à 5000 points dans un premier temps (en uti-
lisant limit 5000 directement dans la requête SQL).
La fonction plt.scatter(x,y) prend en entrée deux listes de coordonnées
(x1,...,xn) et (y1,..., yn) et affiche la liste des couples (xi,yi).
1/2