Implementation of Roads in the VTP software
- the vtdata library support a network of roads
(paved roads, unpaved, trails, railways, etc.)
- this functionality it implemented in the class
vtRoadMap
- read centerlines data from DLG,
TIGER, SHP, and other vector data formats
- clean up the network topology
- read and write RMF (road map files), an ad-hoc binary format
which stores:
- CRS (string, as OGC WKT)
- extents of dataset (double left, right, bottom, top)
- node locations (2D point)
- link locations (2D polylines)
- road number (short)
- width in meters (float)
- number of lanes (short)
- surface type (short enum)
- flags (short, contains direction of flow, presence of sidewalk
and other flags)
- sidewalk width (float)
- curb height (float)
- margin width (float)
- lane width (float)
- parking width (float)
- topology (indices of from-node and to-node, int)
- the vtlib library can read RMF and generates simple
triangle strips for the roads, draped on a terrain
- this functionality it implemented in the class
vtRoadMap3d
- in addition to the roadway surface, can create additional triangle strips
for: margins, parking areas, sidewalks
- applies correct road marking (yellow and white stripes) based on number
of lanes and traffic direction
- some caveats:
- Intersection (junction) geometry is rudimentary: a simple polygon
connecting the adjoining roads, with a 'pavement' texture. Better
intersections would require more knowledge of how the lanes of flow
move through the node - connectivity of the lanes, direction of flow
per lane. Even if there was an encoding to support it, this information
is rarely available.
- Draped roadways can sometimes have trouble with the terrain, see
Z-Buffer Issues