Nicolas Barradeau barradeau.com @nicoptere
étude et réalisation de cartes, souvent géographiques et un peu chiantes
commencer à dessiner une fourmi et finir par sculpter un dinosaure (géant)
la terre n'est pas plate, c'est même pas une sphère, c'est une plaie à déplier
chaque système de projection a des atouts et des inconvénients, pas de solution miracle
la cartographie est un outil indispensable dans les domaines civils et militaires
en 2005, une PME américaine (Google) lance une application Web (Google Maps) qui utilise un format de projection appelé EPSG 3857 ou srid: 900913 (1337, lol) et des tiles rasterisées carrées (XYZ tiles). leur base utilisateur fait le reste et ça devient la norme pour internet
une deuxième PME (Microsoft) apporte une contribution majeure en normalisant le nommage des tiles
To convert tile coordinates into a quadkey, the bits of the Y and X coordinates are interleaved, and the result is interpreted as a base-4 number (with leading zeros maintained) and converted into a string
tileX = 3 = 011
tileY = 5 = 101
quadkey = 100111 > 213 en base 4 > “213”
OpenStreetMap est un projet international fondé en 2004 dans le but de créer une carte libre du monde
OpenStreetMap est un projet supporté par quelques institutions et maintenu par des utilisateurs (passionnés)
depuis 2007, tout le monde est un GPS
OpenStreetMap expose une API publique ainsi que des planet dumps (des instantanés de la base entière téléchargeables séparément)
un node OSM
<node id="24909856" visible="true" version="4" changeset="3707436" timestamp="2010-01-24T23:35:50Z" user="lapinos03" uid="33634" lat="48.8478046" lon="2.3991444"/>
XML, verbeux, lourd, exhaustif
00000010 __ __ __ __ __ 78 9c e3 92 e2 b8 70 eb da 0c 7b ||.q.xx.....p...{|
00000020 81 0b 7b 7a ff 39 49 34 3c 5c bb bd 9f 59 a1 61 |..{z.9I4<\...Y.a|
00000030 ce a2 df 5d cc 4a 7c fe c5 b9 c1 c9 19 a9 b9 89 |...].J|.........|
00000040 ba 61 06 7a 66 4a 5c 2e a9 79 c5 a9 7e f9 29 a9 |.a.zfJ\..y..~.).|
00000050 c5 4d 8c fc c1 7e 8e 01 c1 1e fe 21 ba 45 46 26 |.M...~.....!.EF&|
00000060 96 16 26 5d 8c 2a 19 25 25 05 56 fa fa e5 e5 e5 |..&].*.%%.V.....|
00000070 7a f9 05 40 a5 25 45 a9 a9 25 b9 89 05 7a f9 45 |z..@.%E..%...z.E|
00000080 e9 fa 89 05 99 fa 40 43 00 c0 94 29 0c
binaire, compact, exhaustif et impropre à la consomation
compact, partiel, utilisable sur internet
var result = {
type:"FeatureCollection",
features:[{
geometry:{
type:"Polygon",
coordinates:[[[-122.26777,37.81545],[-122.26758,37.81596],...]]},
type:"Feature",
id:"4d2aa2869f",
properties:{}
}/*[...]*/ ]
}
format d'échange permettant de stocker un ensemble de tiles sous forme de DB sqlite.
OSM ne propose pas d'exporter ce format, il doit être compilé à part mais il est très utile pour les apps offline
MOBAC utilitaire de création, ajouter un tileset custom et requêter en PHP (démo et source)
OpenStreetMap est donc un graphe géant composé de nodes et de relations de plusieurs types et il y en a beaucoup
c'est une source vectorielle avant d'être une source raster, certains providers permettent de customiser ces tiles vectorielles
natural earth ensemble de ressources ratser et vectorielles
Overpass API web simplifiée pour appeler OSM
FreeGISData collection de ressources de plus ou moins bonne qualité
QGIS "Système d'Information Géographique Libre et Open Source" (et super solide)
maperitive utilitaire de création de tilesets
maptiler peut rendre service pour des petits trucs
QGIS la voie du samouraï
cartoDB + données non topographiques
mapzen serveur de tiles avec customisation
mapbox pareil mais pour les hipsters
une adresse pour visualiser les différents types de cartes: leaflet-providers
un graphe permet de modéliser des données au delà de la géographie, on peut donc étendre la définition de cartographie à celle de réseaugraphie ou d'historiographie (OSM garde une trace des modifications)
le champ de recherche sur la construction de plans est dense mais je suis tombé sur ce bouquin dont 3 des 4 co-auteurs sont des femmes
dans un milieu qui reste très masculin, je voulais rendre hommage à ces héroïnes discrètes qui rendent notre vie meilleure
avec des infos utilisateur, il faut une base de coordonées GPS avec une notion de temps.
ensuite, on agrège puis on décime. le site compagnon du livre rassemble la plupart des publications et parfois leur implémentation.
On Vehicle Tracking Data-Based Road Network Generation
parce qu'il utilise une distance de Fréchet
depuis une soixantaine d'années, on a vu émerger une forme d'art assistée par ordinateur. longtemps réservée à un petit nombre, cette pratique s'est démocratisée au cours des années 1980 avec l'arrivée des ordinateurs personnels grand public
depuis la fin des années 1990, grâce à internet et à des outils plus faciles d'accès, les pratiques artistiques numériques se sont généralisées et diversifiées
depuis une dizaine d'années, l'open data et la visualisation de données ont fait leur apparition vulgarisant une esthétique de la complexité dont l'art s'est évidemment emparé
la visualisation de données, se divise généralement en deux sous catégories: informative et exploratoire. la cartographie se prête éminemment à l'exploration.
fan de visual complexity depuis fort longtemps, j'ai fait l'acquisition du livre sur la cartographie des réseaux
un peu déçu, la partie sur les arbres vaut le coup, le reste est déjà vu, sa taxonomie des nouvelles formes est inconséquente
il parle de networkism, un mouvement artistique initié... d'après Visual Complexity
Networkism is a growing artistic trend, characterized by the portrayal of figurative graph structures—illustrations of network topologies revealing convoluted patterns of nodes and links
leaflet.js LE moteur d'affichage de carte JS
openlayers la même chose mais... différent
mapbox.GL rendu WebGL 2D des tiles MapBox
tangram.js rendu WebGL 3D des tiles Mapzen
vizicities & OSM Buildings voir les villes en 3D
cesium & WebGLearth globe 3D open source
degré | latitude | longitude |
---|---|---|
0° | 110.574 km | 111.320 km |
15° | 110.649 km | 107.550 km |
30° | 110.852 km | 96.486 km |
45° | 111.132 km | 78.847 km |
60° | 111.412 km | 55.800 km |
75° | 111.618 km | 28.902 km |
90° | 111.694 km | 0.000 km |
sur une sphère, les latitudes / longitudes n'ont pas un rapport constant au rayon de la terre (qui varie...)
function latLngDistance(lat1, lng1, lat2, lng2){
var RAD = Math.PI / 180; var p1 = lat1 * RAD; var p2 = lat2 * RAD; var tp = (lat2-lat1) * RAD; var td = (lng2-lng1) * RAD; var a = Math.sin(tp/2) * Math.sin(tp/2) + Math.cos(p1) * Math.cos(p2) * Math.sin(td/2) * Math.sin(td/2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var R = EARTH_RADIUS ; // meters or km return R * c; }
quand on projette la sphère en 2D, on étire les longitudes à mesure qu'on s'approche des pôles, pas joli joli mais ça va.
en revanche, comme on doit utiliser une échelle logarithmique pour projeter les latitudes, il est impossible de représenter ce qui se passe au delà de +/- ~85.0519°...
à l'usage quand on travaille à l'échelle d'une ville, ces variations sont négligeables. il faut toutefois pouvoir jongler entre des mètres, des angles, des pixels et des indices arbitraires (zoom, identifiants des tiles)
et quand tout semble perdu,
un héros surgit du néant,
ce héros s'appelle...
grâce à la classe précédente, je me suis fait une API pour créer une carte de tiles XYZ (c'est donc possible)
pros: légère (6Ko zippée), rend les tiles sur un canvas 2D
cons: pas rapide, pas puissante, incomplète, buggée, pas responsive, pas à jour, pas mobile friendly, pas retina, n'obéit qu'à son maître...
découper une grosse image de Pluton avec MapTiler
l'accès aux sources de données libres et un accès simplifié à leur manipulation permet de nouvelles formes de représentation et d'exploration du monde.
les interfaces sont accessibles et performantes et si ce que nous en ferons est incertain, les outils sont là.
et tiens! c'est cadeau!