Wikipedia talk:WikiProject U.S. Roads/Illinois/Lengths
Appearance
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)