DOI: 10.5281/zenodo.2275557
title: Traffic network routing index for the Czech Republic

description: <strong>Graph representation of road network of the Czech Republic</strong>

This dataset contains graph of the entire Czech road network. The data are derived from the Open Street Map project and stored in a HDF5 file. The file contains graph topology and metadata for edges and vertices. 

Spatial index is also included for the purpose of point snapping and other spatial queries. The spatial index is stored in a SQLite file with SpatiaLite extension.

Creation of this dataset has been supported by the Antarex project.

<strong>Routing Index in HDF5</strong>

<strong>File: </strong>CZE-1528295206-proc-20180724134457.hdf

The index is divided into parts according to geographical boundaries defined by country borders. In this case it contains only single part - CZE. This information along with the creation time is stored as an attribute in the root group of the file.

The graph topology is stored in the following way. Nodes have assigned a row index in the edges dataset which points to an outbound edge plus a number of the subsequent edges which are also output to this node. The edge metadata are stored in the EdgeData dataset to avoid redundancy. NodeMap dataset provides a convenient way to query nodes based on their uniqe identifiers.

<strong>File structure:</strong>

<pre><code class="language-javascript">HDF5 "CZE-1528295206-proc-20180724134457.hdf" {
GROUP "/" {
   GROUP "Index" {
      ATTRIBUTE "CreationTime" {
         DATATYPE  H5T_STD_I64LE
         DATASPACE  SCALAR
         DATA {
         (0): 1535451896
         }
      }
      ATTRIBUTE "PartsCount" {
         DATATYPE  H5T_STD_I32LE
         DATASPACE  SCALAR
         DATA {
         (0): 1
         }
      }
      ATTRIBUTE "PartsInfo" {
         DATATYPE  H5T_COMPOUND {
            H5T_STRING {
               STRSIZE 4;
               STRPAD H5T_STR_NULLPAD;
               CSET H5T_CSET_ASCII;
               CTYPE H5T_C_S1;
            } "id";
            H5T_STD_I64LE "nodeCount";
            H5T_STD_I64LE "edgeCount";
         }
         DATASPACE  SIMPLE { ( 1 ) / ( 1 ) }
         DATA {
         (0): {
               "CZE\000",
               904085,
               2223222
            }
         }
      }
      GROUP "CZE" {
         ATTRIBUTE "PartInfo" {
            DATATYPE  H5T_STRING {
               STRSIZE 4;
               STRPAD H5T_STR_NULLPAD;
               CSET H5T_CSET_ASCII;
               CTYPE H5T_C_S1;
            }
            DATASPACE  SCALAR
            DATA {
            (0): "CZE\000"
            }
         }
         DATASET "Edges" {
            DATATYPE  H5T_COMPOUND {
               H5T_STD_I32LE "edgeId";
               H5T_STD_I32LE "nodeIndex";
               H5T_STD_I32LE "computed_speed";
               H5T_STD_I32LE "length";
               H5T_STD_I32LE "edgeDataIndex";
            }
            DATASPACE  SIMPLE { ( 2223222, 1 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) }
         }
         DATASET "Nodes" {
            DATATYPE  H5T_COMPOUND {
               H5T_STD_I32LE "id";
               H5T_STD_I32LE "latitudeInt";
               H5T_STD_I32LE "longtitudeInt";
               H5T_STD_U8LE "edgeOutCount";
               H5T_STD_I32LE "edgeOutIndex";
               H5T_STD_U8LE "edgeInCount";
            }
            DATASPACE  SIMPLE { ( 904085, 1 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) }
         }
      }
      DATASET "EdgeData" {
         DATATYPE  H5T_COMPOUND {
            H5T_STD_I32LE "id";
            H5T_STD_U8LE "speed";
            H5T_STD_U8LE "funcClass";
            H5T_STD_U8LE "lanes";
            H5T_STD_U8LE "vehicleAccess";
            H5T_STD_U16LE "specificInfo";
            H5T_STD_U16LE "maxWeight";
            H5T_STD_U16LE "maxHeight";
            H5T_STD_U8LE "maxAxleLoad";
            H5T_STD_U8LE "maxWidth";
            H5T_STD_U8LE "maxLength";
            H5T_STD_I8LE "incline";
         }
         DATASPACE  SIMPLE { ( 2838, 1 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) }
      }
      DATASET "NodeMap" {
         DATATYPE  H5T_COMPOUND {
            H5T_STD_I32LE "nodeId";
            H5T_STRING {
               STRSIZE 4;
               STRPAD H5T_STR_NULLPAD;
               CSET H5T_CSET_ASCII;
               CTYPE H5T_C_S1;
            } "partId";
            H5T_STD_I32LE "nodeIndex";
         }
         DATASPACE  SIMPLE { ( 904085, 1 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) }
      }
   }
}
}</code></pre>

<strong>Spatial index</strong>

<strong>File: </strong>CZE-1528295206-proc-20180829135251.sqlite<br>
 

SQLite database contains two primary tables. Table <em>nodes</em> and table <em>segments</em>, that resluts of selection and projection from the tables of the same name in primary db. Both tables are suitable for <em>searching nearest lines</em> task and <em>searching closest node of nearest line</em> task. 

<pre><code class="language-sql">CREATE TABLE nodes 
( 
    gid INTEGER, 
    part_gid INTEGER, 
    node_type INTEGER, 
    geom POINT 
); 

CREATE TABLE segments 
( 
    gid INTEGER, 
    node_gid_from INTEGER,  
    node_gid_to INTEGER, 
    frc TEXT, 
    transition_time DOUBLE, 
    computed_speed REAL, 
    geom_length DOUBLE, 
    geom LINESTRING 
); </code></pre>

There are three more tables. Table <em>segments_rt</em> is a copy of table <em>segments</em>, that exclude loops in segments, hence it supports network routing task in SpatiaLite. Next table is <em>rt_network</em> (static graph generated from table <em>segments_rt</em> suitable for routing). The last one is table <em>virtual_rt_network</em>, that is an interface for routing query.
description: {"references": ["Silvano, C., Palermo, G., Agosta, G., Ashouri, A., Gadioli, D., Cherubin, S., ... & Cardoso, J. (2018, May). Autotuning and adaptivity in energy efficient HPC systems: The ANTAREX toolbox. In International Conference on Computing Frontiers (p. 6)."]}