python-3.xamazon-web-servicesamazon-s3google-colaboratorylandsat

How to download Landsat 8 images using Amazon S3


I implemented python code from the Automated Bulk Downloads of Landsat-8 Data Products in Python | Geology and Python tutorial.

It works pretty okay, but I want to retrieve data on the basis of date.I even changed some of code and tried but have not succeeded.

bulk_list = []

# Iterate through paths and rows
for path, row in zip(paths, rows):

print('Path:',path, 'Row:', row)

# Filter the Landsat Amazon S3 table for images matching path, row, cloudcover and processing state.
scenes = s3_scenes[(s3_scenes.path == path) & (s3_scenes.row == row) & 
                   (s3_scenes.cloudCover <= 15) & 
                   (s3_scenes.acquisitionDate='2019-04-22')
                   (~s3_scenes.productId.str.contains('_T2')) &
                   (~s3_scenes.productId.str.contains('_RT'))]
print(' Found {} images\n'.format(len(scenes)))

# If any scenes exists, select the one that have the minimum cloudCover.
if len(scenes):
    scene = scenes.sort_values('acquisitionDate').iloc[0]

# Add the selected scene to the bulk download list.
bulk_list.append(scene)

but it throws an error:

File "<ipython-input-37-ec27c752ae7e>", line 11
(s3_scenes.acquisitionDate='2019-04-22')
                              ^
SyntaxError: invalid syntax

I understand there is problem in date format but couldn't resolve.

Please also suggest me some good tutorials to of AWS on Landsat 8 images.

as I print bulk list bulk_list [productId LC08_L1TP_152042_20190422_20190507_01_T1 entityId LC81520422019112LGN00 acquisitionDate 2019-04-22 05:56:08.442691 cloudCover 0 processingLevel L1TP path 152 row 42 min_lat 24.9171 min_lon 66.742 max_lat 27.0339 max_lon 69.0604 download_url https://s3-us-west-2.amazonaws.com/landsat-pds... Name: 1520154, dtype: object]

and even after I used (s3_scenes.acquisitionDate='2019-04-22 05:56:08.442691') result remains same


Solution

  • I think the date format shoud be YYYYMMDD

    for more info see amazon

    or simply use s3_scenes.productId.str.contains('20190422')

    and you forget & at the end of the statement