In [38]:
%matplotlib inline
import os
from pprint import pprint
import numpy as np
import pandas as pd
from planet import api
import matplotlib.pyplot as plt
In [23]:
client = api.Client()
In [24]:
mosaics = client.list_mosaics().get()
In [25]:
[m['name'] for m in mosaics['mosaics']]
Out[25]:
In [26]:
mosaic = client.get_mosaic('open_california_re_20150601_20150831')
mosaic.get()
Out[26]:
In [27]:
location = {"type":"Point","coordinates":[-123.79394531249999,39.291797043774864]}
client.get_mosaic_quads('open_california_re_20150601_20150831',
intersects=location).get()
Out[27]:
In [41]:
points = np.load('/Users/ajmendez/tmp/world/coast_points.np.npy')
downloaded = []
In [46]:
mosaic_name = 'open_california_re_20150601_20150831'
outdir = '/Users/ajmendez/tmp/world/planet/{}'.format(mosaic_name)
if not os.path.exists(outdir):
os.makedirs(outdir)
callback = api.write_to_file(outdir)
for point in points:
location = {"type":"Point","coordinates":list(point)}
quad = client.get_mosaic_quads(mosaic_name, intersects=location).get()
for q in quad['features']:
qid = q['id']
if qid in downloaded:
continue
downloaded.append(qid)
bodies = client.fetch_mosaic_quad_geotiffs(mosaic_name, [qid], callback=callback)
for i,b in enumerate(bodies):
b.await()
print i, qid
break
In [ ]:
p
In [70]:
outlines = {}
for i,point in enumerate(points):
location = {"type":"Point","coordinates":list(point)}
quad = client.get_mosaic_quads(mosaic_name, intersects=location).get()
for q in quad['features']:
qid = q['id']
if qid in outlines:
continue
outlines[qid] = (q['geometry']['coordinates'][0])
break
# if len(outlines) > 2:
# break
In [ ]:
def chunks(l, n):
"""Yield successive n-sized chunks from l."""
for i in range(0, len(l), n):
yield l[i:i+n]
# for i, chunk in enumerate(chunks(points, 600)):
# print i, len(chunk)
In [98]:
for i, chunk in enumerate(chunks(points[::-1], 100)):
location = {"type":"LineString","coordinates":[list(p) for p in chunk]}
quads = client.get_mosaic_quads(mosaic_name, intersects=location).get()
for q in quads['features']:
qid = q['id']
if qid in outlines:
continue
outlines[qid] = (q['geometry']['coordinates'][0])
In [99]:
plt.figure(figsize=(6,9))
plt.xlim(-125, -114)
plt.ylim(32, 42.1)
for key, outline in outlines.iteritems():
x,y = zip(*outline)
plt.plot(x,y)
In [ ]:
for i, oids in enumerate(chunks(outlines.keys(), 10)):
quads = client.fetch_mosaic_quad_geotiffs(mosaic_name, oids, callback=callback)
quads = client.
for q in quads:
q.await()
In [1]:
# outlines
In [ ]:
s