This page documents the field boundary data application note. It is part of the minimum viable product (MVP) for AgGateway's ADAPT.
The purpose of the application note is to create a transaction to support simple and complex field boundaries (e.g., multi polygons).
This section documents assumptions of this application note, which may include pre-conditions or things not being considered.
As a grower or service provider, I want to import field boundaries from an MICS into my software tool for a variety of reasons:
As a service provider, I want to import a field boundary from a grower who is already using an FMIS into my alternative software tool for my own unique reasons to add value.
As a service provider, I want to import a complex field boundary from the grower's existing FMIS into my alternative software tool for my own unique reasons to add value.
A geo-fence can be the same as a field boundary. A geo-fence is generally used for real-time telematics tools to enable alerts to be sent to farm mangers or other parties so they know when a machine enters/leaves a specific area. Examples of when and how a geo-fence might be used are:
Users can serialize all types of grower setup information via the ADM Plugin, including field boundary data. After rendering the data in the ADAPT Application Data Model, use the ADM Plugin to create an optimized serialization of the model. Upon receipt of the output, the consumer then deserializes the data with the ADM Plugin.
Excerpt from sample code (C#):
//Initialize the ADM Pluginvar pluginFactory = new PluginFactory(applicationPath);var admPlugin = pluginFactory.GetPlugin("ADMPlugin");admPlugin.Initialize(); //Store data in the Catalog objectApplicationDataModel export = new ApplicationDataModel();export.Catalog = new Catalog();Field adaptField = new Field();MultiPolygon adaptMultiPolygon = new MultiPolygon();adaptMultiPolygon.Polygons = new List<Polygon>();Polygon adaptPolygon = new Polygon();adaptPolygon.ExteriorRing = new LinearRing();foreach (var coordinate in myBoundaryPolygon.ExteriorRing.Coordinates){ var adaptPoint = new Point(); adaptPoint.X = coordinate.X; adaptPoint.Y = coordinate.Y; adaptPolygon.ExteriorRing.Points.Add(adaptPoint); } ...adaptMultiPolygon.Polygons.Add(adaptPolygon);FieldBoundary adaptBoundary = new FieldBoundary();adaptBoundary.SpatialData = adaptMultiPolygon;export.Catalog.FieldBoundaries.Add(adaptBoundary);adaptField.ActiveBoundaryId = adaptBoundary.Id.ReferenceId;export.Catalog.Fields.Add(adaptField);//Export the dataadmPlugin.Export(export, outputPath);...//Importvar pluginFactory2 = new PluginFactory(applicationPath); var admPlugin2 = pluginFactory.GetPlugin("ADMPlugin"); admPlugin2.Initialize();ApplicationDataModel imports = admPlugin2.Import(outputPath);
See the full TreeDemo example in the ADAPT Sample Code (https://github.com/ADAPT/ADAPT-Samples).
AgGateway's ADAPT is a model created through a series of compromises, and influenced by the group of volunteers who stepped forward to work on it with dedication over the past couple of years. Throughout the process, we tried not to pick winners. The goal was to support stakeholders (more or less) where they are and not force major refactoring on any one participant's part just to be able to integrate.
As a result, the way ADAPT implements and arranges its Grower, Farm, Field, CropZone, and boundary structures is extremely flexible. Here are some highlights:
Review the ADAPT toolkit documentation
Review User Stories and Application Notes:
Read a 2-page flyer on ADAPT
Helpful Videos
Letter of Support from Grower Organizations
Find more resources on Open-Source ADAPT site: AdaptFramework.org
Adapt.Feedback@AgGateway.org
For more information, including materials for joining ADAPT, visit: http://www.AdaptFramework.org
ADAPT Wiki
You must be a member to access some areas of the Wiki. Contact Member Services at Member.Services@AgGateway.org for more information.
Chairs Dan Danford Case New Holland, (Business)
Stuart Rhea Ag Connections (Technical)
Vice-Chair Kelly Nelson TopCon (Technical)