Compare commits

...

6 Commits

Author SHA1 Message Date
Guyot 4240f372b2 Ajout explications transparence ... 2020-09-26 23:44:58 +02:00
Guyot 0dd7ad0698 Suite rédaction annexe images satellitaires 2020-09-25 22:55:49 +02:00
Guyot d8b8cdaf99 Suite annexe satellite 2020-09-25 18:27:06 +02:00
Guyot 61cbc94cb8 Ajout début paragraphe profondeurs canopée 2020-09-25 15:13:47 +02:00
Guyot 7cea20ec36 Premières modif. sur la branche annexsat 2020-09-25 11:21:26 +02:00
Guyot 70488b90cd Création de la branche annexe imagerie satellitaire 2020-09-25 11:12:08 +02:00
10 changed files with 49548 additions and 5 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 \centering
\begin{subfigure}{\textwidth} \begin{subfigure}{\textwidth}
\centering \centering
\includegraphics[width=11cm]{images/modeleSol.eps} \includegraphics[width=10cm]{images/modeleSol.eps}
\caption{Modèle sol \citep[pp. 42-43]{FA2019}}\label{modelesol} \caption{Modèle sol \citep[pp. 42-43]{FA2019}}\label{modelesol}
\end{subfigure} \end{subfigure}
\medskip \medskip
\begin{subfigure}{\textwidth} \begin{subfigure}{\textwidth}
\centering \centering
\includegraphics[width=11cm]{images/carteSol.eps} \includegraphics[width=10cm]{images/carteSol.eps}
\caption{Carte sol \citep[pp. 44-45]{FA2019}}\label{cartesol} \caption{Carte sol \citep[pp. 44-45]{FA2019}}\label{cartesol}
\end{subfigure} \end{subfigure}
\caption[Construction]{Modèle et carte}\label{modelecarte} \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}, language=python,caption={Le code de la carte},
label={listing:exif},numbers=left,firstnumber=62, label={listing:exif},numbers=left,firstnumber=62,
firstline=62,lastline=90,numberstyle=\tiny,numbersep=6pt,stepnumber=2] 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. 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. 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} \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[ \lstinputlisting[
language=python,caption={Le code complet}, 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} {codes/carteLelbc3.py}
\section{Cartographie de terrain} \section{Cartographie de terrain}
@ -1149,4 +1149,156 @@ Pour cela, il est nécessaire de disposer de cartes papier des zones à cartogra
\caption{Création d'un atlas physique}\label{figure:fieldpapers} \caption{Création d'un atlas physique}\label{figure:fieldpapers}
\end{figure} \end{figure}
\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
\medskip
Le deuxième problème auquel l'étudiant va être confronté est d'obtenir des informations sur les images qu'il va trouver, notamment la date et l'heure à laquelle elles ont été prises et leur licence.
\medskip
Le troisième problème auquel l'étudiant va être confronté est de savoir comment utiliser les images qu'il a trouvée et, s'il peut disposer de plusieurs formats, le ou lesquels choisir.
\end{quotation}
\subsection{Des profondeurs à la canopée}
Commençons par un exemple en en présentant le résultat à la figure \ref{figure:profondeurscanopee}.
\begin{figure}
\centering
\includegraphics[width=\textwidth]{images/profondeursCanopee.eps}
\caption{Des profondeurs à la canopée.}
\label{figure:profondeurscanopee}
\end{figure}
Il s'agit d'une carte mondiale présentant trois informations distinctes~:
\begin{enumerate}
\item les profondeurs océaniques,
\item les reliefs continentaux et
\item la canopée mondiale.
\end{enumerate}
Il s'agit, comme le montre la figure \ref{figure:profondeurscanopee} dans l'onglet couches en bas à gauche de l'image, d'une composition des trois couches nommées \og GLAD Tree Canopy Height 2020 \fg{}, \og World Imagery \fg{} et \og World\_Ocean\_Base \fg{}.
En premier lieu, il est intéressant de constater que ce trois couches semblent très bien se marier et cela dans l'ordre dans lesquelles elles se présentent. Il faut ensuite constater qu'en changeant l'échelle de la carte (en zoomant), tout se passe très bien et l'image reste de très bonne qualité comme on peut le constater en comparant les images des figures \ref{figure:profondeurscanopee}, \ref{figure:europetroiscouches} et \ref{figure:suissetroiscouches}.
\begin{figure}[h]
\centering
\begin{subfigure}{0.45\textwidth}
\includegraphics[width=\textwidth]{images/Europe.eps}
\caption{L'Europe avec trois couches}\label{figure:europetroiscouches}
\end{subfigure}
\begin{subfigure}{0.45\textwidth}
\includegraphics[width=\textwidth]{images/Suisse.eps}
\caption{La Suisse avec trois couches}\label{figure:suissetroiscouches}
\end{subfigure}
\begin{subfigure}{0.45\textwidth}
\includegraphics[width=\textwidth]{images/SuisseMontagnes.eps}
\caption{La Suisse sans la couche canopée}\label{figure:suissesanscanopee}
\end{subfigure}
\begin{subfigure}{0.45\textwidth}
\includegraphics[width=\textwidth]{images/golfeGascogne.eps}
\caption{Golfe de Gascogne, couche océanique}\label{figure:golfegascogne}
\end{subfigure}
\caption{Échelles et couches}
\end{figure}
En second lieu, il faut remarquer l'intérêt de pouvoir n'afficher que certaines couches, comme le montre les figures \ref{figure:suissesanscanopee}, qui présente la Suisse sans la couche de la canopée et \ref{figure:golfegascogne} qui présente le golfe de Gascogne avec la seule couche \og World\_ocean\_base \fg{}.
Il est manifeste que la couche de la canopée se superpose avec transparence à la couche du monde. La figure \ref{figure:couchecanopee} montre la canopée, mais sans les reliefs sous-jascents. La transparence est évidente.
Par contre, la figure \ref{figure:coucheworld} n'est constituée que de la seule couche \emph{World\_Imagery} décrite plus bas. Or, on y voit les reliefs sous-marins et en affichant la carte sous-jascente des fonds sous-marins, rien ne change. La carte du monde se superpose ainsi sans transparence à celle de fond marins.
\begin{figure}
\centering
\begin{subfigure}{0.45\textwidth}
\includegraphics[width=\textwidth]{images/Canopee.eps}
\caption{La couche de la canopée.}\label{figure:couchecanopee}
\end{subfigure}
\begin{subfigure}{0.45\textwidth}
\includegraphics[width=\textwidth]{images/Profondeurs.eps}
\caption{La couche \emph{World}}\label{figure:coucheworld}
\end{subfigure}
\caption{Les couches principales}
\end{figure}
Il existe ainsi plusieurs types de cartes dont les possibilités de superposition sont très différentes.
\bigskip
La réalisation de ces cartes dans QGIS passe donc par la recherche des cartes, celle de l'information les concernant, par leur construction et en fin de compte par leur interprétation.
\subsubsection{Acquisition des cartes}
QGIS dispose d'un plugin permettant d'obtenir relativement facilement des cartes de fond. Il s'agit de \og QuickMapServices \fg{} (QMS). L'installation de celui-ci permet d'obtenir via le menu Internet, sous QuickMapServices et l'item Search QMS, le panneau de recherche QSM qui est présent à droite de l'image sur la figure \ref{figure:profondeurscanopee}. En utilisant le champ de recherche en haut de ce panneau et en choisissant \og Valid \fg{} dans le menu déroulant juste en dessous, on obtient une liste de cartes portant sur des sujets divers. Ces cartes sont liées au niveau de zoom et à la localisation. Il faut donc bien choisir ces grandeurs préalablement à la recherche.
Par exemple, pour obtenir la carte de fond, il suffit d'utiliser le mot clé \emph{world} dans le champ de recherche. Apparaissent alors plusieurs cartes dont \emph{Esri World Imagery} et \emph{ESRI Satellite (ArcGIS/World\_Imagery)}. Ces deux cartes permettent de disposer d'une image de fond du monde. La seconde a une résolution légèrement meilleures.
\medskip
Un autre exemple de carte acquise avec le plugin \og QMS est la carte \dots
\subsubsection{Informations sur les cartes}
L'information disponible pour la couche de la canopée l'est directement depuis QGIS. En effet, on voit sur la droite de la figure \ref{figure:profondeurscanopee}, à l'entête de \og Search QMS \fg{} une liste d'items au sein desquels figure le lien \og details \fg{}. Dans le cas de la couche canopée, celui-ci mène sur le site \url{https://qms.nextgis.com}\footnote{Voir : \url{https://qms.nextgis.com/geoservices/3561/}} où on trouve l'information suivante~:
\begin{quotation}
\textbf{GLAD Tree Canopy Height 2020}
\smallskip
\textbf{General info}
Description: Global Forest Canopy Height, 2019 P. Potapov, X. Li, A. Hernandez-Serna, A. Tyukavina, M.C. Hansen, A. Kommareddy, A. Pickens, S. Turubanova, H. Tang, C. E. Silva, J. Armston, R. Dubayah, J. B. Blair, M. Hofton (2020). A new, 30-m spatial resolution global forest canopy height map was developed through the integration of the Global Ecosystem Dynamics Investigation (GEDI) lidar forest structure measurements and Landsat analysis-ready data time-series (Landsat ARD). The GEDI RH95 (relative height at 95\%) metric was used to calibrate the model. The Landsat multi-temporal metrics that represent the surface phenology serve as the independent variables. The “moving window” locally calibrated and applied regression tree ensemble model was implemented to ensure high quality of forest height prediction and global map consistency. The model was extrapolated in the boreal regions (beyond the GEDI data range, 52°N to 52°S) to create the global forest height prototype map. GEDI: https://gedi.umd.edu Landsat ARD: https://glad.umd.edu/ard/home Data download: https://glad.umd.edu/dataset/gedi
Type: WMS
CRS: 4326
Submitter: glushkov2igor
Source: Aucun(e)
Date added: 15 septembre 2020 10:23
Last update: 17 septembre 2020 15:17
Service boundary: none
Status: works
\smallskip
\textbf{License & Copyright info}
License name: Creative Commons Attribution 4.0 International License
License URL: http://earthenginepartners.appspot.com/science-2013-global-forest/download\_v1.6.html
Copyright text: Source: Hansen/UMD/Google/USGS/NASA
Copyright URL: Aucun(e)
Terms of use URL: Aucun(e)
\smallskip
\textbf{WMS info}
URL: https://glad.umd.edu/mapcache/?SERVICE=WMS?LAYER=forest\_height\_2019
GET parameters: Aucun(e)
Layers: forest\_height\_2019
Turn over layers order: False
Image format: image/png
\end{quotation}
Ces informations sont très intéressantes et exploitables par les étudiants.
\subsubsection{Construction des cartes}
\subsection{Arcgisonline.com}
\end{document} \end{document}

2382
images/Canopee.eps Normal file

File diff suppressed because it is too large Load Diff

6811
images/Europe.eps Normal file

File diff suppressed because it is too large Load Diff

6329
images/Profondeurs.eps Normal file

File diff suppressed because it is too large Load Diff

6802
images/Suisse.eps Normal file

File diff suppressed because it is too large Load Diff

6801
images/SuisseMontagnes.eps Normal file

File diff suppressed because it is too large Load Diff

6427
images/golfeGascogne.eps Normal file

File diff suppressed because it is too large Load Diff

13709
images/profondeursCanopee.eps Normal file

File diff suppressed because it is too large Load Diff