eMODIS

This eMODIS API provides a Normalized Difference Vegetation Index (NDVI), which quantifies vegetation by measuring the difference between near-infrared (which vegetation strongly reflects) and red light (which vegetation absorbs).

In [6]:
import requests
import json
import time
from pandas.io.json import json_normalize
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

API Details

Request URL:https://ag-analytics.azure-api.net/eMODIS/[?year][&shape][&filtered][&startYear]

Request parameters

year The year of which you would like to receive data up to. (e.g. – 2018)

shape (ESRI Polygon shape): The shape information for field in esriGeometryPolygon format. See example request below. Standard open source JavaScript front-end libraries (e.g., Leaflet) can be used to structure the shape.

filtered Filter values using modified SG filter.

startYear The year you would like the historical range to start. (e.g. 2002 -)

In order to get Ocp-Apim-Subscription-Key, please click on this link https://analytics.ag/Session/SignInToAPIPayment

Request Parameters

In [7]:
year=2019
shape={"rings":[[[-91.42396,38.285882],[-91.424146,38.285908],[-91.424585,38.285883],[-91.424669,38.285878],[-91.424981,38.2857],[-91.425093,38.285636],[-91.425162,38.285572],[-91.425365,38.285384],[-91.425408,38.285312],[-91.425564,38.285048],[-91.425676,38.284729],[-91.425753,38.284391],[-91.425933,38.284091],[-91.426397,38.283576],[-91.426753,38.283242],[-91.42733,38.282874],[-91.427799,38.28267],[-91.428179,38.282556],[-91.428529,38.282496],[-91.428971,38.282456],[-91.429343,38.282461],[-91.429609,38.282529],[-91.430162,38.282738],[-91.431095,38.283107],[-91.431361,38.283148],[-91.431722,38.283107],[-91.432515,38.282696],[-91.433079,38.282402],[-91.433506,38.281959],[-91.433796,38.28145],[-91.433935,38.280939],[-91.434023,38.28062],[-91.434217,38.280247],[-91.434515,38.279884],[-91.435083,38.279398],[-91.435737,38.278775],[-91.435842,38.278675],[-91.436245,38.278296],[-91.436674,38.278036],[-91.436825,38.277933],[-91.436832,38.278407],[-91.437145,38.278468],[-91.437252,38.278341],[-91.437768,38.278302],[-91.437892,38.284998],[-91.437906,38.285771],[-91.437906,38.285773],[-91.433113,38.285862],[-91.423955,38.28603],[-91.423961,38.286021],[-91.42396,38.285882]],[[-91.436093,38.278766],[-91.43616,38.278913],[-91.43631,38.278942],[-91.436473,38.278917],[-91.436465,38.278761],[-91.436374,38.278687],[-91.436166,38.278647],[-91.436093,38.278766]]],"spatialReference":{"wkid":4326}}
filtered=True
startyear=2002
headers={'Ocp-Apim-Subscription-Key': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}
           

API Function

In [8]:
def get_NDVI(year,shape,filtered,startyear,headers):
    try:
        url = "https://ag-analytics.azure-api.net/eMODIS/?year={}&shape={}&filtered={}&startYear={}".format(year,shape,filtered,startyear)
        response = (requests.get(url,headers=headers).text)

        
        
        response_json = json.loads(response)
        
        print(response_json)
        

        time.sleep(0.5)
        return response_json
    
    except Exception as e:
        raise e

Calling API Function and print output

In [9]:
ndvidata=get_NDVI(year,shape,filtered,startyear,headers)
[{'CurNDVI': [{'NDVI Value': 4017.97747129826, 'Week': 1}, {'NDVI Value': 3614.87551980224, 'Week': 2}, {'NDVI Value': 3193.50196191025, 'Week': 3}, {'NDVI Value': 2847.46007316502, 'Week': 4}, {'NDVI Value': 2662.69455238688, 'Week': 5}, {'NDVI Value': 2621.87097705604, 'Week': 6}, {'NDVI Value': 2813.58810059798, 'Week': 7}, {'NDVI Value': 3176.84356025482, 'Week': 8}, {'NDVI Value': 3603.10396641094, 'Week': 9}, {'NDVI Value': 4037.48416595199, 'Week': 10}, {'NDVI Value': 4425.09900576362, 'Week': 11}, {'NDVI Value': 4711.06333273149, 'Week': 12}]}, {'AveNDVI': [{'NDVI Value': 4341.936119717646, 'Week': 1}, {'NDVI Value': 4114.843487907076, 'Week': 2}, {'NDVI Value': 3938.5288637016956, 'Week': 3}, {'NDVI Value': 3808.9999458726243, 'Week': 4}, {'NDVI Value': 3731.5204558856476, 'Week': 5}, {'NDVI Value': 3728.8679441808963, 'Week': 6}, {'NDVI Value': 3803.897973866361, 'Week': 7}, {'NDVI Value': 3958.523914885678, 'Week': 8}, {'NDVI Value': 4159.395457096689, 'Week': 9}, {'NDVI Value': 4411.453676128342, 'Week': 10}, {'NDVI Value': 4705.37326079276, 'Week': 11}, {'NDVI Value': 5042.056357388052, 'Week': 12}, {'NDVI Value': 5450.190571648609, 'Week': 13}, {'NDVI Value': 5862.904283066361, 'Week': 14}, {'NDVI Value': 6270.3525239772525, 'Week': 15}, {'NDVI Value': 6670.28208443528, 'Week': 16}, {'NDVI Value': 7046.067986682804, 'Week': 17}, {'NDVI Value': 7367.9032705406735, 'Week': 18}, {'NDVI Value': 7618.394868338504, 'Week': 19}, {'NDVI Value': 7799.11245479096, 'Week': 20}, {'NDVI Value': 7906.9250398691465, 'Week': 21}, {'NDVI Value': 7952.311437484153, 'Week': 22}, {'NDVI Value': 7962.849509461701, 'Week': 23}, {'NDVI Value': 7938.451601650267, 'Week': 24}, {'NDVI Value': 7884.635713422165, 'Week': 25}, {'NDVI Value': 7821.752309564762, 'Week': 26}, {'NDVI Value': 7768.42689409892, 'Week': 27}, {'NDVI Value': 7638.687868159732, 'Week': 28}, {'NDVI Value': 7532.750811772843, 'Week': 29}, {'NDVI Value': 7450.754808123467, 'Week': 30}, {'NDVI Value': 7491.019954940423, 'Week': 31}, {'NDVI Value': 7355.365811323417, 'Week': 32}, {'NDVI Value': 7382.650883774727, 'Week': 33}, {'NDVI Value': 7451.7132306369385, 'Week': 34}, {'NDVI Value': 7539.841543263134, 'Week': 35}, {'NDVI Value': 7625.370235058307, 'Week': 36}, {'NDVI Value': 7689.088107503085, 'Week': 37}, {'NDVI Value': 7703.001657714648, 'Week': 38}, {'NDVI Value': 7653.341354288034, 'Week': 39}, {'NDVI Value': 7537.768074960112, 'Week': 40}, {'NDVI Value': 7357.138113232642, 'Week': 41}, {'NDVI Value': 7110.1868259209505, 'Week': 42}, {'NDVI Value': 6820.51942444537, 'Week': 43}, {'NDVI Value': 6524.506363370118, 'Week': 44}, {'NDVI Value': 6222.682257371009, 'Week': 45}, {'NDVI Value': 5929.338880909852, 'Week': 46}, {'NDVI Value': 5657.247096263972, 'Week': 47}, {'NDVI Value': 5414.1680144870115, 'Week': 48}, {'NDVI Value': 5187.490952459275, 'Week': 49}, {'NDVI Value': 4983.395620526804, 'Week': 50}, {'NDVI Value': 4778.154468910642, 'Week': 51}, {'NDVI Value': 4517.58381850387, 'Week': 52}, {'NDVI Value': 4390.593993032612, 'Week': 53}]}, {'MinNDVI': [{'Week': 1, 'NDVI Value': 3271.180486018626}, {'Week': 2, 'NDVI Value': 3066.2798355850064}, {'Week': 3, 'NDVI Value': 2934.036649938896}, {'Week': 4, 'NDVI Value': 2824.350096235904}, {'Week': 5, 'NDVI Value': 2834.799863599922}, {'Week': 6, 'NDVI Value': 2978.728823822338}, {'Week': 7, 'NDVI Value': 3070.2179360058317}, {'Week': 8, 'NDVI Value': 3296.968402955782}, {'Week': 9, 'NDVI Value': 3551.2038417222957}, {'Week': 10, 'NDVI Value': 3801.201925412094}, {'Week': 11, 'NDVI Value': 3797.549276133952}, {'Week': 12, 'NDVI Value': 4002.866913857044}, {'Week': 13, 'NDVI Value': 4487.74745523915}, {'Week': 14, 'NDVI Value': 5079.92462992226}, {'Week': 15, 'NDVI Value': 5508.700281403045}, {'Week': 16, 'NDVI Value': 5724.5363680197}, {'Week': 17, 'NDVI Value': 6169.435057624385}, {'Week': 18, 'NDVI Value': 6600.50413302574}, {'Week': 19, 'NDVI Value': 6937.8045285105945}, {'Week': 20, 'NDVI Value': 7330.917339377254}, {'Week': 21, 'NDVI Value': 7601.64794062396}, {'Week': 22, 'NDVI Value': 7604.6948247183045}, {'Week': 23, 'NDVI Value': 7696.015584748206}, {'Week': 24, 'NDVI Value': 7588.487745491555}, {'Week': 25, 'NDVI Value': 7372.700055947889}, {'Week': 26, 'NDVI Value': 7205.62384007528}, {'Week': 27, 'NDVI Value': 7171.859193415112}, {'Week': 28, 'NDVI Value': 6921.396640835146}, {'Week': 29, 'NDVI Value': 6525.2340084912685}, {'Week': 30, 'NDVI Value': 6272.950893558309}, {'Week': 31, 'NDVI Value': 6640.505222449129}, {'Week': 32, 'NDVI Value': 6170.187882500662}, {'Week': 33, 'NDVI Value': 6392.269621149819}, {'Week': 34, 'NDVI Value': 6638.128122065656}, {'Week': 35, 'NDVI Value': 6911.375049257405}, {'Week': 36, 'NDVI Value': 6973.7228419316425}, {'Week': 37, 'NDVI Value': 7142.181374780518}, {'Week': 38, 'NDVI Value': 7342.926457922336}, {'Week': 39, 'NDVI Value': 7241.478497514644}, {'Week': 40, 'NDVI Value': 7078.169588277526}, {'Week': 41, 'NDVI Value': 6778.660349998222}, {'Week': 42, 'NDVI Value': 6479.765277141025}, {'Week': 43, 'NDVI Value': 6097.293342751528}, {'Week': 44, 'NDVI Value': 5775.028143679382}, {'Week': 45, 'NDVI Value': 5491.266250547278}, {'Week': 46, 'NDVI Value': 5270.414164980486}, {'Week': 47, 'NDVI Value': 4973.231255372574}, {'Week': 48, 'NDVI Value': 4780.407558465632}, {'Week': 49, 'NDVI Value': 4618.53598442143}, {'Week': 50, 'NDVI Value': 4503.72933411852}, {'Week': 51, 'NDVI Value': 4134.703551371402}, {'Week': 52, 'NDVI Value': 3593.05689401916}, {'Week': 53, 'NDVI Value': 3663.91266697778}]}, {'MaxNDVI': [{'Week': 1, 'NDVI Value': 5336.139158932699}, {'Week': 2, 'NDVI Value': 5024.152426577266}, {'Week': 3, 'NDVI Value': 4809.949316524358}, {'Week': 4, 'NDVI Value': 4638.361833056034}, {'Week': 5, 'NDVI Value': 4496.703759141397}, {'Week': 6, 'NDVI Value': 4472.976418053067}, {'Week': 7, 'NDVI Value': 4465.190907930718}, {'Week': 8, 'NDVI Value': 4617.109361730036}, {'Week': 9, 'NDVI Value': 4803.0905847155445}, {'Week': 10, 'NDVI Value': 5092.47902019874}, {'Week': 11, 'NDVI Value': 5494.029438199982}, {'Week': 12, 'NDVI Value': 5890.973611025458}, {'Week': 13, 'NDVI Value': 6278.1638309295995}, {'Week': 14, 'NDVI Value': 6628.40975899747}, {'Week': 15, 'NDVI Value': 7125.137333530305}, {'Week': 16, 'NDVI Value': 7540.70648601319}, {'Week': 17, 'NDVI Value': 7871.79126244711}, {'Week': 18, 'NDVI Value': 8099.089996426835}, {'Week': 19, 'NDVI Value': 8235.20971687966}, {'Week': 20, 'NDVI Value': 8210.596097913985}, {'Week': 21, 'NDVI Value': 8232.713494115445}, {'Week': 22, 'NDVI Value': 8230.61667704988}, {'Week': 23, 'NDVI Value': 8297.969416854816}, {'Week': 24, 'NDVI Value': 8301.948393208444}, {'Week': 25, 'NDVI Value': 8260.262118157989}, {'Week': 26, 'NDVI Value': 8241.524421310485}, {'Week': 27, 'NDVI Value': 8237.610695641533}, {'Week': 28, 'NDVI Value': 8183.1863623712725}, {'Week': 29, 'NDVI Value': 8146.861350399394}, {'Week': 30, 'NDVI Value': 8081.061578896308}, {'Week': 31, 'NDVI Value': 8037.279435200898}, {'Week': 32, 'NDVI Value': 8131.6675550693035}, {'Week': 33, 'NDVI Value': 8160.393414364317}, {'Week': 34, 'NDVI Value': 8123.375427337762}, {'Week': 35, 'NDVI Value': 8081.18112252609}, {'Week': 36, 'NDVI Value': 8049.227080488385}, {'Week': 37, 'NDVI Value': 8059.697398070968}, {'Week': 38, 'NDVI Value': 8094.7962626011085}, {'Week': 39, 'NDVI Value': 8069.253684013358}, {'Week': 40, 'NDVI Value': 7978.798496966801}, {'Week': 41, 'NDVI Value': 7875.601235490685}, {'Week': 42, 'NDVI Value': 7725.4564809727}, {'Week': 43, 'NDVI Value': 7494.557967370174}, {'Week': 44, 'NDVI Value': 7314.719374419328}, {'Week': 45, 'NDVI Value': 7108.1388882446245}, {'Week': 46, 'NDVI Value': 6792.225777065422}, {'Week': 47, 'NDVI Value': 6521.776823100134}, {'Week': 48, 'NDVI Value': 6342.594943457994}, {'Week': 49, 'NDVI Value': 6144.906534486134}, {'Week': 50, 'NDVI Value': 5885.753488342816}, {'Week': 51, 'NDVI Value': 5549.316822223263}, {'Week': 52, 'NDVI Value': 5107.587927751525}, {'Week': 53, 'NDVI Value': 4938.77894510775}]}]

Displaying Output

In [10]:
res=pd.DataFrame()

for i,j in enumerate(ndvidata):
    
    for index in ndvidata[i].keys():
            
        
        df = pd.DataFrame.from_records(j[index])
        df.rename(columns={'NDVI Value':index},inplace=True)
        if res.empty:
            res=df
        else:
            res=res.merge(df,on="Week",how="outer")
        
res.set_index('Week',inplace=True)
res=res.sort_index()
plt.plot(res)
plt.xlabel("week")
plt.ylabel("NDVI Values")
plt.title("Emodis NDVI")
plt.legend(res.columns)
Out[10]:
<matplotlib.legend.Legend at 0x1ee7eca3da0>
In [ ]: