Ag-Analytics-Harmonised Landsat Sentinel API-Demo


The Harmonized Landsat and Sentinel-2 (HLS) is a NASA initiative to produce a Virtual Constellation (VC) of surface reflectance (SR) data from the Operational Land Imager (OLI) and MultiSpectral Instrument (MSI) onboard the Landsat 8 and Sentinel-2 remote sensing satellites, respectively. The data from these satellites creates unprecedented opportunities for timely and accurate observation of Earth status and dynamics at moderate (<30 m) spatial resolution every 2-3 days.


The Ag-Analytics provides the service which a user can provide a polygon in specific formats in additional with more customized options to retrieve the dynamics of their land at various times for Landsat from 2013 and Sentinel-2 from 2015 calendar years. Additionally, this service also provides information on cloud cover, statistics, Normalized Difference Vegetation Index in addition to MSI bands information.


Experience the usage of this service on Ag-Analytics website using below link https://analytics.ag/FarmScope

In [41]:
import requests
import json
import time
import os
from pandas.io.json import json_normalize
from collections import defaultdict
import pandas as pd
import zipfile, io
from IPython.display import Image

%matplotlib inline
%autosave 0
Autosave disabled

Request Parameters Details:

Request URL: https://ag-analytics.azure-api.net/hls-service/

Parameter Data Type Required? Default Options Description
AOI Geometry, file/text Yes - JSON, GEOJSON, Shapefile, Raster Boundary for area of interest.
Band List Yes - Red, Green, Blue, Coastal Aerosol, NIR, SWIR1, SWIR2, QA, NDVI, RGB, NDWI, NDBI, NDTI, UI, CIR, UE, LW, AP, AGR, FFBS, BE, VW Provide the list of HLS Spectral band names to retrieve for given AOI. See Figures 3-4 on website page for API.
Startdate Date, mm/dd/yyyy No - - • Landsat – data starts from 2013 •Sentinel – data starts from 2015
Enddate Date, mm/dd/yyyy No - - In the absence of startdate or enddate, or both, the service retrieves the latest information available on the land.
byweek Int, boolean No 1 1, 0 If set to 1, result raster will be the mosaic of all the tiles in a particular week for a given satellite
satellite text No Landsat Landsat, Sentinel If set to both Landsat, Sentinel then the result raster will be the mosaic of both satellites for the given dates
showlatest Int, boolean No 1 - If startdate or enddate is not given, shows the latest available tile.
filter Int, boolean No 0 0, 1 If set to 1, the resulting image is cloud filtered with no-data where clouds are.
qafilter Int, boolean No 0 0, 1 If set to 1, continues to filter tiles until the invalid pixels are < qacloudperc
qacloudperc float No 100 0-100 If qafilter parameter is 1, then filters the tiles until the invalid pixels in those are < qacloudperc
displaynormalvalues float No 2000 - This parameter is used to normalize the band values for display purposes. Used for bands like RGB, AGR, etc.
legendtype text No Relative Relative, Absolute Legend type of display ranges of resulting response.
resolution float No 0.0001 - Cellsize in meters.
flatten_data Int, boolean No 0 0, 1 Flatten data which has a list of Xcoord, Ycoord and Values for each band in the output. If 1, flatten_data is returned.
statistics Int, boolean No 1 0, 1 Returns statistical features of the output .tif file.
return_tif int No 1 0, 1 Returns the downloadable link to output raster. If 0, link will not be returned.
projection text No Projection of AOI Given See Figure 5. Enter the desired projection for the result raster. See Figure 5 for details.

Request Parameters

In [58]:
values={"aoi": '{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-92.329005, 41.6850758], [-92.3290479, 41.681366], [-92.3240805, 41.6813179], [-92.3255289, 41.6841784], [-92.329005, 41.6850758]]]}}',
"Band": "['NDVI']",
"Enddate": "3/8/2019",
"Startdate": "3/2/2019",
"legendtype": "Relative",
"qafilter": "1",
"satellite": "Landsat,Sentinel",
"resolution":"0.00001"}
    
headers={'Content-Type':'application/x-www-form-urlencoded'}
           

API Function

In [59]:
def harmonisedlandsatdata(values,headers):
    try:
        url = 'https://ag-analytics.azure-api.net/hls-service/'
     
        response = requests.post(url, data=values,headers=headers).json()
        
        print(response)

        return response
    
    except Exception as e:
        print(e)
        raise e

Calling API Function and Displaying Response

In [60]:
hlsresponse=harmonisedlandsatdata(values,headers)
[{'tiledate': '12/03/2018-12/09/2018', 'band': 'NDVI', 'download_url': 'downloads/raster_bandNDVI_date2018337-2018343_20200309_194756_7821.tif', 'features': [{'attributes': {'OID': 0, 'Extent': '-92.32904454981215, 41.68132515274015, -92.32408454981216, 41.68507515274015', 'Mean': 0.18745804878679692, 'Max': 0.22015209125475285, 'Min': 0.17308613154023203, 'Std': 0.007226297595028316, 'Percentile5': 0.1769952628087829, 'Percentile95': 0.20119802089297484, 'pngb64': 'data:image/png;base64, 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', 'Legend': [{'color': '#ff0000', 'Min': 0.17308613154023203, 'Max': 0.18093045815931882, 'Mean': 0.17700829484977543, 'Area': '15.59 %', 'Count': 19872, 'CountAllPixels': 127477}, {'color': '#ff6666', 'Min': 0.18093045815931882, 'Max': 0.18877478477840565, 'Mean': 0.18485262146886222, 'Area': '48.16 %', 'Count': 61395, 'CountAllPixels': 127477}, {'color': '#ffff66', 'Min': 0.18877478477840565, 'Max': 0.19661911139749244, 'Mean': 0.19269694808794904, 'Area': '25.52 %', 'Count': 32535, 'CountAllPixels': 127477}, {'color': '#ffff00', 'Min': 0.19661911139749244, 'Max': 0.20446343801657924, 'Mean': 0.20054127470703584, 'Area': '7.74 %', 'Count': 9862, 'CountAllPixels': 127477}, {'color': '#66ff66', 'Min': 0.20446343801657924, 'Max': 0.21230776463566603, 'Mean': 0.20838560132612263, 'Area': '2.57 %', 'Count': 3275, 'CountAllPixels': 127477}, {'color': '#00ff00', 'Min': 0.21230776463566603, 'Max': 0.22015209125475285, 'Mean': 0.21622992794520945, 'Area': '0.42 %', 'Count': 538, 'CountAllPixels': 127477}], 'CoordinateSystem': 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]', 'CellSize': [9.999999999993885e-06, -9.999999999990905e-06], 'Matrix': [375, 496]}}], 'Xcoordinates': '', 'Ycoordinates': '', 'Values': '', 'error': '', 'nodata_raster': False, 'dayoftiles': '2018337-2018343', 'week': '49'}]

Displaying Output Image

In [56]:
for resp in hlsresponse:
    if resp["band"]=="NDVI" and resp["download_url"]!="":
        
        print("Legend Values : ",resp["features"][0]['attributes']['Legend'])
        
        img_uri=resp["features"][0]['attributes']["pngb64"]
        
        Image(url=img_uri)

        
        

Image(url=img_uri)        
        
Legend Values :  [{'color': '#ff0000', 'Min': 0.17308613154023203, 'Max': 0.18093045815931882, 'Mean': 0.17700829484977543, 'Area': '15.59 %', 'Count': 19872, 'CountAllPixels': 127477}, {'color': '#ff6666', 'Min': 0.18093045815931882, 'Max': 0.18877478477840565, 'Mean': 0.18485262146886222, 'Area': '48.16 %', 'Count': 61395, 'CountAllPixels': 127477}, {'color': '#ffff66', 'Min': 0.18877478477840565, 'Max': 0.19661911139749244, 'Mean': 0.19269694808794904, 'Area': '25.52 %', 'Count': 32535, 'CountAllPixels': 127477}, {'color': '#ffff00', 'Min': 0.19661911139749244, 'Max': 0.20446343801657924, 'Mean': 0.20054127470703584, 'Area': '7.74 %', 'Count': 9862, 'CountAllPixels': 127477}, {'color': '#66ff66', 'Min': 0.20446343801657924, 'Max': 0.21230776463566603, 'Mean': 0.20838560132612263, 'Area': '2.57 %', 'Count': 3275, 'CountAllPixels': 127477}, {'color': '#00ff00', 'Min': 0.21230776463566603, 'Max': 0.22015209125475285, 'Mean': 0.21622992794520945, 'Area': '0.42 %', 'Count': 538, 'CountAllPixels': 127477}]
Out[56]:

GET Request

GET request for downloading the HLS images returned in the POST request.

In [46]:
# User specified local path where file will be downloaded.
local_path = r"C:\<Path to download directory>" # E.g., r"C:\Users\John_Doe\Documents\rasters"
In [47]:
def HLS_get(local_path):
    try:
        url = "https://ag-analytics.azure-api.net/hls-service/"
    
        for resp in hlsresponse:
            file_url = resp['download_url']
            file_name = file_url.split('/')[-1]
            download_path = os.path.join(local_path, file_name)
            
            values = {'filename': file_name}
     
            response = requests.get(url, params=values)
            open(download_path, 'wb').write(response.content)
        
            print(response.url)

        return response
    
    except Exception as e:
        print(e)
        raise e
In [48]:
HLS_get(local_path)
https://ag-analytics.azure-api.net/hls-service/?filename=raster_bandNDVI_date2018351-2018357_20200309_194409_8306.tif
Out[48]:
<Response [200]>
In [ ]: