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
IPT 2014–2015 TP 15
ÏQuestion 7 Afficher la position de tous les arbres. On doit obtenir un graphique
ressemblant à ceci :
ÏQuestion 8 Même chose mais en n’affichant que les arbres d’un seul type (on
pourra commencer par regarder quels sont les types d’arbres existants).
ÏQuestion 9 Afficher les arbres sur le plan de Paris. Pour cela, on va affi-
cher une carte en surimpression, par exemple avec une vue satellite. Le fichier
15-ParisS-mini.png (à récupérer sur le site) contient une image satellite des alen-
tours de Paris, mise à disposition gracieusement par l’IGN. On chargera l’image
en mémoire avec l’instruction : image = plt.imread("15-ParisS-mini.png")
et on l’affichera avec la fonction plt.imshow. Pour décaler l’image et ajus-
ter l’échelle, il faudra rajouter les bords de l’image avec la syntaxe suivante :
plt.imshow(image,extent=[2.15,2.5,48.7,48.95],aspect=1.515).
ÏQuestion 10 Expliquer à quoi correspondent les 5 valeurs numériques de la
question précédente.
4 Calculs d’arbres
L’intérêt d’utiliser Python, on l’a vu, est de pouvoir faire facilement des calculs plus
évolués que ce qu’on pourrait avoir en SQL directement.
ÏQuestion 11 Déterminer l’arbre le plus proche de la salle informatique où vous
vous trouvez. Ses coordonnées sont (48.845104, 2.348346). 1
ÏQuestion 12 Trouver un moyen de n’avoir que les arbres situés dans Paris intra-
périphérique, si possible directement en SQL. Calculer le barycentre de tous ces
arbres, puis l’arbre le plus proche de ce barycentre, qu’on appellera le roi des arbres.
ÏQuestion 13 Pour les arbres pour lesquels ces données sont connues, afficher
l’âge et la taille sous forme d’un nuage de points. Qu’en pensez-vous ?
ÏQuestion 14 Tracer la droite de régression après avoir éliminé les erreurs mani-
festes dans le fichier 2.
ÏQuestion 15 Faire une fonction qui calcule la densité en arbres dans la ville de
Paris, en découpant la ville par des carrés de taille raisonnable. Superposer la carte
de densité d’arbres à la carte déjà existante pour obtenir une représentation plus
visuelle des zones d’arbre dans Paris.
1. Ce sont sans doute les arbres de la place Levinas!
2. Ces erreurs ne sont pas de moi, la mairie de Paris affirme vraiment qu’un de ses arbres mesure 800m
de haut.
2/2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !