MHN.delete_if_exists(update_link_csv)
MHN.delete_if_exists(flag_node_csv)


# -----------------------------------------------------------------------------
#  Write data relevant to specified year and pass to SAS for processing.
# -----------------------------------------------------------------------------
arcpy.AddMessage('\nPreparing {0} network attributes...'.format(build_year))

# Export coding for highway projects completed by scenario year.
hwyproj_id_field = MHN.route_systems[MHN.hwyproj][1]
year_attr = [hwyproj_id_field,'COMPLETION_YEAR']
year_query = '"COMPLETION_YEAR" <= {0}'.format(build_year)
year_view = MHN.make_skinny_table_view(MHN.hwyproj, 'year_view', year_attr, year_query)
MHN.write_attribute_csv(year_view, year_csv, year_attr)
hwy_projects = MHN.make_attribute_dict(year_view, hwyproj_id_field, attr_list=[])
arcpy.Delete_management(year_view)

transact_attr = [hwyproj_id_field,'ACTION_CODE','NEW_DIRECTIONS','NEW_TYPE1','NEW_TYPE2','NEW_AMPM1','NEW_AMPM2','NEW_POSTEDSPEED1',
                 'NEW_POSTEDSPEED2','NEW_THRULANES1','NEW_THRULANES2','NEW_THRULANEWIDTH1','NEW_THRULANEWIDTH2','ADD_PARKLANES1',
                 'ADD_PARKLANES2','ADD_SIGIC','ADD_CLTL','ADD_RRGRADECROSS','NEW_TOLLDOLLARS','NEW_MODES','TOD','ABB','REP_ANODE','REP_BNODE']
transact_query = '"{0}" IN (\'{1}\')'.format(hwyproj_id_field, "','".join((hwyproj_id for hwyproj_id in hwy_projects)))
transact_view = MHN.make_skinny_table_view(MHN.route_systems[MHN.hwyproj][0], 'transact_view', transact_attr, transact_query)
MHN.write_attribute_csv(transact_view, transact_csv, transact_attr)
hwy_abb = MHN.make_attribute_dict(transact_view, 'ABB', attr_list=[])
arcpy.Delete_management(transact_view)

# Export arc & node attributes of all baselinks and skeletons used in
# projects completed by scenario year.
network_attr = ['ANODE','BNODE','ABB','DIRECTIONS','TYPE1','TYPE2','AMPM1','AMPM2','POSTEDSPEED1','POSTEDSPEED2',
                'THRULANES1','THRULANES2','THRULANEWIDTH1','THRULANEWIDTH2','PARKLANES1','PARKLANES2','BASELINK',
Exemplo n.º 2
0
for bus_fc in bus_fc_dict:
    arcpy.AddMessage('\nIdentifying representative runs from {0}...'.format(bus_fc))

    which_bus = bus_fc_dict[bus_fc]

    rep_runs_dict[which_bus] = {}
    for tod in out_tod_periods:
        arcpy.AddMessage('-- TOD {0}...'.format(tod.upper()))

        # Export header info of bus routes in current TOD.
        bus_id_field = MHN.route_systems[bus_fc][1]
        bus_route_attr = [bus_id_field, 'DESCRIPTION', 'MODE', 'VEHICLE_TYPE', 'HEADWAY', 'SPEED', 'ROUTE_ID', 'START']
        bus_route_query = MHN.tod_periods[tod][1]
        bus_route_view = MHN.make_skinny_table_view(bus_fc, 'bus_route_view', bus_route_attr, bus_route_query)
        MHN.write_attribute_csv(bus_route_view, bus_route_csv, bus_route_attr)
        selected_bus_routes = MHN.make_attribute_dict(bus_route_view, bus_id_field, attr_list=[])
        arcpy.Delete_management(bus_route_view)

        # Export itineraries for selected runs.
        bus_order_field = MHN.route_systems[bus_fc][2]
        bus_itin_attr = [bus_id_field, 'ITIN_A', 'ITIN_B', bus_order_field, 'LAYOVER', 'DWELL_CODE', 'ZONE_FARE', 'LINE_SERV_TIME', 'TTF']
        bus_itin_query = ''' "{0}" IN ('{1}') '''.format(bus_id_field, "','".join((bus_id for bus_id in selected_bus_routes)))
        bus_itin_view = MHN.make_skinny_table_view(MHN.route_systems[bus_fc][0], 'bus_itin_view', bus_itin_attr, bus_itin_query)
        MHN.write_attribute_csv(bus_itin_view, bus_itin_csv, bus_itin_attr)
        arcpy.Delete_management(bus_itin_view)

        # Process exported route & itin tables with gtfs_reformat_feed.sas.
        sas1_sas = os.path.join(MHN.prog_dir, '{0}.sas'.format(sas1_name))
        sas1_output = os.path.join(MHN.temp_dir, 'bus_{0}_runs_{1}.csv'.format(which_bus, tod))
        sas1_args = [MHN.prog_dir, bus_route_csv, bus_itin_csv, oneline_itin_txt, feed_groups_txt, sas1_output, tod]
        MHN.delete_if_exists(sas1_output)
Exemplo n.º 3
0
)
arcpy.MakeFeatureLayer_management(temp_arcs, bad_arcs_lyr, bad_arcs_query)
bad_arcs_count = int(arcpy.GetCount_management(bad_arcs_lyr).getOutput(0))
if bad_arcs_count > 0:
    arcpy.CopyFeatures_management(bad_arcs_lyr, bad_arcs_shp)
    MHN.die('Some arcs are missing required attributes. Check {0} for specific arcs.'.format(bad_arcs_shp))
    raise arcpy.ExecuteError
else:
    arcpy.Delete_management(bad_arcs_lyr)
    arcpy.AddMessage('-- All arcs have all required attributes')


# -----------------------------------------------------------------------------
#  Copy node attributes to memory, for fast access.
# -----------------------------------------------------------------------------
current_nodes_dict = MHN.make_attribute_dict(MHN.node, 'NODE', ['POINT_X','POINT_Y'])


# -----------------------------------------------------------------------------
#  Generate nodes from arcs, to check for changes and errors.
# -----------------------------------------------------------------------------
# Generate ANODES, including a copy with no BNODE field.
anodes = os.path.join(MHN.mem, 'anodes')
anodes_copy = os.path.join(MHN.mem, 'anodes_copy')
arcpy.FeatureVerticesToPoints_management(temp_arcs, anodes, 'START')
arcpy.CopyFeatures_management(anodes, anodes_copy)
arcpy.DeleteField_management(anodes_copy, ['BNODE'])

# Generate BNODES, including a copy with no ANODE field.
bnodes = os.path.join(MHN.mem, 'bnodes')
bnodes_copy = os.path.join(MHN.mem, 'bnodes_copy')
    MHN.die(
        'The following highway projects have no completion year: {0}'.format(
            ', '.join(invalid_hwyproj)))

# -----------------------------------------------------------------------------
#  Export highway project coding info to determine future arc availability.
# -----------------------------------------------------------------------------
hwyproj_id_field = MHN.route_systems[MHN.hwyproj][1]

# Export projects with valid completion years.
year_attr = (hwyproj_id_field, 'COMPLETION_YEAR')
year_query = '{0} <= {1}'.format("COMPLETION_YEAR", MHN.max_year)
year_view = MHN.make_skinny_table_view(MHN.hwyproj, 'year_view', year_attr,
                                       year_query)
MHN.write_attribute_csv(year_view, year_csv, year_attr)
projects = MHN.make_attribute_dict(year_view, hwyproj_id_field, attr_list=[])
arcpy.Delete_management(year_view)

# Export coding for valid projects.
transact_attr = (hwyproj_id_field, 'ABB', 'ACTION_CODE', 'NEW_DIRECTIONS')
transact_query = ''' "{0}" IN ('{1}') '''.format(
    hwyproj_id_field, "','".join((hwyproj_id for hwyproj_id in projects)))
transact_view = MHN.make_skinny_table_view(MHN.route_systems[MHN.hwyproj][0],
                                           'transact_view', transact_attr,
                                           transact_query)
MHN.write_attribute_csv(transact_view, transact_csv, transact_attr)
project_arcs = MHN.make_attribute_dict(transact_view, 'ABB', attr_list=[])
arcpy.Delete_management(transact_view)

# Export base year arc attributes.
network_attr = ('ANODE', 'BNODE', 'BASELINK', 'ABB', 'DIRECTIONS', 'TYPE1',
invalid_hwyproj = MHN.get_yearless_hwyproj()
if invalid_hwyproj:
    MHN.die("The following highway projects have no completion year: {0}".format(", ".join(invalid_hwyproj)))


# -----------------------------------------------------------------------------
#  Export highway project coding info to determine future arc availability.
# -----------------------------------------------------------------------------
hwyproj_id_field = MHN.route_systems[MHN.hwyproj][1]

# Export projects with valid completion years.
year_attr = (hwyproj_id_field, "COMPLETION_YEAR")
year_query = "{0} <= {1}".format("COMPLETION_YEAR", MHN.max_year)
year_view = MHN.make_skinny_table_view(MHN.hwyproj, "year_view", year_attr, year_query)
MHN.write_attribute_csv(year_view, year_csv, year_attr)
projects = MHN.make_attribute_dict(year_view, hwyproj_id_field, attr_list=[])
arcpy.Delete_management(year_view)

# Export coding for valid projects.
transact_attr = (hwyproj_id_field, "ABB", "ACTION_CODE", "NEW_DIRECTIONS")
transact_query = """ "{0}" IN ('{1}') """.format(hwyproj_id_field, "','".join((hwyproj_id for hwyproj_id in projects)))
transact_view = MHN.make_skinny_table_view(
    MHN.route_systems[MHN.hwyproj][0], "transact_view", transact_attr, transact_query
)
MHN.write_attribute_csv(transact_view, transact_csv, transact_attr)
project_arcs = MHN.make_attribute_dict(transact_view, "ABB", attr_list=[])
arcpy.Delete_management(transact_view)

# Export base year arc attributes.
network_attr = (
    "ANODE",
Exemplo n.º 6
0
        elif node > MHN.max_poe and zone == 0:
            zoned_node[1] = 9999
            zoned_node[3] = 11
            zoned_nodes_cursor.updateRow(zoned_node)
        elif node < MHN.min_poe and node != zone:
            arcpy.AddWarning('-- WARNING: Zone {} centroid is in zone {}! Please verify that this is intentional.'.format(node, zone))
        else:
            pass
arcpy.AddMessage('-- Node {}, {}, {} & {} fields recalculated'.format(MHN.zone_attr, MHN.subzone_attr, MHN.capzone_attr, MHN.imarea_attr))

# Calculate arc ANODE and BNODE values.
anodes_id = os.path.join(MHN.mem, 'anodes_id')
bnodes_id = os.path.join(MHN.mem, 'bnodes_id')
arcpy.Identity_analysis(anodes, new_nodes, anodes_id)
arcpy.Identity_analysis(bnodes, new_nodes, bnodes_id)
anodes_id_dict = MHN.make_attribute_dict(anodes_id, 'ORIG_FID', ['NODE'])
bnodes_id_dict = MHN.make_attribute_dict(bnodes_id, 'ORIG_FID', ['NODE'])
with arcpy.da.UpdateCursor(temp_arcs, ['OID@', 'ANODE', 'BNODE']) as arcs_cursor:
    for arc in arcs_cursor:
        OID = arc[0]
        old_a = arc[1]
        old_b = arc[2]
        new_a = anodes_id_dict[OID]['NODE']
        new_b = bnodes_id_dict[OID]['NODE']
        if new_a != old_a or new_b != old_b:
            arc[1] = new_a
            arc[2] = new_b
            arcs_cursor.updateRow(arc)
arcpy.Delete_management(anodes)
arcpy.Delete_management(anodes_id)
arcpy.Delete_management(bnodes)
Exemplo n.º 7
0
arcpy.MakeFeatureLayer_management(temp_arcs, bad_arcs_lyr, bad_arcs_query)
bad_arcs_count = int(arcpy.GetCount_management(bad_arcs_lyr).getOutput(0))
if bad_arcs_count > 0:
    arcpy.CopyFeatures_management(bad_arcs_lyr, bad_arcs_shp)
    MHN.die(
        'Some arcs are missing required attributes. Check {0} for specific arcs.'
        .format(bad_arcs_shp))
    raise arcpy.ExecuteError
else:
    arcpy.Delete_management(bad_arcs_lyr)
    arcpy.AddMessage('-- All arcs have all required attributes')

# -----------------------------------------------------------------------------
#  Copy node attributes to memory, for fast access.
# -----------------------------------------------------------------------------
current_nodes_dict = MHN.make_attribute_dict(MHN.node, 'NODE',
                                             ['POINT_X', 'POINT_Y'])

# -----------------------------------------------------------------------------
#  Generate nodes from arcs, to check for changes and errors.
# -----------------------------------------------------------------------------
# Generate ANODES, including a copy with no BNODE field.
anodes = os.path.join(MHN.mem, 'anodes')
anodes_copy = os.path.join(MHN.mem, 'anodes_copy')
arcpy.FeatureVerticesToPoints_management(temp_arcs, anodes, 'START')
arcpy.CopyFeatures_management(anodes, anodes_copy)
arcpy.DeleteField_management(anodes_copy, ['BNODE'])

# Generate BNODES, including a copy with no ANODE field.
bnodes = os.path.join(MHN.mem, 'bnodes')
bnodes_copy = os.path.join(MHN.mem, 'bnodes_copy')
arcpy.FeatureVerticesToPoints_management(temp_arcs, bnodes, 'END')