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

Florian Morgan florian.morgan at gmail.com
Ven 3 Juil 09:47:56 CEST 2015


Sur le code actuel pylint me donne :
253 lignes de code,
165 docstring,
34 commentaires et
42 lignes vides.

Il m'a aussi sorti un paquet de warnings que je vais corriger rapidement.
Je suis un newb du python donc je ne connais pas trop les conventions et
les bonnes pratiques...
Le 3 juil. 2015 7:57 AM, "Riri B" <richardbaret at gmail.com> a écrit :

> Le mec il développe une ptite appli super utile en 300 lignes, OKLM...
> Ca part bien et c'est super comme idée :)
> Richard
> Le 2 juil. 2015 23:54, "Florian Morgan" <florian.morgan at gmail.com> a
> écrit :
>
>> 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 ?
>>
>>
>> _______________________________________________
>> technique mailing list
>> technique at lists.tetaneutral.net
>> http://lists.tetaneutral.net/listinfo/technique
>>
>>
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.tetaneutral.net/pipermail/technique/attachments/20150703/71682627/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/20150703/71682627/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/20150703/71682627/attachment-0001.png>


Plus d'informations sur la liste de diffusion technique