Accueil / Blog / Métier / 2014 / Dessiner une ville à la main avec TileMill (3 – Occupation des sols et cours d'eau)

Dessiner une ville à la main avec TileMill (3 – Occupation des sols et cours d'eau)

Par Karl Azémar — publié 20/03/2014
Contributeurs : Eric Bréhault, Frédéric Bonifas, Mathieu Leplatre
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.
Dessiner une ville à la main avec TileMill (3 – Occupation des sols et cours d'eau)

Assemblage de textures pour l'affichage de zones d'occupation des sols

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.

Affichage des zones avec une texture

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;
}
}

Application de contours aux zones

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.

Affichage basique des cours d'eau

Plutôt qu'appliquer une couleur de fond, je crée une nouvelle texture de crayonnage, beaucoup moins dense :

Application d'une texture aux cours d'eau

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 :

Deuxième couche de cours d'eau avec buffer

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.

Application d'un contour aux cours d'eau

Je peux maintenant assembler toutes les données sélectionnées : types d'occupation des sols, cours d'eau, bâtiments...

Assemblage final

 

ABONNEZ-VOUS À LA NEWSLETTER !
Voir aussi
Retour State of the Map France 2018 Retour State of the Map France 2018 23/07/2018

L'équipe de Makina attendait avec impatience l'événement de l'année, State Of The Map 2018 à ...

Drape lines on a DEM with PostGIS 30/04/2013

This article gives a few SQL commands to drape 2D geometries on a DEM (Digital Elevation Model), in ...

Formation PostgreSQL / PostGIS du 12 au 14 juin à Paris Formation PostgreSQL / PostGIS du 12 au 14 juin à Paris 07/05/2018

Découvrez les outils Libres pour gérer vos données spatiales.

Ré-ordonner des lignes dans PostGIS avec une requête récursive 09/02/2018

Comment ordonner des lignes les unes à la suite des autres dans PostGIS

PostgreSQL utilisations avancées de generate_series pour générer du contenu PostgreSQL utilisations avancées de generate_series pour générer du contenu 27/06/2017

Générer du contenu en masse permet de tester les requêtes, index et traitements complexes sur ...