Wikipedia talk:WikiProject U.S. Roads/Illinois/Lengths

message: The following program can be used to extract data from the downloadable DBF files available here: T2 GIS Data
  # extractRoads.py
  
  from __future__ import with_statement
  from struct import *
  
  import sys
  
  def main(argv):
    if len(argv) != 2:
      raise Exception, "Not enough arguments!"
    inputFilename = argv[1]
    outputFilename = ("illinois_state_highways.txt")
    with open(inputFilename, "rb") as inputFile:
      try:
        outFile = open(outputFilename, "w")  
        print "Opened %s" % inputFilename
        while inputFile.closed == False:
          myByte = inputFile.read(1)
          if '\r' in unpack('c', myByte):
            break
          else:
            pass
        line = "test"
        while len(line) > 0:
          line = inputFile.read(231)
          if len(line.strip()) > 10:
            inventory_number = line[0:19]
            beg_sta = line[18:33]
            end_sta = line[33:48]
            aadt = line[48:54]
            aadt_year = line[54:58]
            county_hwy = line[58:63]
            district = line[63]
            functional_class = line[64:66]
            hcv = line[66:71]
            hcv_year = line[71:75]
            county = line[75:78]
            lanes = line[78:80]
            marked_route_1 = line[80:84]
            marked_route_2 = line[85:89]
            marked_route_3 = line[90:94]
            marked_route_4 = line[95:99]
            municipal_volume = line[100:105]
            municipal_number = line[105:109]
            route_name = line[109:140]
            segment_length = line[140:144]
            township = line[144:146]
            municipal_name = line[146:166]
            township_name = line[166:185]
            county_name = line[185:196]
            functional_name = line[196:231]
            outFile.write("%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s" % (inventory_number, beg_sta, end_sta, aadt, aadt_year, county_hwy, district, functional_class, hcv, hcv_year, county, lanes, marked_route_1, marked_route_2, marked_route_3, marked_route_4, municipal_volume, municipal_number, route_name, segment_length, township, municipal_name, township_name, county_name, functional_name) + "\n")
      finally:
        outFile.close()
    return 1
  
  if __name__ == "__main__":
    main(sys.argv)
This can be imported into a database (I used MySQL) which is defined as the following:
  CREATE TABLE `illinois_state_highways` (
  `inventory_number` varchar(32) NOT NULL,
  `beg_sta` float NOT NULL,
  `end_sta` float NOT NULL,
  `aadt` int(10) unsigned NOT NULL,
  `aadt_year` int(10) unsigned NOT NULL,
  `county_highway` varchar(16) NOT NULL,
  `district` int(1) unsigned NOT NULL,
  `functional_class` smallint(5) unsigned NOT NULL,
  `hcv` int(10) unsigned NOT NULL,
  `hcv_year` int(10) unsigned NOT NULL,
  `county` int(10) unsigned NOT NULL,
  `lanes` int(10) unsigned NOT NULL,
  `marked_route_1` varchar(8) NOT NULL,
  `marked_route_2` varchar(8) NOT NULL,
  `marked_route_3` varchar(8) NOT NULL,
  `marked_route_4` varchar(8) NOT NULL,
  `municipal_volume` int(10) unsigned NOT NULL,
  `municipal_number` int(10) unsigned NOT NULL,
  `route_name` varchar(64) NOT NULL,
  `segment_length` float NOT NULL,
  `township` varchar(10) default NULL,
  `municipal_name` varchar(64) NOT NULL,
  `township_name` varchar(64) NOT NULL,
  `county_name` varchar(64) NOT NULL,
  `functional_name` varchar(64) NOT NULL
  )
YMMV. But this is most of the hard part. —Rob (talk) 20:41, 8 November 2007 (UTC)