Contexte : J'ai commencé à faire des cartes avec les données INSEE disponibles
sur opendata il y a 2 semaines.
J'ai trouvé quelques outils comme qGIS, mais ayant une machine asthmatique,
j'ai fini par construire les cartes depuis rien, juste en regardant les
fichiers sources, et les cartes SVG et c'est facile : tout le monde peut y
arriver.
C'est si simple avec les bons outils (python + SVG + HTML + matplotlib et une
connaissance minimale en math), que ce serait bien de rendre ce savoir
disponible pour tous.
La plupart des difficultés techniques comme : un point est il dans un polygone
?
Quel sont les points minimum et le maximum dans une carte ?
Sont résolues simplement sans classe avec un outil mal aimé de python : les
nombres complexes.
(Ceci au passage est un "rant" contre la classe point 2D qui est donnée en
exemple comme la classe pour apprendre, et une réaffirmation que les maths
sont une abstraction plus importante que l'objet.)
Dans un premier temps on va prendre un fichier source, le regarder, et tenter
naïvement de construire une carte.
On va rappeler très rapidement ce qu'est un nombre complexe.
On va prendre un fichier de destination et le regarder, et sans connaissance
du SVG tenter de le construire.
Ensuite on va utiliser matplotlib pour automatiser la coloration par gradient.
On va y arriver.
On va aussi découvrir une méthode de résolution des problèmes de contraste par
"non linéarisation" des niveaux de couleurs (tri ordonné) qui marche à
quasiment tous les coups (merci les OrderedDict et les sets).
On va utiliser un algo simple pour trouver le polygone qui contient un point
et le mettre en œuvre. Parler de distance et éviter en beauté le problème des
projections en cartographie car j'y connais rien.
On va peut être comparer avec qgis en terme de vitesse pour la génération de
carte SVG, et aux tutos disponibles sur internet, et se dire que ça vaut le
coup de partager ce savoir.
Enfin on va montrer que la complexité afférente à écrire un cadricel étant
supérieure à la 100 aine de ligne de codes pour faire le travail sans se
fatiguer, c'est peut être pas nécessaire de faire un cadriciel.
Et évidemment, je vais conclure sur les quaternions, et leur utilisation par
les riggers dans l'industrie du jeu plutôt que les matrices pour la 3D et
souligner qu'on a des modules pour les quaternions en python, parce qu'on a
une communauté de qualité avec des scientifiques qui contribuent et que sans
eux, ce serait bien plus dur de faire le kakou en 100 lignes de codes.
Remercions aussi les initiatives d'opendata sans lesquelles on pourrait rien
faire et rendons hommage à la qualité de données si simple que leur mise en
œuvre est aisée.
Et voilà comment on construit une carte de représentation de données sans rien
y connaître en cartographie. Parce qu'il y a des gars biens qui partagent les
données sans les "obscurcir" et d'autres leur code et qu'il y a une communauté
au milieu pour mettre les savoirs en relation.
Socialite: Private-first social network powered by Python 3.5 and asyncio aiohttp
Amirouche BoubekkiVenez vous faire les mains sur un projet utilisant Python 3.5 et le framework aiohttp basé asyncio (avec des morceaux de FoundationDB dedans).
https://github.com/amirouche/socialite/