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 area1

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'/>

Here's another sample without terrain, with a diifferent color for urban areas.

denmark urban areas