Page 2 sur 3

Mais ou sont les opérateurs de drones autorisés sur le territoire Français?

Je vais rentrer progressivement dans les étapes de ce projet dans lequel je me suis lancé en début d'année.

Objectif :
Voyant l'intérêt pour les drones croitre, je me suis demandé si il existait un fichier disponible référençant les opérateurs. Le but est de les identifier suivant leurs activités (communication, vidéo, photographie aérienne…) et de réaliser une cartographie afin de pouvoir facilement trouver l'opérateur de "proximité" correspondant au(x) besoin(s). 


1. Je trouve un fichier créé et mis à jour par la DGAC, disponible sur le site du ministère de l'écologie, du développement durable et de l'énergie mais le problème c'est le format : PDF 

2. Je tente quand même le passage du .pdf en tableur, j'obtiens un fichier inexploitable en l'état qu'il me faut remettre en forme grossièrement pour réaliser un premier test carto.

3. L'utilisation de ce fichier étant assez laborieuse, je me dit que le plus simple c'est de demander à la DGAC de libérer son fichier. Je leur envoie donc un petit tweet @DGACfr avec mon premier test carto pour leur montrer l'intérêt de cette donnée en mettant @datagouvfr dans la boucle. Je précise aussi qu'en libérant le fichier je pourrai leur faire remonter des erreurs constatées dans les adresses. Et surprise :

4. Là je me dis que ça va être compliqué d'obtenir quelque chose de leur part. Finalement le plus simple c'est peut être de faire le boulot soi-même! A partir de Juillet :

– je télécharge le dernier fichier mis à disposition de la DGAC (fichier du 02/07/2014)
– j'exporte le fichier en tableur  
– je commence à nettoyer le fichier, en essayant de vérifier les adresses et j'ajoute les sites internet que je trouve
– je géocode les opérateurs avec le plugin QGIS mmqgis

5. Fin Septembre, me voilà avec un fichier GeoJSON localisant les opérateurs (plus de 700).
Le fichier
 est loin d'être parfait mais je le mets à disposition ici.

Les exploitants en activités particulières au moyen d'aéronefs télé-pilotés au 02/07/2014 

Bilan : On en est pas encore au stade de l'identification des opérateurs suivant leurs activités mais c'est déjà un bon début.

Les suites envisagées  :

  • géocoder les 55 opérateurs de Juillet qui ne l'ont pas été de manière automatique
  • améliorer le géocodage automatique : car plusieurs opérateurs sur le même point si le géocodage s'est fait à la commune
  • mettre à jour le fichier en utilisant un fichier de la DGAC plus récent (à l'avenir on pourrait faire une mise à jour tous les 6 mois à plusieurs ça peut aller vite)
  • ajouter de nouvelles informations (Scénarios, Activités,…)
  • contacter la Fédération Nationale du Drone Civil pour croiser le fichier avec celui de leurs adhérents 
    [La FNDC vient de me contacter suite à cet article. Elle souhaite s'investir dans l'amélioration et le maintien de ce fichier en mettant à disposition le listing de ces membres]
  • créer un fichier similaire pour les constructeurs de drones ayant reçu une attestation de conception pour la France

Si vous avez des propositions d'améliorations ou si vous êtes motivés pour participer à ce projet alors n'hésitez pas à me contacter.

————————————————————–

MAJ du 01/03/2015 : ​La dernière version de la carte est visualisable ci-dessous et disponible ici.

 

Découper un rasteur suivant une grille et récupérer les coordonnées du coin haut gauche dans le nom de l’image en sortie

1. Ouvrir le rasteur dans QGIS

2. Aller dans Vecteur/Outils de recherche/Grille vecteur pour construire votre grille (polygones) suivant l'emprise de l'image (Nota : je vous conseille de faire un arrondi : + pour les max et – pour les min )

grid

3. Créer un nouveau champ dans lequel on va calculer les coordonnées du coin haut gauche de chacune des mailles : "XMIN"  || '_' ||  "YMAX"

4. Ensuite, on va séparer la couche vectorielle en autant de couches que de mailles en allant dans Vecteur/Outils de gestion des données/Séparer une couche vectorielle.

En sortie, l'outil va récupérer la valeur de l'identifiant unique dans le nom de fichier en structurant le nom de fichier de la manière suivante : COUCHEDEDEPART_CHAMPUTILISE_VALEUR grille_XY_HG__756300_6541400.shp

separer


5. Dernière étape via le Terminal sur Mac OSX : 

– Accéder à GDAL : export PATH=/Library/Frameworks/GDAL.framework/Programs:$PATH
– Adapter et lancer la commande suivante qui va pour chacun des fichiers .shp découper l'image définie et récupérer les coordonnées dans le nom de fichier en sortie :

Nota : En rouge les éléments à modifier.

#Répertoire des fichiers en entrée et en sortie
in='/…/rep_shp_in/'

inr='/…/rep_img_in/'
out='/…/rep_img_out/'
#On boucle sur chaque shape pour découper l'image
for entry in "$in"/*.shp
do
#On extrait les caractères à conserver pour le fichier en sortie

fichier=$(echo "${entry##*/}" | cut -c15-27)
#On lance le découpage du rasteur suivant un fichier shp
gdalwarp -q -cutline "$in""${entry##*/}" -crop_to_cutline -dstalpha -of GTiff 
"$in"'dsm.tif' "$out""$fichier".tif
done

5bis. La même chose en créant un .bat à éxécuter via OSGEO4W sur Windows : 

@echo on
REM Répertoire des fichiers en entrée et en sortie
set in=C:\…\rep_shp_in\
set inr=C:\…\rep_img_in\
set out=C:\…\rep_img_out\img\
REM On boucle sur chaque shape pour découper l'image
for /F %%f in ('dir /B /A-D %in%*.shp') do ( call :extr "%%f" )
goto :fin
:extr
set nom_de_fichier=%~n1
REM On extrait les caractères à conserver pour le fichier en sortie
set nom_sortie=%nom_de_fichier:~14,30%
REM On lance le découpage du rasteur suivant un fichier shp
gdalwarp -q -cutline %in%%nom_de_fichier%.shp -crop_to_cutline -dstalpha -of GTiff %inr%dsm.tif %out%%nom_sortie%.tif
:fin

Et voilà, mon rasteur de départ a été découpé en 62 images de 200*200 mètres nommées par les coordonnées du coin haut gauche (exemple : 754700_654100.tif).

Utiliser ogr2ogr pour créer un .dxf 3D à partir d’un fichier .shp 2D

Il y a quelques temps Loïc me demandait comment il pouvait passer des courbes de niveau générées par QGIS en .shp 2D (avec un champ ELEVATION) en un .dxf 3D. Je lui ai conseillé d'utiliser ogr2ogr avec la commande suivante :

ogr2ogr -f "DXF" C:\…\…\CdN\CdN_PR_AUTOCAD.dxf C:\…\…\CdN\CdN.shp -zfield "ELEVATION"

-f format_name : retourne le fichier au format désiré, (ESRI Shapefile par défaut).

-zfield field_name : (à partir de GDAL 1.8.0) utilise le champ définie pour remplir les coordonnées Z des géométries.

Corrélation de deux rasters multibandes avec R

Toujours dans le cadre de mes travaux de recherches, je devais comparer deux façons de calculer un NDVI cumulé annuel, 1) en intégrant toutes mes valeurs bi-mensuelles sur toute l'année, 2) en intégrant mes valeurs correspondant uniquement à la saison des pluies, c'est à dire environ de Mai à Octobre (contexte africain, au Niger).

Mes données d'entrée sont donc deux rasters calculés:

  • raster1 = la manière 1 et comptant autant de bandes que d'années (ici 11)
  • raster2 = la manière 2 et comptant autant de bandes que d'années (ici 11)

​Le résultat que je souhaitais obtenir en sortie était quelque chose comme ceci :

scatter

mais avec un graphique par année (ou par bande).

J'ai donc décidé de faire cela sur …. R (^^).

Voici donc le code que j'ai mis en place. Dans mon cas j'avais besoin de le faire tourner sur plusieurs zones donc sur plusieurs images, il est donc fait pour tourner sur plusieurs paires de fichiers, mais en supprimer la première boucle vous pouver le faire tourner sur uniquement deux fichiers.

######### Comparaison de rasterS multibandes #######

# input : 2 Rasters multibandes format ENVI (dans ce cas si, mais fonctionne avec autres formats raster)
# output : graphique au format pdf de la "corrélation" de la bande 1…n d'un raster1 avec la bande 1…n d'un raster2
# Leroux Louise, CIRAD, UMR TETIS 2014

######## Initialisation #########
## Chargement de packages nécéssaires

library(raster)
library(sp)
library(Hmisc)

## Initialisation de l'espace de travail
setwd("D:/MyFolder")

##Importation des données raster##
# Pour le premier raster

liste.file1<-list.files(path=".", pattern="motif1")
liste.file1.hdr<-liste.file1[-grep(« .hdr », liste.file1, fixed=T)] #Récupération du nom sans l'extension
 

# Pour le second raster
liste.file2<-list.files(path=".", pattern="motif2")
liste.file2.hdr<-liste.file2[-grep(« .hdr », liste.file2, fixed=T)]  #Récupération du nom sans l'extension

## Boucle sur les couples de fichiers ##
for (j in 1:length(liste.file1.hdr)){
  name1<-liste.file1.hdr[j]
  name2<-liste.file2.hdr[j]
  nband<-nbands(raster(name1)) #variable stockant le nombre de bandes dans l'image
  cell<-ncell(raster(name1)) #variable stockant le nombre de pixel d'une bande
  mat1<-matrix(0, ncol=nband, nrow=cell)
  mat2<-matrix(0, ncol=nband, nrow=cell)
  
  # Stockage des bandes du raster 1 dans un matrice
  for (i in 1:nband){
    mat1[,i]<-getValues(raster(name1, band=i))
  }
  
  # Stockage des bandes du raster 2 dans un matrice
  for (l in 1:nband){
    mat2[,l]<-getValues(raster(name2, band=l))
  }
  
  ## Création du graphique ##
  out_name<-paste(out_name, ".pdf",sep="")
  pdf(out_name, height=10,width=10)
  ye<-seq(2000,2010,1) # Séquence pour nommer les graphiques, ici, 1 bande= 1 année
  par(mfrow=c(4,3)) # Préparation de la fenêtre graphique : 4 lignes, 3 colonnes pour mettre un graphique par bande dans chaque case

  # Boucle sur les bandes
  for (k in 1:nband){
    df <- data.frame(mat1[,i],mat2[,k])
    x <- densCols(mat1[,k],mat2[,k], colramp=colorRampPalette(c("black", "white")))
    # Création d'une palette pour représenter la concentration des individus
    df$dens <- col2rgb(x)[1,] + 1L
    cols <-  colorRampPalette(c("#000099", "#00FEFF", "#45FE4F","#FCFF00", "#FF9400", "#FF3100"))(256)
    df$col <- cols[df$dens]
    plot(mat2[,k]~mat1[,k], data=df, pch=20, col=col, xlab=name_xlab, ylab=name_ylab, main=ye[k], cex.lab=0.75)
    reg<-lm(mat2[,k]~mat1[,k])
    abline(coef=coef(reg), lwd=1)
  }
  dev.off()
}

Et voici le résultat en sortie pour l'un de mes fichiers :

Result

Ouvrir plusieurs fois QGIS sur OSX

Alors que Windows est capable d'ouvrir plusieurs fois la même application à chaque lancement de l'éxécutable, OSX vous renverra simplement à l'application déjà ouverte. Cependant il est parfois nécesssaire de lancer plusieurs projets QGIS simultanément.

Les solutions possibles pour contourner le problème : 

1. Vous aimez éxécuter vos applications en ligne de commande : 

Ouvrir Terminal et éxécuter cette commande : open -n '/Applications/QGIS.app'

2. Vous préférez créer une "application" permettant le lancement multiple :

– Ouvrir Automator (Automator est un application intégrée à OSX qui permet d'automatiser des tâches en quelques clics!) 

– Choisir le type de document : Application

automator

– Chercher l'action : Exécuter un script AppleScript

– Copier le code suivant dans la fenêtre et le compiler (marteau) :
do shell script "open -n '/Applications/QGIS.app' && say I love QGIS"   
Nota : le code en rouge c'est du bonus;)

automator2

– Pour terminer, aller dans Fichier/Enregistrer et choisir le format de fichier Application.

automator3

– C'est fini, vous pouvez lancer QGIS autant de fois que vous le souhaitez.

 

Nota :

– j'ai réalisé cet exemple avec QGIS mais ça vaut aussi pour les autres applications.

– vous pouvez changer l'icone de l'application en Affichant le contenu du paquet de l'application puis dans QGIS2.app/Contents/ vous avez juste à remplacer le fichier : AutomatorApplet.icns par celui que vous souhaitez

Carte de Flux sous R

Dans le cadre de mes travaux actuels, j'avais besoin d'avoir une idée des relation de l'Afrique de l'Ouest avec le reste du monde en termes d'échanges alimentaires. Plutôt que de faire un simple tableau avec les données d'export/import, je me suis dit "faisons une carte des flux avec des liaisons de taille proportionnelle à l'intensité de la variables". Voilà Voilà je me suis donc lancée là dessus …. sur R!

Les données que proviennent de la World Integrated Trade Solution , j'ai récupéré les valeurs des échanges alimentaires (Food Products) pour les imports/exports pour les 10 pays ayant le plus de poids.

Le code a été adapté de http://flowingdata.com/2011/05/11/how-to-map-connections-with-great-circles/

Voici donc mon code R:

# Création d'une carte de flux sous R

# Chargement des Packages
library(maps)
library(geosphere)

#Initialisation de l'espace de travail
setwd("D:/MyFolder")

#Importation des données
##un tableau comportant au moins 4 colonnes et n lignes correspondant aux n connections
##latitude du point d'origine
##longitude du point d'origine
##latitude du point de destination
##longitude du point de destination
## + une colonne supplémentaire dans le cas où 
##l'on souhaite des traits de taille proportionelle
##à la variable représentée

data<-read.csv("Export.csv", sep=";", dec=".", header=TRUE)

#Importation du fond de carte et mise en forme
map("world", fill=FALSE, boundary=TRUE,bg="white", lwd=1.5, col="lightslategrey")
map.axes()
map.scale(120,-70,ratio=FALSE, relwidth=0.10, cex.main=2)

#Ajout des lignes
##Création d'une palette de couleur

pal <- colorRampPalette(c("royalblue4", "royalblue"))
colors <- pal(10)

##ajout des lignes/connections
for (i in 1:10){
  lat_o<-data[i,1]
  long_o<-data[i,2]
  lat_d<-data[i,3]
  long_d<-data[i,4]
  val<-data[i,5]
  inter <- gcIntermediate(c(long_o, lat_o), c(long_d, lat_d), n=1000, addStartEnd=TRUE)
  lines(inter, col=colors[i],lwd=val)
}

## Finalisation de la mise en page
title("Exports Food Products for West Africa in 2011",font=3, family="serif")
legend("bottomleft",lty=1, col="royalblue",lwd=1,legend="60760 US$ Thousand",cex=1.25)

Et voici mon résultat pour les exports:

Rplot_Trade_Export

Raster et « Jolie » matrice de corrélation sur R et ggplot, petit tuto

Tout est partis de la rédaction d'un article pour une revue de télédétection dans laquelle j'avais une matrice de corrélation à partir d'un raster multibandes à présenter! Bon une matrice de corrélation c'est pas franchement "sexy" à présenter donc je me suis dit que je pouvais grâce à R et toutes les possibilités qu'il offre réussir à faire quelque chose qui change de l'ordinaire!

Dans mon cas, il s'agissait de vérifier la non-stabilité (c'est  à dire la potentielle dynamique) du domaine cultivé en Afrique de l'Ouest à partir du produit MODIS land Cover! Initialement j'ai donc une image avec 11 bandes binaires (culture / non culture, entre 2001 et 2011), présentées ci dessous:

11 bandes (2001-2011) MODIS affichées dans R

Voici donc la démarche que j'ai suivi :

########################################
# Initialisation de l'espace de travail

setwd("D:/MyFolder")

#Packages nécéssaires
library(raster)
library(sp)
library(Hmisc)
library(plyr)
library(reshape2)
library(ggplot2)

#############Importation des données raster et stockage des bandes dans une matrice#######
filename<-'mon_image.tif'# variable stockant le nom du fichier
nband<-nbands(raster(filename)) #variable stockant le nombre de bandes dans l'image
cell<-ncell(raster(filename)) #variable stockant le nombre de pixel d'une bande
mat<-matrix(0, ncol=nband, nrow=cell) #initialisation de la matrice reçevant les valeurs des bandes de l'image

for (i in 1:nband){
  mat[,i]<-getValues(raster(filename, band=i))
}

#############Création de la matrice de corrélation#######
cor<-rcorr(mat,type="pearson") # création de la matrice de corrélation
coef.corr<-cor$r  # récupère la matrice de coefficients de corrélation

#############Mise en forme de la matrice de corrélation pour la création du graphique#######
coef.corr[coef.corr==1]<-0 #valeurs de la diagonale mises à 0

# Boucle garder que la première moitié du tableau de corrélation (éviter la duplication dans le graphique)
for (i in 1:nband){
  for (j in 1:nband){
    if (coef.corr[i,j]==0){
      coef.corr[i:nband,j]<- 0
    }
  }
}

coef.corr[coef.corr==0]<-NA
mat.m<-melt(coef.corr, na.rm=FALSE)
mat.n<-ddply(mat.m, .(Var1), transform)
r<-round(mat.n$value,2) #arrondissement des coefficients de corrélation à deux chiffres après la virgule
mat.r<-cbind(mat.n[,1:2],r)

#############Diagramme à deux dimensions avec ggplot2#######
labelsx<-seq(2001,2011,1) #noms de l'axe des x
labelsy<-seq(2001,2011,1) #noms de l'axe des y

#Graphique

ggplot(mat.r, aes(factor(Var1), factor(Var2), label=r))+ geom_tile(aes(fill=r ),colour="white")+scale_fill_gradient(low="seagreen4", high="violetred",       na.value="white")+geom_text(aes(fontface=2))+ylab("Years")+xlab("Years")+labs(fill="Correlation \nCoefficient (R)")+labs(title="Heatmap of Correlation Coefficient")+theme(axis.title.x=element_text(size=20), axis.title.y=element_text(size=20),axis.text.x=element_text(size=10), axis.text.y=element_text(size=10),plot.title=element_text(size=20))+theme_bw(base_size=20, base_family=2)+scale_x_discrete(labels=labelsx)+scale_y_discrete(labels=labelsy)+coord_flip()

########################################

Et voilà, vous obtiendrez un chouette graphique que celui-ci:

Diagramme deux dimensions R

Utiliser l’Adafruit Ultimate GPS Logger Shield pour faire du suivi GPS sur QGIS

Il y a trois mois je vous expliquais comment j'avais créé un GPS Logger sur Arduino et comment je visualisais le résultat dans QGIS, mais depuis cet article j'ai exploité l'Adafruit Ultimate GPS Logger Shield différemment pour faire du suivi GPS avec QGIS :

IMG_3755

Adafruit Ultimate GPS Logger Shield

1. Ouvrir QGIS et sélectionner le menu Vue / Panneaux / Information GPS. Vous devriez ensuite voir une nouvelle fenêtre.

Information_GPS

2. Brancher en USB la carte Arduino avec l'extension GPS (mettre l'Adafruit Utlimate GPS logger shield en mode Direct pour recevoir les données NMEA issues directement de la puce GPS et attendre quelques secondes que la position du GPS se fixe)

3. Configurer la connexion du GPS : mActionOptions 

  • choisir le type connexion : par défaut j'ai laissé Autodétecter (Une fois connecté vous ne pourrez bien évidemment pas modifier le type de connexion sans vous déconnecter)
  • activer l'affichage du Curseur qui indiquera votre position à l'écran et choisir la taille de celui-ci
  • choisir le type de centrage de la carte par défaut en sélectionnant Toujours cela signifie que le curseur se trouvera toujours au centre de l'espace carte
  • si vous souhaitez enregistrer toutes vos positions GPS dans un Fichier journal au format NMEA vous pouvez renseigner le chemin qui vous convient

4. Lancer la connexion entre QGIS et le GPS (la connexion peut prendre quelques secondes) et vous devriez ensuite voir le curseur indiquant votre position dans l'espace carte

curseur

5. Aller ensuite dans l'onglet mActionToggleEditing et vous verrez en temps réel les informations GPS extraites de la trame NMEA qui sortent de la puce GPS (suivant le GPS utilisé vous verrez apparaitre plus ou moins d'informations)

Infos_TR

6. Pour aller plus loin, si vous souhaitez faire des relevés dans un fichier shape c'est possible :

  • Il vous faut créer une couche shapefile (points, lignes ou polygones) et la mettre à jour
  • Pour ajouter un point : faire simplement Ajouter un point dès que vous estimez que la position du GPS est satisfaisante
    Ajouter
  • Pour ajouter des lignes ou des polygones deux possibilités : 
    1- faire Ajouter un point de tracé pour chaque point GPS qui correspondra au tracé de votre ligne ou polygone (dès que deux points sont ajoutés le Tracé sera représenté) puis une fois que tous les points ont été créé faire Ajouter une ligne ou un polygone ce qui ajoutera l'entité à la couche en mise à jour et sélectionnée.
    2- cocher Ajouter automatiquement des points dans l'onglet Pister et ainsi vous verrez le tracé créé par le positionnement GPS  en temps réel que vous pourrez ensuite ajouter à la couche en mise à jour et sélectionnée en faisant Ajouter une ligne ou un polygone
    Ajouter_poly
  • Une fois que vous avez ajouté votre entité, le formulaire de la couche apparait ce qui vous permet de renseigner les informations que vous souhaitez

Nota :
> Si le Tracé ne vous convient pas, vous pouvez le supprimer en cliquant sur l'icône rafraichir à droite d'Ajouter un point de tracé
> Si vous souhaitez enregistrer automatiquement chaque nouvelle entité ajoutée dans une couche vous pouvez alors cocher dans le menu numérisation : Enregistrer automatiquement chaque entité ajoutée 
> N'oubliez pas de jeter un oeil à l'indicateur coloré du signal GPS :
 – vert : Bonne connexion 3D
 – jaune : Bonne connexion 2D
 – rouge : Correction mauvaise ou inexistante
 – gris : Pas de donnée

7. En fonction du GPS que vous utilisez, vous pouvez également visualiser la force du signal GPS de chaque satellite auquel vous êtes connecté : gpstrack_barchart ainsi que leur position grâce au graph polaire : gpstrack_polarchart mais avec l'Adafruit Ultimate GPS Logger Shield il n'est pas possible d'avoir ces informations…


PS : Le test a été réalisé avec QGIS 2.0.1-Dufour sur Mac OSX.

Geocoder un fichier d’adresses sur QGIS avec Google

1. Convertir votre fichier d'adresses en un fichier CSV avec 4 colonnes :

  • Adresse
  • Code postal
  • Ville
  • Pays

2. Ouvrir QGIS

3. Installer le plugin MMQGIS 

4. Une fois le plugin installé aller dans MMQGIS / Geocode / Geocode CSV with Google

5. Choisir le fichier CSV en entrée, renseigner les champs à utiliser pour le geocodage et pour terminer, définir les fichiers de sorties

Goeocode

6. Patienter un peu et le fichier shape sera ajouté à QGIS une fois le géocodage terminé

Créer facilement son GPS Logger avec Arduino et visualiser le résultat dans QGIS

Arduino c'est quoi ce machin là?

  • Une carte d’interface programmable capable de piloter des capteurs et des actionneurs afin de simuler ou créer des systèmes automatisés.
  • Un logiciel de programmation qui permet de programmer la carte en fonction du comportement désiré.
  • Le tout, logiciel comme matériel, est sous licence libre. Une grande communauté d’amateurs et de passionnés contribuent à développer des applications et à les partager.

Source : http://blog.crdp-versailles.fr/technogalois 

Que des bons points pour Arduino alors je me suis dit pourquoi je ne me lancerai pas en commençant par «The Arduino Starter Kit» (Le kit coute entre 80 et 100€ suivant les sites).

IMG_3648

Pour commencer, j’ai suivi quelques un des exemples proposés dans le kit et très vite j’ai réalisé que cette petite carte pouvait être d’un grand intérêt car très «flexible». En effet, il est possible d'y rajouter des extensions (shield) ou des composants directement. Par exemple, rajouter un clavier, un écran LCD, un lecteur de carte SD, une diode, un moteur… suivant le besoin que l’on a et ce qu'on souhaite développer. Pour faire simple y a une brique principale obligatoire (Arduino) qui peut contrôler des briques secondaires (shield ou composants) que l’on souhaite rajouter. C’est un peu comme des Lego avec la programmation en plus!

Les premiers tests réalisés, j’ai rapidement eu envie de passer à l’étape supérieure afin de créer mon propre GPS data logger à l’aide d’un shield GPS. Je me suis renseigné sur Internet et le shield qui me paraissait le plus complet car :

  • disposant d’un GPS
  • d’un emplacement pour carte SD
  • adapté à ma carte Arduino Uno (livré avec le kit)

était le shield créé par la société Adafruit (fabriquant et créateur de nombreux shield pour Arduino) : Adafruit Ultimate GPS Logger Shield.

IMG_3755

Une fois reçu, j'ai suivi les instructions du Wiki d'Adafruit qui explique comment brancher le shield et les bases de développement qui vont avec (Je vais pas ré-expliquer toutes les étapes ici car le Wiki est vraiment très bien fait). 

Ensuite après avoir suivi les éléments indiqués, j'ai alors obtenu des données NMEA (National Marine Electronics Association) dans un fichier TXT sur la carte micro SD. Ces données NMEA étant très brutes :

$GPGGA,093024.000,4337.9276,N,00350.7873,E,1,5,1.40,-10.4,M,49.7,M,,*46
$GPRMC,093024.000,A,4337.9276,N,00350.7873,E,0.37,197.15,131013,,,A*68

J'ai cherché à rendre le fichier en sortie plus lisible (en ayant pour idée de charger le fichier TXT comme un fichier texte délimité dans QGIS) mais pour cela ill a fallu déchiffrer les trames NMEA disponibles (GGA et RMC).

Puis en creusant sur internet, j'ai décidé de ne garder que la trame GGA qui m'a paru plus complète pour mon utilisation et voilà comment ça se traduit :

$GPGGA  : Type de trame
064036.289 : Trame envoyée à 06h40m36,289s (heure UTC)
4836.5375,N : Latitude 48,608958° Nord = 48°36'32.25" Nord
00740.9373,E : Longitude 7,682288° Est = 7°40'56.238" Est
1  : Type de positionnement 

  • 0 = invalid
  • 1 = GPS fix (SPS)
  • 2 = DGPS fix
  • 3 = PPS fix
  • 4 = Real Time Kinematic
  • 5 = Float RTK
  • 6 = estimated (dead reckoning) (2.3 feature)
  • 7 = Manual input mode
  • 8 = Simulation mode

04  : Nombre de satellites utilisés pour calculer les coordonnées
3.2  : Précision horizontale ou HDOP (Horizontal dilution of precision)
200.2,M  : Altitude 200,2, en mètres

 46.9,M  : Height of geoid (mean sea level) above WGS84 ellipsoid

,,,,,0000  : D'autres informations peuvent être inscrites dans ces champs
*0E  : Somme de contrôle de parité, un simple XOR sur les caractères précédents

 

Après avoir déchiffré cette trame GGA, j'ai adapté le code que vous trouverez ici pour obtenir :  DATE; HEURE; LATITUDE; LONGITUDE; ALTITUDE; NOMBRE DE SATELITTES; HDOP (Le code se charge sur la carte Arduino via l'application dédiée : http://arduino.cc/en/main/software)

log


Une fois le fichier TXT créé et structuré, il suffit d'ouvrir QGIS pour visualiser les points relevés en important le fichier comme une couche de texte délimité :

  • choisir le point-virgule comme délimiteur
  • sélectionner le champ X et Y (longitude/latitude)

Import_log

Faire ok et voilà le résultat :

logger_qgis

Le tracé va du jaune au rouge.

Bilan : J'ai créé un GPS Data logger que je peux adapter à mes besoins et d'une précision de 10m en XY pour environ 90€ 

image

  • Arduino Uno : 20€
  • Shield GPS Adafruit : 60€
  • Pile 9 volt : 5€
  • Carte SD 4Go : 5€

 

Copyright © 2024 DATA\WAX

Thème par Anders NorenHaut ↑