Пример #1
0
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))
Пример #2
0
def test_dataset_fields():

    expected_keys = ["fieldId", "name", "valueList", "fieldLink"]
    response = api.dataset_fields("LANDSAT_8_C1", "EE")

    assert check_root_keys(response)

    for item in response['data']:
        for key in expected_keys:
            assert item.get(key) is not None
Пример #3
0
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)
Пример #4
0
def dataset_fields(dataset, node):
    node = get_node(dataset, node)
    data = api.dataset_fields(dataset, node)
    click.echo(json.dumps(data))