Skip to content

Commit

Permalink
Corridor segments are added to the segments provided by the segmentation
Browse files Browse the repository at this point in the history
service
  • Loading branch information
jbueno committed Sep 15, 2022
1 parent 83f461a commit b54ddb2
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 7 deletions.
51 changes: 51 additions & 0 deletions plugins/usepe_plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,11 @@ def __init__( self ):

self.segments = pd.read_json( 'usepe/segmentation_service/data/examples/' + self.region + '.json', orient="records", lines=True )

if not usepeconfig.getboolean( 'BlueSky', 'D2C2' ):
self.referenceSegments()
else:
self.addCorridorSegments()

usepegraph.graph, self.segments = dynamicSegments( usepegraph.graph, usepeconfig, self.segments, deleted_segments=None )

self.wpt_dict = {}
Expand All @@ -231,6 +236,48 @@ def __init__( self ):

self.printRedSegments()

def referenceSegments( self ):
ref_speed = 20
ref_capacity = 999
reference_segments = self.segments.copy()
reference_segments['class'] = reference_segments['class'].apply( lambda x: x if x == 'black' else 'white' )
reference_segments['speed_max'] = reference_segments['class'].apply( lambda x: 0 if x == 'black' else ref_speed )
reference_segments['capacity'] = reference_segments['class'].apply( lambda x: 0 if x == 'black' else ref_capacity )

self.segments = reference_segments

def addCorridorSegments( self ):
# active_corridors = [1, 2, 3, 4]
active_corridors = usepeconfig['Corridors']['corridors'].split( ' ' )

for cor in active_corridors:
name1 = 'COR{}'.format( str( cor ) )
name2 = 'COR{}r'.format( str( cor ) )

class_ = 'COR'
lat_min = 0
lat_max = 0
lon_min = 0
lon_max = 0
z_min = 0
z_max = 0
speed_min = 0
speed_max = int( usepeconfig['Corridors']['speed'] )
capacity = 99
occupancy = 0
geovect = 'NSEW'
parent = None
new = False
updated = False

if name1 not in self.segments.index:
self.segments.loc[name1] = [class_, lat_min, lat_max, lon_min, lon_max, z_min, z_max, speed_min,
speed_max, capacity, occupancy, geovect, parent, new, updated]
if name2 not in self.segments.index:
self.segments.loc[name2] = [class_, lat_min, lat_max, lon_min, lon_max, z_min, z_max, speed_min,
speed_max, capacity, occupancy, geovect, parent, new, updated]


def create( self, n=1 ):
super().create( n )

Expand Down Expand Up @@ -343,6 +390,8 @@ def dynamicSegments( self ):
updated = True
self.segmentation_service.export_cells() # export .json file to "./data/examples"
self.segments = pd.read_json( 'usepe/segmentation_service/data/examples/' + self.region + '.json', orient="records", lines=True )

self.addCorridorSegments()
print( 'Segments update completed.' )

# The event rule is continuous
Expand All @@ -353,6 +402,8 @@ def dynamicSegments( self ):
self.segmentation_service.export_cells() # export .json file to "./data/examples"
self.segments = pd.read_json( 'usepe/segmentation_service/data/examples/' + self.region + '.json', orient="records", lines=True )

self.addCorridorSegments()

segments = self.segments

return updated, segments
Expand Down
2 changes: 1 addition & 1 deletion settings.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ asas_marv = 1.05
#=============================================================================

# Radarscreen font size in pixels
text_size = 6
text_size = 10

# Radarscreen airport symbol size in pixels
apt_size = 10
Expand Down
16 changes: 12 additions & 4 deletions usepe/city_model/dynamic_segments.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,15 @@ def assignSegmet2Edge( G, segments_df, deleted_segments ):
# We select the nodes belonging to the new segments
nodes_affected = selectNodesWithNewSegments( G, segments_df, deleted_segments )
for node in nodes_affected:
if node[0:2] == 'COR':
if node[0:3] == 'COR':
# corridors do not depend on this segmentation
segment_name = node.split( '_' )[0]
G.nodes[node]['segment'] = segment_name
connected_edges = list( G.neighbors( node ) )
for edge in connected_edges:
# If the origin node of an edge belongs to the segment, then the edge belongs to the
# segment.
G.edges[node, edge, 0 ]['segment'] = segment_name
continue

node_lon = G.nodes[node]['x']
Expand Down Expand Up @@ -352,14 +359,15 @@ def dynamicSegments( G, config, segments=None, deleted_segments=None ):
# these segments
new_segments = segments_df[segments_df['new'] == True ]

deleted_segments = segments_df[segments_df['new'] != True ]
not_new_segments = segments_df[segments_df['new'] != True ]

# Assign segments
G = assignSegmet2Edge( G, new_segments, deleted_segments )
G = assignSegmet2Edge( G, new_segments, not_new_segments )

# We select only the updated segments. The speed update of segments is performed only in
# these segments
updated_segments = segments_df[( segments_df['updated'] == True ) | ( segments_df['new'] == True ) ]
updated_segments = segments_df[( segments_df['updated'] == True ) | ( segments_df['new'] == True ) | (
segments_df.index.astype( str ).str.contains( 'COR' ) ) ]

# Update segment velocity
G = updateSegmentVelocity( G, updated_segments )
Expand Down
4 changes: 2 additions & 2 deletions usepe/city_model/scenario_definition.py
Original file line number Diff line number Diff line change
Expand Up @@ -951,10 +951,10 @@ def createDeliveryFlightPlan( route1, route2, ac, departure_time, G, layers_dict
departure_time, ac['id'], state['ref_wpt'], ac['id'], layers_dict[route1[-1][0]] * m2ft,
ac['id'] )
new_line1 = '{0} > {1} AT {2} DO {3} ATALT {6}, DELAY {4} DEL {5}'.format(
departure_time, ac['id'], route1[-1], ac['id'], str( hovering_time ), ac['id'],
departure_time, ac['id'], state['ref_wpt'], ac['id'], str( hovering_time ), ac['id'],
layers_dict[route1[-1][0]] * m2ft )
new_line2 = '{0} > {1} AT {2} DO {3} ATALT {6}, DELAY {4} PCALL {5} REL'.format(
departure_time, ac['id'], route1[-1], ac['id'], str( hovering_time + 3 ), return_path,
departure_time, ac['id'], state['ref_wpt'], ac['id'], str( hovering_time + 3 ), return_path,
layers_dict[route1[-1][0]] * m2ft )

scenario_file.write( new_line0 + '\n' + new_line1 + '\n' + new_line2 + '\n' )
Expand Down

0 comments on commit b54ddb2

Please sign in to comment.