def search(dataset, node, aoi, start_date, end_date, lng, lat, dist, lower_left, upper_right, where, geojson, extended, api_key): """ Search the database for images that match parameters passed. """ node = get_node(dataset, node) if aoi == "-": src = click.open_file('-') if not src.isatty(): lines = src.readlines() if len(lines) > 0: aoi = json.loads(''.join([line.strip() for line in lines])) bbox = map(get_bbox, aoi.get('features') or [aoi])[0] lower_left = bbox[0:2] upper_right = bbox[2:4] if where: # Query the dataset fields endpoint for queryable fields resp = api.dataset_fields(dataset, node) def format_fieldname(s): return ''.join(c for c in s if c.isalnum()).lower() field_lut = { format_fieldname(field['name']): field['fieldId'] for field in resp['data'] } where = { field_lut[format_fieldname(k)]: v for k, v in where if format_fieldname(k) in field_lut } if lower_left: lower_left = dict(zip(['longitude', 'latitude'], lower_left)) upper_right = dict(zip(['longitude', 'latitude'], upper_right)) result = api.search(dataset, node, lat=lat, lng=lng, distance=dist, ll=lower_left, ur=upper_right, start_date=start_date, end_date=end_date, where=where, extended=extended, api_key=api_key) if geojson: result = to_geojson(result) print(json.dumps(result))
def test_search(): expected_keys = ["totalHits", "firstRecord", "nextRecord", "results", "numberReturned", "lastRecord"] response = api.search("LANDSAT_8_C1", "EE", start_date='20170401', end_date='20170402', max_results=10) assert check_root_keys(response) assert len(response['data']["results"]) == 10 data = response['data'] for key in expected_keys: assert key in data
def create_snapshots(): """ Run requests against USGS API for use in tests. """ api_key = api.login(os.environ['USGS_USERNAME'], os.environ['USGS_PASSWORD']) # Dataset Fields response = api.dataset_fields("LANDSAT_8_C1", "EE", api_key=api_key) write_response(response, 'dataset-fields.json') # Datasets response = api.datasets(None, "EE") write_response(response, 'datasets.json') # Download response = api.download("LANDSAT_8_C1", "EE", ["LC80810712017104LGN00"], product='STANDARD') write_response(response, 'download.json') # Download Options response = api.download_options("LANDSAT_8_C1", "EE", ["LC80810712017104LGN00"]) write_response(response, 'download-options.json') # Metadata response = api.metadata("LANDSAT_8_C1", "EE", ["LC80810712017104LGN00"]) write_response(response, 'metadata.json') # Search response = api.search("LANDSAT_8_C1", "EE", start_date='20170401', end_date='20170402', max_results=10) write_response(response, 'search.json') api.logout(api_key)