Yield AI V3 - BETA
This API is in BETA. Please contact us to demo this API, or for more information on production scale models.
Yield Forecast
The Ag-Analytics Yield Forecast GET API allows a user to easily "fetch" and download locally a resulting .tif from the Yield Forecast POST API.
The Ag-Analytics® Yield Forecast model uses Artificial Intelligence algorithms to forecast the yield on a given field, based on geospatial data. This provides service by considering various factors like soil, vegetation index, location of the field, planting varieties to forecast the yield for a given field.
Crop yield is a function of a large set of parameters, many of which are outside the control of the farmer. The forces of nature are unpredictable and can make or break a growing season, while chemical applications can be rendered ineffective by new weeds or pests. The current version of the yield model is relatively simple as compared to the number of factors that actually influence yield, however, it still provides insight and predictive power. Current yield model factors are location, crop season, seeding characteristics, planting date, application characteristics, soil characteristics, past growing history, weather data, crop trait information, and past yields.
Sample API Specifications
Please contact us to demo our yield models. See sample API call below.
GET Request
Parameter | Description | Example | Request |
---|---|---|---|
filename | File name to download. From POST request. Only request a single file at a time. |
result_yieldraster_20191212_143557_3357.tif | https://ag-analytics.azure-api.net/yieldforecast/?filename=result_yieldraster_20191212_143557_3357.tif |
Call API
Request
Request URL
Request parameters
-
(optional)
Filename of resulting raster from POST Yield Forecast API.
Request body
Code samples
@ECHO OFF
curl -v -X GET "https://ag-analytics.azure-api.net/yieldv3/?filename={}"
--data-ascii "{body}"
using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;
namespace CSHttpClientSample
{
static class Program
{
static void Main()
{
MakeRequest();
Console.WriteLine("Hit ENTER to exit...");
Console.ReadLine();
}
static async void MakeRequest()
{
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
// Request parameters
queryString["filename"] = "{}";
var uri = "https://ag-analytics.azure-api.net/yieldv3/?" + queryString;
var response = await client.GetAsync(uri);
}
}
}
// // This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class JavaSample
{
public static void main(String[] args)
{
HttpClient httpclient = HttpClients.createDefault();
try
{
URIBuilder builder = new URIBuilder("https://ag-analytics.azure-api.net/yieldv3/");
builder.setParameter("filename", "{}");
URI uri = builder.build();
HttpGet request = new HttpGet(uri);
// Request body
StringEntity reqEntity = new StringEntity("{body}");
request.setEntity(reqEntity);
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null)
{
System.out.println(EntityUtils.toString(entity));
}
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>JSSample</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function() {
var params = {
// Request parameters
"filename": "{}",
};
$.ajax({
url: "https://ag-analytics.azure-api.net/yieldv3/?" + $.param(params),
beforeSend: function(xhrObj){
// Request headers
},
type: "GET",
// Request body
data: "{body}",
})
.done(function(data) {
alert("success");
})
.fail(function() {
alert("error");
});
});
</script>
</body>
</html>
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString* path = @"https://ag-analytics.azure-api.net/yieldv3/";
NSArray* array = @[
// Request parameters
@"entities=true",
@"filename={}",
];
NSString* string = [array componentsJoinedByString:@"&"];
path = [path stringByAppendingFormat:@"?%@", string];
NSLog(@"%@", path);
NSMutableURLRequest* _request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path]];
[_request setHTTPMethod:@"GET"];
// Request headers
// Request body
[_request setHTTPBody:[@"{body}" dataUsingEncoding:NSUTF8StringEncoding]];
NSURLResponse *response = nil;
NSError *error = nil;
NSData* _connectionData = [NSURLConnection sendSynchronousRequest:_request returningResponse:&response error:&error];
if (nil != error)
{
NSLog(@"Error: %@", error);
}
else
{
NSError* error = nil;
NSMutableDictionary* json = nil;
NSString* dataString = [[NSString alloc] initWithData:_connectionData encoding:NSUTF8StringEncoding];
NSLog(@"%@", dataString);
if (nil != _connectionData)
{
json = [NSJSONSerialization JSONObjectWithData:_connectionData options:NSJSONReadingMutableContainers error:&error];
}
if (error || !json)
{
NSLog(@"Could not parse loaded json with error:%@", error);
}
NSLog(@"%@", json);
_connectionData = nil;
}
[pool drain];
return 0;
}
<?php
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
require_once 'HTTP/Request2.php';
$request = new Http_Request2('https://ag-analytics.azure-api.net/yieldv3/');
$url = $request->getUrl();
$headers = array(
// Request headers
);
$request->setHeader($headers);
$parameters = array(
// Request parameters
'filename' => '{}',
);
$url->setQueryVariables($parameters);
$request->setMethod(HTTP_Request2::METHOD_GET);
// Request body
$request->setBody("{body}");
try
{
$response = $request->send();
echo $response->getBody();
}
catch (HttpException $ex)
{
echo $ex;
}
?>
########### Python 2.7 #############
import httplib, urllib, base64
headers = {
}
params = urllib.urlencode({
# Request parameters
'filename': '{}',
})
try:
conn = httplib.HTTPSConnection('ag-analytics.azure-api.net')
conn.request("GET", "/yieldv3/?%s" % params, "{body}", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
########### Python 3.2 #############
import http.client, urllib.request, urllib.parse, urllib.error, base64
headers = {
}
params = urllib.parse.urlencode({
# Request parameters
'filename': '{}',
})
try:
conn = http.client.HTTPSConnection('ag-analytics.azure-api.net')
conn.request("GET", "/yieldv3/?%s" % params, "{body}", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
require 'net/http'
uri = URI('https://ag-analytics.azure-api.net/yieldv3/')
query = URI.encode_www_form({
# Request parameters
'filename' => '{}'
})
if query.length > 0
if uri.query && uri.query.length > 0
uri.query += '&' + query
else
uri.query = query
end
end
request = Net::HTTP::Get.new(uri.request_uri)
# Request body
request.body = "{body}"
response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
http.request(request)
end
puts response.body