import folium
Si vous n'avez pas de message d'erreur, la bibliothèque a dèjà été installée par un utilisateur de l'ordinateur. Vous pouvez passer à la cellule suivante.
Si vous avez eu un message d'erreur, il faut installer la bibliothèque folium dans winPython.
Pour cela, lancez le windows power shell
python et écrire:
pip install folium
Quelques messages plus tard, c'est fini.
Nous aurons parfois besoin de trouver les latitudes et longitudes de lieus. Nous utiliserons openstreetmap.
À l'aide de la souris, faites un clic droit puis choisissez Afficher l'adresse et enfin copiez les coordonnées.
Créeons notre 1° carte
import folium
carte = folium.Map(location=[47.82813, -0.69801], zoom_start=16)
carte
Pour afficher un carte Folium dans Jupyter-notebook, on écrit juste son nom comme dernière instruction d'une cellule de code.
Mais on peut également enregistrer la carte dans un fichier html de son dossier personnel (au lycée c'est U://) avec la commande
macarte.save('U://macarte.html')
carte.save('macarte1.html') # Créer le fichier html dans le répertoire du notebook en cours
puis on visualise le fichier html dans un navigateur internet classique comme Firefox.
Une carte est constitué de couches (layers) et de styles (tiles).
Le style par défaut est OpenStreetMap, mais on peux utiliser d'autres styles
carte=folium.Map(
location=[47.82813, -0.69801],
tiles='Stamen Terrain',
zoom_start=16
)
carte
On peut même proposer plusieurs types de représentation sur une seule carte.
carte=folium.Map(
location=[47.82813, -0.69801],
zoom_start=10
)
folium.TileLayer('openstreetmap').add_to(carte)
folium.TileLayer('stamenterrain').add_to(carte)
folium.TileLayer('Cartodb Positron').add_to(carte)
folium.TileLayer('Stamen Toner').add_to(carte)
folium.TileLayer('Stamen Watercolor').add_to(carte)
folium.LayerControl().add_to(carte)
carte
carte=folium.Map(
location=[47.82813, -0.69801],
tiles='Stamen Terrain',
zoom_start=16
)
# Essayez de prévoir ce qu'un clic sur l'icône activera
folium.Marker(location=[47.82822,-0.69960], popup='<i>Bâtiment D</i>').add_to(carte)
folium.Marker(location=[47.82767,-0.69810], popup='<b>Salle de sport</b>').add_to(carte)
folium.Marker(location=[47.82776,-0.69935], popup='<b>La cantine</b>').add_to(carte)
carte
On peux modifier l'apparance des marqueurs.
carte=folium.Map(
location=[47.82813, -0.69801],
zoom_start=16
)
folium.Marker(location=[47.82822,-0.69960],
tooltip='Bâtiment D', # Texte lors du survol
popup='<b>Le Bâtiment des Mathématiques<b>', #Texte lors d'un clic
icon=folium.Icon() # icône par défaut
).add_to(carte)
folium.Marker(location=[47.82767,-0.69810],
popup='<i>Salle de sport</i>', # Notez les balises html de mise en forme du texte
icon=folium.Icon(color='green', icon='table-tennis') # Choix de la couleur et de l'icône
).add_to(carte)
folium.Marker(location=[47.82776,-0.69935],
tooltip='là où je mange',
popup='<u>La cantine</u>',
icon=folium.Icon(color='red', icon='cutlery')
).add_to(carte)
display(carte)
On peut obtenir beaucoup d'informations sur les icônes avec la commande ci-dessous.
help(folium.Icon)
Remarquez la différence entre les 2 types de cercle en zoomant.
carte=folium.Map(
location=[47.82813, -0.69801],
tiles='Cartodb Positron',
zoom_start=16
)
folium.Circle(
radius=30,
location=[47.82767,-0.69810],
popup='Salle des sport',
color='crimson',
fill=False,
).add_to(carte)
folium.CircleMarker(
location=[47.82776,-0.69935],
radius=40,
popup='Cantine',
color='#3186cc',
fill=True,
fill_color='#3186cc'
).add_to(carte)
display(carte)
On utilise une liste de coordonnées de points et on trace le polygone avec la méthode PolyLine.
carte=folium.Map(
location=[47.82813, -0.6980],
tiles='Open Street Map',
zoom_start=16
)
folium.PolyLine(
locations=[(47.82757,-0.69848),(47.82778,-0.69872),(47.82818,-0.69807),(47.82890,-0.69910),(47.82922,-0.70095),(47.82981,-0.70126),(47.83209,-0.70138),(47.83306,-0.70104),(47.83299,-0.70178)],
tooltip='Le plus court chemin',
popup='de la E02 au gymnase',
weight=7,
color='crimson',
).add_to(carte)
carte
Aller sur le site http://argonautica.jason.oceanobs.com/html/argonautica/affiche_donnees_fr.html pour obtenir les coordonnées de déplacement d'un animal de votre choix.
Par exemple l'ours sakari
Reconstituer une carte :
def lire(nom):
""" Fonction qui lit le contenu d'un fichier et retourne la liste des coordonnées comme chaine de caractères """
trajectoire = []
with open(nom, 'r', encoding='utf-8') as fichier :#Ouvre le fichier en lecture 'r'= read
for ligne in fichier:
chaine=ligne.split() # Place le contenu du fichier dans la chaine de caractère
try :
int(chaine[0]) # si le premier mot est le numéro de la balise
trajectoire.append(chaine[2:]) # On enlève le numéro de la balise et la classe du relevé
except:
None
return trajectoire # Renvoie le contenu du fichier sous forme d'une chaine de caractères
trajectoire = lire('sakari.txt')
trajet = [(float(point [2]),float(point[3])) for point in trajectoire]
trajectoire = [(point[0]+' à '+point[1],float(point [2]),float(point[3])) for point in trajectoire]
def moyen(list_coord):
x=0
y=0
for point in list_coord:
x += point[0]
y += point[1]
n = len(list_coord)
return [x/n, y/n]
carte = folium.Map(location=moyen(trajet), zoom_start=6)
folium.PolyLine(
locations=trajet,
weight=5,
color='crimson',
).add_to(carte)
for position in trajectoire :
folium.Circle(
radius=15,
location=[position[1],position[2]],
tooltip=position[0],
color='crimson',
fill=False,
).add_to(carte)
carte
Voici un site expliquant le calcul de la distance entre 2 points définis par leurs latitu et lon. http://www.movable-type.co.uk/scripts/latlong.html Calculez la vitesse moyenne de l'animal entre 2 positions enregistrée.