from
bokeh.io
import
show
from
bokeh.tile_providers
import
STAMEN_TERRAIN, STAMEN_TONER
from
bokeh.plotting
import
figure
from
pyproj
import
Proj, transform
import
pandas as pd
df
=
pd.read_csv(
"./Airports2.csv"
)
df
=
df[
1
:
1000
]
inProj
=
Proj(init
=
'epsg:3857'
)
outProj
=
Proj(init
=
'epsg:4326'
)
cols
=
[
'Dest_airport_long'
,
'Dest_airport_lat'
,
'Org_airport_long'
,
'Org_airport_lat'
]
lines_x, lines_y
=
[], []
lons, lats
=
[], []
for
lon_dest, lat_dest, lon_orig, lat_orig
in
df[cols].values:
lon_orig, lat_orig
=
transform(outProj, inProj, lon_orig, lat_orig)
lon_dest, lat_dest
=
transform(outProj, inProj, lon_dest, lat_dest)
lons.append(lon_dest)
lats.append(lat_dest)
lines_x.append([lon_orig, lon_dest])
lines_y.append([lat_orig, lat_dest])
df[
"MercatorX"
]
=
lons
df[
"MercatorY"
]
=
lats
stamen_toner
=
get_provider(STAMEN_TONER)
lon1, lat1
=
transform(outProj, inProj,
-
150
,
-
75
)
lon2, lat2
=
transform(outProj, inProj,
140
,
75
)
m
=
figure(plot_width
=
800
, plot_height
=
700
,
x_range
=
(lon1, lon2), y_range
=
(lat1, lat2),
x_axis_type
=
"mercator"
, y_axis_type
=
"mercator"
,
tooltips
=
[(
"Origin_city"
,
"@Origin_city"
),
(
"Destination_city"
,
"@Destination_city"
)],
title
=
"Flight Travels in America"
)
m.add_tile(stamen_toner)
m.multi_line(lines_x, lines_y, color
=
"red"
)
m.circle(x
=
"MercatorX"
, y
=
"MercatorY"
, size
=
2
,
alpha
=
0.8
, color
=
"red"
, source
=
df)
show(m)