In [1]:
import os
import json
import glob
import geoplotlib
from dateutil import parser
from IPython.display import Image
from matplotlib.dates import date2num
from mpl_toolkits.mplot3d import Axes3D
from flock.plot import density
from pysurvey.plot import (setup, icolorbar, text, hist, minmax, dateticks, legend, embiggen)
from IPython.html.widgets import interact, interactive, fixed
In [2]:
hostname=!hostname
host = 'xenon' if hostname[0].startswith('axino') else 'gxenon'
filename = "/Users/ajmendez/data/aviation/trackpoll.log"
In [3]:
%%bash -s "$host" "$filename"
rsync -ravpP $1:/mnt/usb/trackpoll_archive/*.log ~/data/aviation/trackpoll/
#cat ~/data/aviation/trackpoll/* | sort | uniq > $2
wc -l ~/data/aviation/trackpoll/*
In [13]:
num = 0
x,y,z,v = [], [], [],[]
# filenames = ['/Users/ajmendez/data/aviation/trackpoll/trackpoll_1430592237_2015.05.02.log',
# '/Users/ajmendez/data/aviation/trackpoll/trackpoll_1430631601_2015.05.03.log',
# '/Users/ajmendez/data/aviation/trackpoll/trackpoll_1430718001_2015.05.04.log']
# filename = '/Users/ajmendez/data/aviation/trackpoll/trackpoll_1430592237_2015.05.02.log'
# filename = '/Users/ajmendez/data/aviation/trackpoll/trackpoll_1430631601_2015.05.03.log'
filenames = glob.iglob('/Users/ajmendez/data/aviation/trackpoll/*.log')
for filename in filenames:
with open(filename, 'r') as f:
for i, line in enumerate(f.readlines()):
if line.startswith('#'):
continue
try:
data = json.loads(line.split('|')[2])
except Exception as e:
print i,
# print i, e,
continue
for key,item in data.iteritems():
x.append(item['longitude'])
y.append(item['latitude'])
z.append(item['altitude'])
v.append(item['groundspeed'])
num += 1
if (i%10) == 0:
sys.stdout.write('.')
sys.stdout.flush()
print num
filename = 'both.log'
In [14]:
def nicefloat(x):
try:
return float(x)
except:
return -1
In [15]:
x = np.array(map(nicefloat, x))
y = np.array(map(nicefloat, y))
z = np.array(map(nicefloat, z))
v = np.array(map(nicefloat, v))
xr,yr,zr,vr = map(minmax, (x,y,z,v))
In [16]:
setup(figsize=(12,9),
xr=xr, xlabel='longitude',
yr=yr, ylabel='latitude')
pylab.plot(x,y, '.', alpha=0.05)
Out[16]:
In [17]:
setup(figsize=(12,9),
xr=xr, xlabel='longitude',
yr=yr, ylabel='latitude')
ii = np.argsort(z)
sca = pylab.scatter(x[ii], y[ii], c=z[ii], label='altitude',
alpha=0.2, s=3, lw=0, edgecolor=None)
icolorbar(sca, loc=4, borderpad=-3)
pylab.tight_layout()
In [18]:
setup(figsize=(12,9),
xr=xr, xlabel='longitude',
yr=yr, ylabel='latitude')
ii = np.argsort(v)
sca = pylab.scatter(x[ii], y[ii], c=v[ii], label='ground speed',
vmin=0, vmax=500,
alpha=0.2, s=4, lw=0, edgecolor=None)
icolorbar(sca, loc=4, borderpad=-3)
pylab.tight_layout()
In [19]:
setup(figsize=(12,9),
xr=xr, xlabel='longitude',
yr=yr, ylabel='latitude')
ii = np.argsort(-v)
sca = pylab.scatter(x[ii], y[ii], c=v[ii], label='ground speed',
vmin=0, vmax=500,
alpha=0.2, s=4, lw=0, edgecolor=None)
icolorbar(sca, loc=4, borderpad=-3)
pylab.tight_layout()
In [20]:
setup(figsize=(12,6),
xr=xr, xlabel='longitude',
yr=zr, ylabel='altitude')
ii = np.argsort(-v)
sca = pylab.scatter(x[ii], z[ii], c=v[ii], label='ground speed',
vmin=0, vmax=500,
alpha=0.4, s=4, lw=0, edgecolor=None)
icolorbar(sca, loc=4, borderpad=-3)
pylab.tight_layout()
In [21]:
setup(figsize=(12,6),
xr=xr, xlabel='longitude',
yr=zr, ylabel='altitude')
den = density(x, z, nbins=(500,300),
logvrange=True, maskzeros=True, cmap=pylab.cm.jet, colorbar=False)
icolorbar(den, loc=4, borderpad=-3)
pylab.tight_layout()
In [22]:
setup(figsize=(12,9),
xr=xr, xlabel='longitude',
yr=yr, ylabel='latitude')
den = density(x,y, extent=xr+yr, nbins=500,
logvrange=True, maskzeros=True,
# vmin=0, vmax=1,
mesh=True, colorbar=False, cmap=pylab.cm.jet)
icolorbar(den)
Out[22]:
In [23]:
xxr = [-78,-76]
yyr = [38.5, 40.]
setup(figsize=(9,9),
xr=xxr, xlabel='longitude',
yr=yyr, ylabel='latitude')
den = density(x,y, extent=xxr+yyr, nbins=500,
logvrange=True, maskzeros=True,
# vmin=0, vmax=1,
mesh=True, colorbar=False, cmap=pylab.cm.jet)
pylab.plot(-76.62356, 39.33149, 'sr', markersize=10)
pylab.plot(-76.61607, 39.33100, 'sr', markersize=10)
icolorbar(den)
Out[23]:
In [19]:
data = np.zeros(len(x), dtype=[('lat', np.float64),
('lon', np.float64)] )
data['lat']= y
data['lon']= x
In [20]:
xr2 = embiggen(minmax(data['lon']), -0.1)
yr2 = embiggen(minmax(data['lat']), -0.5)
In [21]:
pname = os.path.basename(filename).replace('.log','_lowres.png')
geoplotlib.tiles_provider('darkmatter')
geoplotlib.kde(data, bw=[10,10], cut_below=1e-6, alpha=140, cmap='coolwarm')
geoplotlib.set_bbox(geoplotlib.utils.BoundingBox(yr2[0], xr2[0], yr2[1], xr2[1]))
# geoplotlib.set_bbox(geoplotlib.utils.BoundingBox.DK)
# geoplotlib.show()
geoplotlib.savefig(pname.replace('.png',''))
Image(pname)
Out[21]:
In [22]:
pname = os.path.basename(filename).replace('.log','_highres.png')
geoplotlib.tiles_provider('darkmatter')
geoplotlib.kde(data, bw=[1,1], cut_below=1e-6, alpha=140, cmap='coolwarm')
geoplotlib.set_bbox(geoplotlib.utils.BoundingBox(yr2[0], xr2[0], yr2[1], xr2[1]))
# geoplotlib.set_bbox(geoplotlib.utils.BoundingBox.DK)
# geoplotlib.show()
geoplotlib.savefig(pname.replace('.png',''))
Image(pname)
Out[22]:
In [23]:
xxr = [-78,-76]
yyr = [38.5, 40.]
tmp = np.zeros(2, dtype=[('lat', np.float64),('lon', np.float64)] )
tmp['lon'] = [-76.62356, -76.61607]
tmp['lat'] = [39.33149, 39.33100]
# pylab.plot(-76.62356, 39.33149, 'sr', markersize=10)
# pylab.plot(-76.61607, 39.33100, 'sr', markersize=10)
pname = os.path.basename(filename).replace('.log','_zoom.png')
geoplotlib.tiles_provider('darkmatter')
geoplotlib.kde(data, bw=[2,2], cut_below=1e-6, alpha=120, cmap='coolwarm')
geoplotlib.dot(tmp, color='r', point_size=4)
geoplotlib.set_bbox(geoplotlib.utils.BoundingBox(yyr[1], xxr[0], yyr[0], xxr[1]))
# geoplotlib.set_bbox(geoplotlib.utils.BoundingBox.DK)
# geoplotlib.show()
geoplotlib.savefig(pname.replace('.png',''))
Image(pname)
Out[23]:
In [ ]: