@@ -180,20 +180,21 @@ def create_map(
180
180
with plt .style .context ("traffic" ):
181
181
182
182
self .fig_map .clear ()
183
- self .ax = self .fig_map .add_subplot (
183
+ self .trajectories .clear ()
184
+ self .ax_map = self .fig_map .add_subplot (
184
185
111 , projection = self .projection
185
186
)
186
- self .ax .add_feature (countries ())
187
+ self .ax_map .add_feature (countries ())
187
188
if projection .__class__ .__name__ .split ("." )[- 1 ] in [
188
189
"Lambert93"
189
190
]:
190
- self .ax .add_feature (rivers ())
191
+ self .ax_map .add_feature (rivers ())
191
192
192
193
self .fig_map .set_tight_layout (True )
193
- self .ax .background_patch .set_visible (False )
194
- self .ax .outline_patch .set_visible (False )
195
- self .ax .format_coord = lambda x , y : ""
196
- self .ax .set_global ()
194
+ self .ax_map .background_patch .set_visible (False )
195
+ self .ax_map .outline_patch .set_visible (False )
196
+ self .ax_map .format_coord = lambda x , y : ""
197
+ self .ax_map .set_global ()
197
198
198
199
self .default_plot ()
199
200
self .canvas_map .draw_idle ()
@@ -205,8 +206,9 @@ def default_plot(self) -> None:
205
206
for elt in value :
206
207
elt .remove ()
207
208
self .trajectories .clear ()
209
+ self .ax_map .set_prop_cycle (None )
208
210
209
- lon_min , lon_max , lat_min , lat_max = self .ax .get_extent (
211
+ lon_min , lon_max , lat_min , lat_max = self .ax_map .get_extent (
210
212
PlateCarree ()
211
213
)
212
214
cur_flights = list (
@@ -223,7 +225,7 @@ def params(at):
223
225
return dict (s = 8 , text_kw = dict (s = "" ))
224
226
225
227
for at in cur_flights :
226
- self .trajectories [at .callsign ] += at .plot (self .ax , ** params (at ))
228
+ self .trajectories [at .callsign ] += at .plot (self .ax_map , ** params (at ))
227
229
228
230
self .canvas_map .draw_idle ()
229
231
@@ -238,13 +240,11 @@ def create_timeplot(self) -> None:
238
240
def on_projection_change (self , change : Dict [str , Any ]) -> None :
239
241
with self .output :
240
242
if change ["name" ] == "value" :
241
- self .trajectories .clear ()
242
243
self .create_map (change ["new" ])
243
244
244
245
def on_clear_button (self , elt : Dict [str , Any ]) -> None :
245
246
with self .output :
246
247
self .t_view = self .traffic .sort_values ("timestamp" )
247
- self .trajectories .clear ()
248
248
self .create_map (self .projection )
249
249
self .create_timeplot ()
250
250
@@ -268,20 +268,20 @@ def on_area_click(self, elt: Dict[str, Any]) -> None:
268
268
return
269
269
from ..data import airac
270
270
271
- self .ax .set_extent (airac [elt ["new" ][0 ]])
271
+ self .ax_map .set_extent (airac [elt ["new" ][0 ]])
272
272
self .canvas_map .draw_idle ()
273
273
274
274
def on_extent_button (self , elt : Dict [str , Any ]) -> None :
275
275
with self .output :
276
276
if len (self .area_select .value ) == 0 :
277
277
if len (self .area_input .value ) == 0 :
278
- self .ax .set_global ()
278
+ self .ax_map .set_global ()
279
279
else :
280
- self .ax .set_extent (location (self .area_input .value ))
280
+ self .ax_map .set_extent (location (self .area_input .value ))
281
281
else :
282
282
from ..data import airac
283
283
284
- self .ax .set_extent (airac [self .area_select .value [0 ]])
284
+ self .ax_map .set_extent (airac [self .area_select .value [0 ]])
285
285
286
286
t1 , t2 = self .time_slider .index
287
287
low , up = self .altitude_select .value
@@ -319,32 +319,32 @@ def on_plot_button(self, elt: Dict[str, Any]) -> None:
319
319
if len (self .area_input .value ) == 0 :
320
320
return self .default_plot ()
321
321
location (self .area_input .value ).plot (
322
- self .ax , color = "grey" , linestyle = "dashed"
322
+ self .ax_map , color = "grey" , linestyle = "dashed"
323
323
)
324
324
else :
325
325
from ..data import airac
326
326
327
327
airspace = airac [self .area_select .value [0 ]]
328
328
if airspace is not None :
329
- airspace .plot (self .ax )
329
+ airspace .plot (self .ax_map )
330
330
self .canvas_map .draw_idle ()
331
331
332
332
def on_plot_airport (self , elt : Dict [str , Any ]) -> None :
333
333
with self .output :
334
334
if len (self .area_input .value ) == 0 :
335
335
from cartotools .osm import request , tags
336
336
337
- west , east , south , north = self .ax .get_extent (crs = PlateCarree ())
337
+ west , east , south , north = self .ax_map .get_extent (crs = PlateCarree ())
338
338
if abs (east - west ) > 1 or abs (north - south ) > 1 :
339
339
# that would be a too big request
340
340
return
341
341
request ((west , south , east , north ), ** tags .airport ).plot (
342
- self .ax
342
+ self .ax_map
343
343
)
344
344
else :
345
345
from ..data import airports
346
346
347
- airports [self .area_input .value ].plot (self .ax )
347
+ airports [self .area_input .value ].plot (self .ax_map )
348
348
self .canvas_map .draw_idle ()
349
349
350
350
def on_id_change (self , change : Dict [str , Any ]) -> None :
@@ -364,9 +364,9 @@ def on_id_change(self, change: Dict[str, Any]) -> None:
364
364
f = self .t_view [c ]
365
365
if f is not None :
366
366
try :
367
- self .trajectories [c ] += f .plot (self .ax )
367
+ self .trajectories [c ] += f .plot (self .ax_map )
368
368
self .trajectories [c ] += f .at ().plot (
369
- self .ax , s = 8 , text_kw = dict (s = c )
369
+ self .ax_map , s = 8 , text_kw = dict (s = c )
370
370
)
371
371
except TypeError : # NoneType object is not iterable
372
372
pass
@@ -401,7 +401,7 @@ def on_id_change(self, change: Dict[str, Any]) -> None:
401
401
402
402
def on_filter (self , low , up , t1 , t2 ) -> None :
403
403
with self .output :
404
- west , east , south , north = self .ax .get_extent (crs = PlateCarree ())
404
+ west , east , south , north = self .ax_map .get_extent (crs = PlateCarree ())
405
405
406
406
self .t_view = (
407
407
self .traffic .between (self .dates [t1 ], self .dates [t2 ])
0 commit comments