TileMill: Open Source Map Design
seen from China

seen from Italy

seen from Italy
seen from Spain

seen from Russia

seen from Türkiye
seen from Malaysia
seen from Yemen
seen from China

seen from Germany
seen from Pakistan
seen from Venezuela

seen from Türkiye

seen from Germany
seen from Canada
seen from China
seen from United States
seen from United States

seen from Italy
seen from Brazil
TileMill: Open Source Map Design
Conceptual cartography
Conceptual cartography
mapbox et tilemill
Un framework pour publier facilement et joliment de la donnée SIG sur le web:
https://www.mapbox.com
https://www.mapbox.com/tilemill
Du potentiel, on y reviendra.
data-driven maps 101
Nick, 5/28:
This Nature article really got me thinking about presenting data on maps. Not being a cartographer or computer programmer, I was very intimidated by the process...
However, I was directed to the program Tilemill. This “Insanely Illustrated Guide to Your First Data-Driven Tilemill Map” by Lisa Williams (Twitter: @lisawilliams) was insanely helpful to get me started. Lisa does a great job of walking you through the process. Here is my first map:
As with most graphical representations of data though, it really depends what kind of findings we discover. The data above represents different levels of a variable (in this the case, the amount of children enrolled in early intervention programs) at different specific points (i.e., cities) in Rhode Island. This might be fine if we focus on smaller areas like cities or individual states, but what about state-level changes? For this, we’ll need to use choropleth maps, which is one of the things I’ll be tackling next! (Lisa Williams directed me to this tutorial to making my first choropleth map!)
more to come soon!
Great thing about TileMill is that you can use it to create maps, but you can also use it to create tiles that can be loaded into custom servers and served to browsers. For the more Processing-inclined, be sure to check out Till Nagel's TileMill for Processing.
Melbourne building footprints
City of Melbourne's data portal has this nice dataset of building footprints: a rough 2D outline of the shape of the building at ground level. But what's cool is the height in metres of (almost) every building in is included.
Let's grab the shapefile.
wget https://data.melbourne.vic.gov.au/api/geospatial/qe9w-cym8?method=export&format=Shapefile
A quick preview in TileMill shows a small problem:
See the overlapping parts of Etihad Stadium? We need to draw the buildings from north to south. I load the shapefile into PostGIS:
ogr2ogr -t_srs EPSG:3857 -overwrite -f "PostgreSQL" PG:"dbname=gis user=ubuntu password=..." -nlt MULTIPOLYGON BuildingFootprints.shp
For good measure, here's an alternative way:
shp2pgsql BuildingFootprints.shp | sudo -u mapbox tee footprints.sql psql -d gis < footprints.sql
Now, a bit of fancy styling, and some more data from OpenStreetMap, and voila.
The full CartoCSS code for TileMill is here:
Map { background-color: hsl(40,0.3,0.9);//#fff; } @s: 0.3; @l: 0.8; @h: 240; #buildings { building-height:[height]*0.75; building-fill:white; [flooors < 5] { building-fill-opacity:0.2; } [flooors < 5] { building-fill:hsl(@h,@s,0.7); } [flooors >= 5] { building-fill:hsl(@h,@s,0.6); } [flooors > 20] { building-fill:hsl(@h,@s,0.5); } [flooors > 40] { building-fill:hsl(@h,@s,0.35); } [flooors < 5] { building-fill-opacity:0.2; } [flooors >= 5] { building-fill-opacity:0.8; } [flooors >= 20] { building-fill-opacity:0.9; } [flooors >= 40] { building-fill-opacity:1; } } #water { polygon-fill:hsl(220,30%,40%); image-filters:agg-stack-blur(4,4); } #rail { line-width:2; [zoom >= 16] { line-width:4; } line-color:yellow;//hsla(140,80%,40%,30%); line-opacity:0.3; line-smooth:1; ::inner { line-width:1; [zoom >= 16] { line-width:2; } line-color:orange; line-smooth:1; } } #bikeroutes { line-width:6; line-opacity:0.3; line-color:lightgreen; image-filters:agg-stack-blur(2,2); line-smooth:1; ::inner { line-width:3; line-color:hsl(120,0.7,0.4); line-cap:round; line-join:round; line-smooth:1; } } #streetnames[zoom >= 15][highway != 'residential'], #streetnames[zoom >= 16] { text-placement:line; text-face-name:'DejaVu Sans Book'; text-name:[name]; text-fill:hsl(60, 20%, 70%); [zoom = 15] { text-size: 10; } [zoom >= 16] { text-size:12; } }