Jeff's Website

Modelling The Road Network

The logical place to start when looking at the creation of a city is with the layout of the roads. Since the project was to be based on a city structure like Manhattan, some maps of the area were examined.

Many tourist oriented web sites contain useful maps that can be used for this purpose.

The map on the right is of an area of Manhattan called Upper East Side. Roads are shown on the map as the dark brown lines. The beige areas enclosed by the roads are referred to as blocks, and contain the buildings present in the city.


Since the city structure would be based on a grid, it was decided to use a 'graph' type data structure composing nodes and links to represent the model.

The links represent roads while the nodes represent junctions between these roads.

This method of representing the model is very efficient since it allows individual nodes to be moved and the whole model adjusts accordingly, the links do not need to be updated. The model can almost be thought of as a 'net' that can be stretched and manipulated as required. This approach also added the possibility of being able to navigate around the city by travelling between nodes.

Further work resulted in the development of a prototype applet which was used to demonstrate the concept of using nodes and links to model the city roads. To add realism, some variation was made to the position of individual nodes to obtain 'shifted' and 'random' models, and, when the two are combined, the 'shifted/random' model.

It was decided to use four-sided (rectangular) blocks for simplicity, but there is no reason why the system cannot be extended to cope with more than this.

Click on the buttons (Normal, Shifted, Random & Shifted/Random) at the top of the applet to view the different model types.

This prototyping lead to the development of a 'CityModel' object consisting of all the nodes & links to describe a basic city road structure.


Java is not installed, or is not available, on your computer.

Follow your browser instructions to install the Java plugin.