Création de la branche annexe imagerie satellitaire

This commit is contained in:
Guyot 2020-09-25 11:12:08 +02:00
parent 1c4835c15d
commit ac6f1f55af
3 changed files with 150 additions and 7 deletions

130
codes/carteLelbc32.py Normal file
View File

@ -0,0 +1,130 @@
''' Programme de placement de tags images sur un fond OpenStreetMap
On place des images géotaguées dans un répertoire
Le programme en extrait les coordonnées GPS et la date
Il crée des tags avec comme titre le nom des fichiers et la date
et les place sur le fond de carte aux coordonnées GPS
'''
#importation des module
import os
import folium
import exifread
def lalatitude(ref,GPSLatitude):
'''
Convertit les coordonnées GPS EXIF en degrés à virgule flottante
:param ref, GPSLongitude:
:type ref: string, GPSLongitude: exifread.utils.Ratio
:rtype: float
'''
d = GPSLatitude.values[0].num
m = GPSLatitude.values[1].num
s = GPSLatitude.values[2].num
if ref == 'N':
latitude = d + (m / 60.) + (s / 3600.)
elif ref == 'S':
latitude = -1*(d + (m / 60.0) + (s / 3600.0))
else:
print('La latitude est fausse !')
return latitude
def lalongitude(ref,GPSLongitude):
'''
Convertit les coordonnées GPS EXIF en degrés à virgule flottante
:param ref, GPSLongitude:
:type ref: string, GPSLongitude: exifread.utils.Ratio
:rtype: float
'''
d = GPSLongitude.values[0].num
m = GPSLongitude.values[1].num
s = GPSLongitude.values[2].num
if ref == 'W':
longitude = -1*(d + (m / 60.0) + (s / 3600.0))
elif ref == 'E':
longitude = d + (m / 60.0) + (s / 3600.0)
else:
print('La longitude est fausse !')
return longitude
# Récupération du facteur de zoom
print('Facteur de zoom (nombre entier) :\n\
9 : grande zone\n\
11 : zone\n\
13 : village ou ville\n\
16 : petite route')
facteurZoom = input('Veuillez entrer le facteur de zoom : ')
print('Facteur de zoom : {}'.format(facteurZoom))
# Ouverture de l'image en mode de lecture binaire
path = './images/'
fichiers=os.listdir(path)
i = 0 #indice des images
for nom in fichiers:
print("{} : {}".format(i,nom))
adresseImage = "./images/"+nom
titre = nom.split('.')[0]
f = open(adresseImage, 'rb')
# Récupération des tags EXIF
tags = exifread.process_file(f, details=False)
for tag in tags.keys():
if tag in ('GPS GPSLatitudeRef',
'GPS GPSLatitude',
'GPS GPSLongitudeRef',
'GPS GPSLongitude',
'Image ImageDateTime'):
latitude = lalatitude(tags['GPS GPSLatitudeRef'].values,
tags['GPS GPSLatitude'])
longitude = lalongitude(tags['GPS GPSLongitudeRef'].values,
tags['GPS GPSLongitude'])
date = tags['EXIF DateTimeOriginal']
try:
print("Latitude : {}, longitude : {}, date : {}".format(latitude,
longitude, date))
except NameError:
print('Fichier sans données GPS : ',nom)
else:
#création de l'objet Python carte, centrée sur les coordonnées
#latitude et longitude de la première image
if i == 0:
carte = folium.Map(location=[latitude, longitude],zoom_start=facteurZoom)
#création d'un marqueur
folium.Marker([latitude, longitude],
popup="<h4>{}</h4> <br> <i>{}</i> <br><br> <img src='{}' width='300'"
.format(titre,date,adresseImage)).add_to(carte)
#création d'un simple cercle
folium.Circle(
radius=100,
location=[latitude, longitude],
popup='Gallet Park',
color='crimson',
fill=False,
).add_to(carte)
#création d'un marqueur en forme de cercle
folium.CircleMarker(
location=[latitude, longitude],
radius=50,
popup=titre,
color='#3186cc',
fill=True,
fill_color='#3186cc'
).add_to(carte)
#dereferencement des variables pour lever l'exception
del latitude, longitude
#changement d'image
i = i + 1
#création du fichier HTML
carte.save('ma_carte.html')

Binary file not shown.

View File

@ -543,14 +543,14 @@ La clé du changement de paradigme est donc qu'il ne faut surtout pas se laisser
\centering
\begin{subfigure}{\textwidth}
\centering
\includegraphics[width=11cm]{images/modeleSol.eps}
\includegraphics[width=10cm]{images/modeleSol.eps}
\caption{Modèle sol \citep[pp. 42-43]{FA2019}}\label{modelesol}
\end{subfigure}
\medskip
\begin{subfigure}{\textwidth}
\centering
\includegraphics[width=11cm]{images/carteSol.eps}
\includegraphics[width=10cm]{images/carteSol.eps}
\caption{Carte sol \citep[pp. 44-45]{FA2019}}\label{cartesol}
\end{subfigure}
\caption[Construction]{Modèle et carte}\label{modelecarte}
@ -1031,7 +1031,7 @@ Après import du module \verb|exifread| à la ligne \ref{ligne:exifread}, son fo
language=python,caption={Le code de la carte},
label={listing:exif},numbers=left,firstnumber=62,
firstline=62,lastline=90,numberstyle=\tiny,numbersep=6pt,stepnumber=2]
{codes/carteLelbc3.py}
{codes/carteLelbc32.py}
Les données EXIF-GPS fournissant les latitudes et longitudes en mode degré-minute-seconde, il était nécessaire de les convertir en degrés flottants. Pour cela les deux fonctions du listing \ref{listing:conversionangle} ont été utilisées.
@ -1122,11 +1122,11 @@ Il s'agit d'un exemple où l'informatique intervient en cartographie avec du cod
Mais c'est aussi une approche qui permet aux enseignants de mieux se rendre compte des multiples interactions entre le code et la cartographie. Et à ce propos, la bibliothèque folium dépasse clairement les limites de ce qui a été réalisé dans cette annexe. En effet, on peut voir à l'adresse suivante \url{https://portailsig.org/content/python-leaflet-folium-ou-comment-creer-des-cartes-interactives-simplement.html} que beaucoup de types de données vectorielles, comme les polygones et les polylines, sont disponibles et que différents formats, comme geojson, sont supportés. Cela permet la création de cartes choroplèthes par exemple.
\subsection{Le code complet}
Voici finalement le code complet qui constitue le script produisant la page html de la carte géotaguée.
Voici finalement avec le listing \ref{listing:horsligne2}, le code complet qui constitue le script produisant la page html de la carte géotaguée.
\lstinputlisting[
language=python,caption={Le code complet},
label={listing:horsligne},numbers=left,numberstyle=\tiny,numbersep=6pt]
label={listing:horsligne2},numbers=left,numberstyle=\tiny,numbersep=6pt]
{codes/carteLelbc3.py}
\section{Cartographie de terrain}
@ -1200,8 +1200,6 @@ Finalement, on peut constater sur la page \emph{Github} du projet qu'il est écr
\subsection{Modifications}
Le report des modifications se fait ensuite directement sur OpenStreetMap.
Le premier problème qui se pose ici est de savoir comment réaliser des modifications sur cette plateforme.
Le premier problème qui se pose ici est de savoir comment réaliser des modifications sur cette plateforme. Pour commencer, il existe une référence importante à lire absolument avant tout chose avec des élèves. Il s'agit des bonnes pratiques (\url{https://www.openstreetmap.fr/les-bonnes-pratiques-pour-contribuer-a-openstreetmap-en-snt/}) à prendre en compte, notamment pour l'utilisation d'un unique compte.
Deux manières de faire des modifications sur OpenStreetMap (OSM) peuvent être envisagées. Soit on propose des modifications sans vraiment faire de l'édition directement sur le site, soit on prend le risque de réaliser réellement des modification. Au niveau du Lycée, les deux manières peuvent être envisagées simultanément.
@ -1592,5 +1590,20 @@ La pertinence de l'utilisation du positionnement relatif apparait rapidement qua
Remarquez enfin que la carte de la figure \ref{figure:umap} a été réalisée avec un logiciel en ligne dédié à la création de cartes à usage collectif ou personnel à partir du fond cartographique d'OSM, nommé Umap\footnote{Voir~: \url{https://umap.openstreetmap.fr/fr/}}. La création de cartes avec celui-ci est décrite dans le corps du présent travail et nécessiterait une annexe approfondie à lui tout seul. Il est cependant très aisé de faire rapidement une carte avec umap et en apprendre l'usage des bases est certainement nécessaire.
\section{Imagerie satellitaire}
Cette section est une introduction à l'imagerie satellitaire. QGis est au centre de cette découverte qui a pour objectif de présenter ses possibilités de superposition d'information météorologique, océanographiques, \dots{} On peut ainsi imaginer faire travailler des élèves sur différentes situations météorologiques pour leur permettre d'apprendre à lire des cartes météo ou leur faire découvrir les fond océaniques pour étudier les plaques tectoniques.
Par ailleurs, beaucoup de problèmes caractéristiques à la fois de la construction de l'information géographique, des droits sur celle-ci ou de la gestion informatique des éléments cartographiques, étant présents dans l'imagerie satellitaire, l'apprentissage de son utilisation est un exercice particulièrement pertinent à tout les points de vue.
\subsection{Introduction}
Le premier problème auquel l'étudiant va être confronté est simplement de savoir où trouver des images satellites. Il peut sembler évident, dans une société où l'image du monde est omniprésente, qu'on puisse en disposer sans difficultés. Or, ce n'est pas le cas. Il est même difficile d'y parvenir dans la mesure où on ne se satisfait pas de la représentation de Google Map et qu'on désire obtenir des images aux contenus particulier, comme l'état des sols ou si on désire maitriser les droits sur ces images.
Pour se rendre compte de ces problèmes, le site du \og Global Investigative Journalism Network \fg{} publie un \og Guide pour trouver et utiliser des images satellites \fg\footnote{gijn.org : \url{https://gijn.org/guide-pour-trouver-et-utiliser-des-images-satellites/}} qui, malgré son orientation vers l'utilisation journalistique des images, constitue une bonne entrée en matière.
Cet article donne aussi des motivations intéressantes à l'utilisation des images satellites~:
\begin{quotation}
\og Les images satellites sont de puissants outils de découverte et danalyse, et permettent également dillustrer de manière très précise une enquête. Les journalistes utilisent déjà les images satellites pour des reportages dans des zones de conflit, sur le changement climatique, les réfugiés, les feux de forêts, lexploitation minière illégale, les marées noires, la déforestation, lesclavage et de nombreux autres sujets. Dans le cadre du journalisme dinvestigation, le potentiel de lexploitation de ces images venues de lespace est également considérable.\footnote{gijn.org : \url{https://gijn.org/guide-pour-trouver-et-utiliser-des-images-satellites/}}\fg
\end{quotation}
\subsection{Arcgisonline.com}
\end{document}