Makina Blog
Dessiner une ville à la main avec TileMill (3 – Occupation des sols et cours d'eau)
Nous avons vu comment représenter les bâtiments. Je m'intéresse maintenant à la mise en forme des zones d'occupation des sols et des cours d'eau pour finaliser la représentation de Toulouse et des villes environnantes.
Cette carte de Toulouse a été créée à partir de données provenant de OpenStreetMap ; la zone affichée se situe à Toulouse et ses environs.
Affichage des zones d'occupation des sols
Je choisis de simplifier la représentation de l'occupation des sols en grands groupes : residentiel, commercial, industriel, naturel :
SELECT ST_Simplify(way,50) as way,landuse,way_area, CASE WHEN landuse = 'residential' THEN 'residential' WHEN landuse IN ('commercial','retail') THEN 'commercial' WHEN landuse = 'industrial' THEN 'industrial' WHEN landuse = 'cemetery' THEN 'cemetery' WHEN landuse IN ('farm','farmland','farmyard','forest','grass','vineyard') THEN 'natural' ELSE 'autres' END AS type FROM (SELECT * FROM planet_osm_polygon WHERE landuse IS NOT NULL) as zones
Je crée des textures sous GIMP que j'applique aux couches concernées.
Les bords sont trop rectilignes, j'ajoute deux contours avec du line-smooth afin de casser cela :
#zones { ::outline1 { line-smooth:2; line-color:@crayon; line-width:1; [zoom>=15] {line-width:0.4;} line-opacity:0.5; } ::outline2 [zoom<15] { line-smooth:3; line-color:@crayon; line-width:0.8; line-opacity:0.3; } }
Affichage des cours d'eau
Sans intervention ces tracés sont très rectilignes. Ce sont sans doute les plus difficiles à « casser ». Etant donné que les cours d'eau ont tendance à traverser une carte entière, ils attirent davantage l'attention que des éléments plus ponctuels.
Plutôt qu'appliquer une couleur de fond, je crée une nouvelle texture de crayonnage, beaucoup moins dense :
Le résultat ne plaît pas encore : les bords sont trop lisses. Je crée donc une deuxième requête PostGIS, pour appeler les mêmes données avec un buffer :
SELECT ST_Buffer(way,50) as way, waterway AS type FROM planet_osm_polygon WHERE waterway='riverbank'
J'applique à cette couche une nouvelle texture basée sur la première, mais encore plus légère :
J'arrive ainsi au résultat que je cherche : la reproduction d'un crayonnage rapide, débordant des limites d'origine. Je n'ai ensuite plus qu'à appliquer un contour.
Je peux maintenant assembler toutes les données sélectionnées : types d'occupation des sols, cours d'eau, bâtiments…
Actualités en lien
Mini-guide à l’usage des collectivités : l’Open Data, entre nécessité et opportunité
Tout ce que vous avez toujours voulu savoir sur l’Open Data. Petit guide à destination des collectivités pour l’appréhender et se l’approprier.
Dessiner une ville à la main avec TileMill (2 - Découper 340 000 polygones)
Comme nous l'avons vu dans un précédent article, la création d'une carte urbaine reproduisant un style crayonné repose sur la superposition de plusieurs effets : code sous TileMill, textures sous Gimp… Nous allons nous intéresser aujourd'hui à une intervention plus en amont : le découpage des polygones de bâtiments directement dans la base de données PostGIS.
Dessiner une ville à la main avec TileMill (1 - Les bâtiments)
L'objectif de ce projet est d'afficher une carte dans un style crayonné à partir de données géométriques stockées en base de données PostgreSQL/PostGIS. Nous voyons ici comment mettre en forme les bâtiments.