Пример #1
0
def write_stops(input_file_name):
    stops_file = open('stops.txt', 'w')
    writer = UnicodeWriter(stops_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    writer.writerow(( u'stop_id', u'stop_name', u'stop_lat', u'stop_lon' ))

    f = codecs.open(input_file_name, encoding='latin-1')

    for line in f:
        if line[0] == '%':
            continue

        values = line.split()

        id = values[0]
        lat = values[1].replace(',', '.')
        lon = values[2].replace(',', '.')
        #name = '"' + ' '.join(values[3:]) +'"'
        name = ' '.join(values[3:])

        writer.writerow(( id, name, lon, lat )) # upside down, but it works

    stops_file.close()

    try:
        zip_file = ZipFile(output_file_name, 'a')
        zip_file.write('stops.txt')
    finally:
        zip_file.close()

    os.remove('stops.txt')
Пример #2
0
def write_agency():
    agency_file = open('agency.txt', 'w')
    writer = UnicodeWriter(agency_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    writer.writerow(( u'agency_id', u'agency_name', u'agency_url', u'agency_timezone' ))

    writer.writerow(( agency_id, u'SomeAgency', u'http://www.example.com', u'Europe/Berlin' ))

    agency_file.close()

    try:
        zip_file = ZipFile(output_file_name, 'a')
        zip_file.write('agency.txt')
    finally:
        zip_file.close()

    os.remove('agency.txt')
Пример #3
0
def write_routes_tripes_stop_times(input_file_names):

    routes = []
    trips = []
    stop_times = []

    for f in input_file_names:
        print f
        r, t, st = get_routes_tripes_stop_times(f)
        routes.extend(r)
        trips.extend(t)
        stop_times.extend(st)

    routes = set(routes)

    routes_file = open('routes.txt', 'w')
    trips_file = open('trips.txt', 'w')
    stop_times_file = open('stop_times.txt', 'w')

    routes_writer = UnicodeWriter(routes_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    trips_writer = writer = UnicodeWriter(trips_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    stop_times_writer = UnicodeWriter(stop_times_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)

    routes_writer.writerow(( u'route_id', u'agency_id', u'route_short_name', u'route_long_name', u'route_type' ))
    trips_writer.writerow(( u'route_id', u'service_id', u'trip_id' ))
    stop_times_writer.writerow(( u'trip_id', u'arrival_time', u'departure_time', u'stop_id', u'stop_sequence' ))

    routes_writer.writerows( routes )
    trips_writer.writerows( trips )
    stop_times_writer.writerows( stop_times )

    routes_file.close()
    trips_file.close()
    stop_times_file.close()

    try:
        zip_file = ZipFile(output_file_name, 'a')
        zip_file.write('routes.txt')
        zip_file.write('trips.txt')
        zip_file.write('stop_times.txt')
    finally:
        zip_file.close()

    os.remove('routes.txt')
    os.remove('trips.txt')
    os.remove('stop_times.txt')
Пример #4
0
def write_stops(input_file_name):
    stops_file = open('stops.txt', 'w')
    writer = UnicodeWriter(stops_file,
                           delimiter=',',
                           quotechar='"',
                           quoting=csv.QUOTE_MINIMAL)
    writer.writerow((u'stop_id', u'stop_name', u'stop_lat', u'stop_lon'))

    f = codecs.open(input_file_name, encoding='latin-1')

    for line in f:
        if line[0] == '%':
            continue

        values = line.split()

        id = values[0]
        lat = values[1].replace(',', '.')
        lon = values[2].replace(',', '.')
        #name = '"' + ' '.join(values[3:]) +'"'
        name = ' '.join(values[3:])

        writer.writerow((id, name, lon, lat))  # upside down, but it works

    stops_file.close()

    try:
        zip_file = ZipFile(output_file_name, 'a')
        zip_file.write('stops.txt')
    finally:
        zip_file.close()

    os.remove('stops.txt')
Пример #5
0
def write_agency():
    agency_file = open('agency.txt', 'w')
    writer = UnicodeWriter(agency_file,
                           delimiter=',',
                           quotechar='"',
                           quoting=csv.QUOTE_MINIMAL)
    writer.writerow(
        (u'agency_id', u'agency_name', u'agency_url', u'agency_timezone'))

    writer.writerow((agency_id, u'SomeAgency', u'http://www.example.com',
                     u'Europe/Berlin'))

    agency_file.close()

    try:
        zip_file = ZipFile(output_file_name, 'a')
        zip_file.write('agency.txt')
    finally:
        zip_file.close()

    os.remove('agency.txt')
Пример #6
0
def write_calendar_calendar_dates(bitfield_file_name, eckdaten_file_name):
    calendar_file = open('calendar.txt', 'w')
    calendar_dates_file = open('calendar_dates.txt', 'w')

    f = codecs.open(eckdaten_file_name, encoding='latin-1')

    lines = [l for l in f if l[0] != '%']

    start_date = lines[0][6:10] + lines[0][3:5] + lines[0][0:2]
    end_date = lines[1][6:10] + lines[1][3:5] + lines[1][0:2]

    c_writer = UnicodeWriter(calendar_file,
                             delimiter=',',
                             quotechar='"',
                             quoting=csv.QUOTE_MINIMAL)
    c_writer.writerow(
        (u'service_id', u'monday', u'tuesday', u'wednesday', u'thursday',
         u'friday', u'saturday', u'sunday', u'start_date', u'end_date'))

    cd_writer = UnicodeWriter(calendar_dates_file,
                              delimiter=',',
                              quotechar='"',
                              quoting=csv.QUOTE_MINIMAL)
    cd_writer.writerow((u'service_id', u'date', u'exception_type'))

    f = codecs.open(bitfield_file_name, encoding='latin-1')

    for line in f:
        date = start_date
        id, hex_field = line.split()[:2]

        bool_list = hex_to_bool_list(hex_field)

        if bool_list.count(True) > 25:
            exception_type = 2
            c_writer.writerow((id, 1, 1, 1, 1, 1, 1, 1, start_date, end_date))
        else:
            exception_type = 1
            c_writer.writerow((id, 0, 0, 0, 0, 0, 0, 0, start_date, end_date))

        for bool in hex_to_bool_list(hex_field):
            if (bool == False
                    and exception_type == 2) or (bool == True
                                                 and exception_type == 1):
                cd_writer.writerow((id, date, exception_type))

            date = increment_date_string(date)

    calendar_file.close()
    calendar_dates_file.close()

    try:
        zip_file = ZipFile(output_file_name, 'a')
        zip_file.write('calendar.txt')
        zip_file.write('calendar_dates.txt')
    finally:
        zip_file.close()

    os.remove('calendar.txt')
    os.remove('calendar_dates.txt')
Пример #7
0
def write_routes_tripes_stop_times(input_file_names):

    routes = []
    trips = []
    stop_times = []

    for f in input_file_names:
        print f
        r, t, st = get_routes_tripes_stop_times(f)
        routes.extend(r)
        trips.extend(t)
        stop_times.extend(st)

    routes = set(routes)

    routes_file = open('routes.txt', 'w')
    trips_file = open('trips.txt', 'w')
    stop_times_file = open('stop_times.txt', 'w')

    routes_writer = UnicodeWriter(routes_file,
                                  delimiter=',',
                                  quotechar='"',
                                  quoting=csv.QUOTE_MINIMAL)
    trips_writer = writer = UnicodeWriter(trips_file,
                                          delimiter=',',
                                          quotechar='"',
                                          quoting=csv.QUOTE_MINIMAL)
    stop_times_writer = UnicodeWriter(stop_times_file,
                                      delimiter=',',
                                      quotechar='"',
                                      quoting=csv.QUOTE_MINIMAL)

    routes_writer.writerow((u'route_id', u'agency_id', u'route_short_name',
                            u'route_long_name', u'route_type'))
    trips_writer.writerow((u'route_id', u'service_id', u'trip_id'))
    stop_times_writer.writerow((u'trip_id', u'arrival_time', u'departure_time',
                                u'stop_id', u'stop_sequence'))

    routes_writer.writerows(routes)
    trips_writer.writerows(trips)
    stop_times_writer.writerows(stop_times)

    routes_file.close()
    trips_file.close()
    stop_times_file.close()

    try:
        zip_file = ZipFile(output_file_name, 'a')
        zip_file.write('routes.txt')
        zip_file.write('trips.txt')
        zip_file.write('stop_times.txt')
    finally:
        zip_file.close()

    os.remove('routes.txt')
    os.remove('trips.txt')
    os.remove('stop_times.txt')
Пример #8
0
def write_calendar_calendar_dates(bitfield_file_name, eckdaten_file_name):
    calendar_file = open('calendar.txt', 'w')
    calendar_dates_file = open('calendar_dates.txt', 'w')

    f = codecs.open(eckdaten_file_name, encoding='latin-1')

    lines = [ l for l in f if l[0] != '%' ]

    start_date = lines[0][6:10] + lines[0][3:5] + lines[0][0:2]
    end_date = lines[1][6:10] + lines[1][3:5] + lines[1][0:2]

    c_writer = UnicodeWriter(calendar_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    c_writer.writerow(( u'service_id', u'monday', u'tuesday', u'wednesday', u'thursday', u'friday', u'saturday', u'sunday', u'start_date', u'end_date' ))

    cd_writer = UnicodeWriter(calendar_dates_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    cd_writer.writerow(( u'service_id', u'date', u'exception_type' ))

    f = codecs.open(bitfield_file_name, encoding='latin-1')

    for line in f:
        date = start_date
        id, hex_field = line.split()[:2]

        bool_list = hex_to_bool_list(hex_field)

        if bool_list.count(True) > 25:
            exception_type = 2
            c_writer.writerow(( id, 1, 1, 1, 1, 1, 1, 1, start_date, end_date ))
        else:
            exception_type = 1
            c_writer.writerow(( id, 0, 0, 0, 0, 0, 0, 0, start_date, end_date ))


        for bool in hex_to_bool_list(hex_field):
            if (bool == False and exception_type == 2) or (bool == True and exception_type == 1):
                cd_writer.writerow(( id, date, exception_type ))

            date = increment_date_string(date)

    calendar_file.close()
    calendar_dates_file.close()

    try:
        zip_file = ZipFile(output_file_name, 'a')
        zip_file.write('calendar.txt')
        zip_file.write('calendar_dates.txt')
    finally:
        zip_file.close()

    os.remove('calendar.txt')
    os.remove('calendar_dates.txt')