[technique] YunoSeeMe: Une application pour faire des profiles d'altitudes entre deux points

Florian Morgan florian.morgan at gmail.com
Jeu 2 Juil 23:54:10 CEST 2015


Bonjour à tous,

J'ai commencé à développé une application pour pouvoir faire des profiles
d'altitudes (un peu comme heywhatsthat).
L'idée de base est de prendre deux coordonnées GPS et de générer quelque
chose qui ressemble à ça :

​Cela représente un profile (vue en coupe) de l'altitude (niveau au sol)
entre les deux points, avec le trait droit représentant la "ligne de vison"
entre ces points.

Actuellement ce service existe et est rendu par http://www.heywhatsthat.com/.
Le "problème" avec heywhatsthat est qu'on a pas accès aux données brutes
(liste des altitudes).
C'est pour ça que je souhaite développer un programme pour avoir les
données brutes et éventuellement "ajouter" de l'intelligence dessus.

L'objectif par rapport à tetaneutral est de pouvoir entrer une coordonnées
GPS avec altitude (par exemple la position de ma maison avec la hauteur au
niveau de mon toit) et de calculer tous les profiles possibles entre cette
position et les antennes déjà existantes du réseau.
Ensuite à partir du profile on pourra attribuer une note qui donnera la
"qualité" possible de la liaison. On pourrait ainsi plus facilement choisir
une antenne ou une autre pour faire relai.

Actuellement j'ai codé une petite appli en python (environ 200-300 lignes
de code, ce qui est peu).
Le résultat est :

$ ./profile.py 43.561725 1.444796 43.671348 1.225619
$HOME/Downloads/EUD_CP-DEMS_3500025000-AA.tif
elevation profile between coordinates 43.561725, 1.444796 and 43.671348,
1.225619 is
[{'lat': 43.561725, 'distance': 0.0, 'elevation': 226.31865, 'long':
1.444796, 'overhead': 0.0}, {'lat': 43.56193910742188, 'distance':
41.88788248425599, 'elevation': 224.31079, 'long': 1.444367919921875,
'overhead': 0.0703612706860941}, ...]

J'ai tronqué le tableau résultant qui fait ~500 points.

Le tableau renvoyé correspond à la liste des
 - latitudes
 - distances depuis le point de départ
 - altitudes
 - longitude
 - correction par rapport à la courbure de la terre
entre les deux points entrés en paramètre.
Tracé en graph à partir de Numbers (OS X) ça donne :

​Le trait bleu correspond aux altitudes "brutes", le trait vert représente
la courbure de la terre entre les deux points et enfin le trait jaune
correspond à la somme des deux.

Pour info, les points correspondent à Pech David (départ) et le Ratelier
(arrivée), un restaurant du côté de la forêt de Bouconne.

Pour y arriver, je suis parti d'une carte DEM publique (le fichier
*EUD_CP-DEMS_3500025000-AA.tif* passé en ligne de commande) provenant de
l'agence européene de l'environnement résultant du programme Copernic (
http://www.eea.europa.eu/data-and-maps/data/eu-dem). La carte représente
une grosse partie de la France (un peu tronqué au nord) et a une résolution
de 25m au niveau de la surface.
Cette carte est censée représenter le niveau du sol au point demandé en
mètres.
Pour info, la carte utilisé par heywhatsthat est la carte américaine SRTM qui
a une définition de 90m environ (donc beaucoup moins précise).
Ces cartes sont souvent les cartes utilisées par Google Maps et autres pour
fournir le même genre de service. L'idée dans mon cas est d'avoir une appli
offline sans aucune dépendance.

Pour cet exemple, le programme python met ~ 900ms pour générer la liste des
points sur mon ordi portable, ce que est largement acceptable pour moi. ça
serait probablement plus lent sur un Raspberry Pi ... Des optimisations
sont surement possibles ...

Actuellement il manque :
 - la ligne de vue entre les deux points à partir d'altitudes spécifiées
aux points de départ et d'arrivée.
 - le "score" : Cette partie là est plus compliquée, ça consisterait à
donner une note au profile pour qualifier la "qualité" de la ligne de vue.

Le code est dispo sur le dépot GitHub suivant :
https://github.com/superbob/YunoSeeMe

Il y a un README avec des infos sur comment exécuter le programme.

Qu'en pensez-vous ?
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.tetaneutral.net/pipermail/technique/attachments/20150702/2f824900/attachment.htm>
-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: profile-0904.png
Type: image/png
Taille: 1904 octets
Desc: non disponible
URL: <http://lists.tetaneutral.net/pipermail/technique/attachments/20150702/2f824900/attachment.png>
-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: profile-curvature2.png
Type: image/png
Taille: 77239 octets
Desc: non disponible
URL: <http://lists.tetaneutral.net/pipermail/technique/attachments/20150702/2f824900/attachment-0001.png>


Plus d'informations sur la liste de diffusion technique