CartoType can generate shading for urban areas automatically from the density of the street network.
The makemap command is
/urbanareas=yes|no - generate an urban-area array layer from street data; default is no
Here's a sample, using a rather bright yellow so that the urban areas show up on the terrain:
Urban areas generated in this way are not polygons but array map objects that provide an alpha-only image. The style sheet used to draw the map above contains the following layer element:
<layer name='urban-area'> <shape fill='yellow' opacity='0.7'/> </layer>
Here's another sample without terrain, with a diifferent color for urban areas.