Field Operations Shape
ESRI Shape file exchange for field operations
ESRI Shapefile is a generic geospatial vector data format.
Field operation is a recorded operation on a field, e.g., a seeding, fertilizing, spraying or harvesting operation.
This documentation is a reference for agricultural-specific shapefile bundles recommended to use for agrirouter-connected applications when passing field operations (aka work records).
Data Format
Bundle layout
The bundle is a zip archive describing one field operation. It holds up to two layers, each an ordinary ESRI shapefile — a set of four files sharing a basename:
<operation-id>.shp # point-level layer — geometry
<operation-id>.shx # point-level layer — shape index
<operation-id>.dbf # point-level layer — attribute table
<operation-id>.prj # point-level layer — coordinate reference system
summary.shp # summary layer — field boundary geometry
summary.shx # summary layer — shape index
summary.dbf # summary layer — attribute table
summary.prj # summary layer — coordinate reference systemA real bundle, for an application operation would look like this:
dd67f8c0-632c-43c1-8183-5f095b6bd699.dbf
dd67f8c0-632c-43c1-8183-5f095b6bd699.shp
dd67f8c0-632c-43c1-8183-5f095b6bd699.shx
dd67f8c0-632c-43c1-8183-5f095b6bd699.prj
summary.dbf
summary.shp
summary.shx
summary.prj- Point-level layer — one feature per recorded sample, carrying the as-applied detail of the operation. Its basename is the field operation id, sanitized to ASCII. Always present.
- Summary layer — always named
summary; one polygon feature per product/component, carrying field-level aggregate attributes. Present only when a usable field boundary is available for the operation; without one the bundle carries just the point-level layer's four files.
The two layers can be read independently, and the entry order within the zip is not significant.
Flat archive. All files sit at the root of the zip — there is no enclosing directory.
Column naming. DBF column names are uppercase in every layer, so the published schema uses one consistent casing throughout the bundle.
Summary layer
The summary layer carries the field boundary polygon together with a row of
field-level summary attributes aggregated from the operation's measurements.
There is one row per applied product/component: a single-product operation
yields one row, while a tank mix repeats the same boundary geometry once per
component. Operation-level columns (field, areas, speed, fuel, …) repeat across
rows; the per-product material columns differ from row to row.
Conventions:
- All numeric values are metric, and each
*_Ucolumn carries the unit of the value next to it (e.g.kg1ha-1,l1ha-1,seeds1ha-1). PRODUCTandCROPare mutually exclusive on a row: an applied input fillsPRODUCT, while a seeding/harvest cultivar fillsCROP.
| Column | Type | Meaning | Example | Enumeration |
|---|---|---|---|---|
FIELD | C(64) | Field name. | North 40 | |
OPERATION | C(32) | Operation type — Application, Seeding, Harvest or Tillage. | Application | Application, Seeding, Harvest, Tillage |
CROPSEASON | C(8) | Crop season year. | 2025 | |
PRODUCT | C(64) | Applied input/product name for this row (Application; one per tank-mix component). Blank for seeding/harvest. | UAN 32% | |
CROP | C(64) | Cultivar/variety name for this row (Seeding/Harvest, e.g. "Corn"). Blank for Application. | Corn | |
STARTDATE | C(24) | Operation start timestamp (ISO-8601, UTC). | 2025-04-12T08:30:00Z | |
ENDDATE | C(24) | Operation end timestamp (ISO-8601, UTC). | 2025-04-12T14:05:00Z | |
FIELDAREA | F(19,4) | Whole-field boundary area, in hectares. | 16.1880 | |
COVAREA | F(19,4) | Covered/worked area for the operation, in hectares. | 15.9420 | |
TOTMAT | F(19,4) | Total material for this product — total applied/seeded amount, or for harvest the total yield (volume). | 1814.3700 | |
TOTMAT_U | C(12) | Unit of TOTMAT. | kg | kg, l, seeds * |
AVGMAT | F(19,6) | Average material rate for this product — applied/seeded rate per area, or for harvest the average yield per area. | 113.812340 | |
AVGMAT_U | C(12) | Unit of AVGMAT. | kg1ha-1 | kg1ha-1, l1ha-1, seeds1ha-1 * |
TGTRATE | F(19,6) | Planned/target average rate for this product, when present. | 112.000000 | |
TGTRATE_U | C(12) | Unit of TGTRATE. | kg1ha-1 | kg1ha-1, l1ha-1, seeds1ha-1 * |
AVGSPEED | F(19,4) | Average vehicle/ground speed for the operation (km/h). | 9.6500 | |
AVGDEPTH | F(19,4) | Average working depth (Tillage), in metres. | 0.0762 | |
FUEL | F(19,4) | Total fuel consumed by the operation (litres). | 48.2000 | |
WETMASS | F(19,4) | Harvest only — total wet mass for this variety. | 21772.4400 | |
WETMASS_U | C(12) | Unit of WETMASS. | kg | kg * |
AVGWETM | F(19,6) | Harvest only — average wet mass per area for this variety. | 1365.840000 | |
AVGWETM_U | C(12) | Unit of AVGWETM. | kg1ha-1 | kg1ha-1 * |
MOIST | F(19,4) | Harvest only — average grain/crop moisture (%). | 18.5000 |
The Example column shows one plausible value per column; the examples are
illustrative per cell, not a single coherent row (some columns are
Application-only, others Harvest-only, and PRODUCT/CROP never appear
together).
The Enumeration column lists the complete set of values a column can take when that set is known in advance, and is left empty otherwise. Note that enumerations by design are not always exhaustive: a value may be provided by exporting system that does not appear in the list of this specification yet, in which case it is up to consumer to handle this gracefully.
* A unit token outside the listed set is possible but not expected; see Unit
tokens below.
Unit tokens
Units are written as compact tokens rather than symbols: a token is a product of
factors, where 1 separates factors and a trailing negative exponent marks a
denominator. So kg1ha-1 is kilograms per hectare, l1ha-1 litres per hectare,
km1hr-1 kilometres per hour, kg1m3-1 kilograms per cubic metre, ml1kg-1
millilitres per kilogram.
The bundle is metric: every unit token names a metric unit, and every numeric value is expressed in the unit its token names. The vocabulary is
| Dimension | Token |
|---|---|
| Length | m |
| Area | ha |
| Mass | kg |
| Volume | l |
| Seed count | seeds |
| Speed | km1hr-1 |
| Mass per area | kg1ha-1 |
| Volume per area | l1ha-1 |
| Seeds per area | seeds1ha-1 |
| Pressure | kpa |
| Mass per volume | kg1m3-1 |
| Volume per mass | ml1kg-1 |
| Energy per mass | mj1kg-1 |
| Bales per area | bales1ha-1 |
| Proportion | percent |
| Angle | deg |
| Temperature | °C |
Like the column enumerations, this vocabulary is not closed. A producer that cannot express a value in metric may emit it in its original unit, carrying that unit's token verbatim — so a consumer may encounter a token outside the table, and a value that is not metric. This is the one case where the "all values are metric" rule does not hold, and it is not expected in practice. A consumer should read the unit token rather than assume one and handle an unknown token gracefully.
Point-level layer
The point-level layer is the as-applied detail of the operation: one feature per sample recorded as the machine moved through the field, with a row of attributes describing what happened at that spot. The geometry is a point, or a small polygon for area-based machines. This is the operation's main shapefile, named after the operation id; the summary layer sits beside it in the same zip.
Unlike the summary layer, this layer has no fixed column set. Which columns are present depends on the operation type — Application, Seeding, Harvest or Tillage — and on the machine that recorded the operation. The tables below list every column that can appear, grouped by the operation type it belongs to. Treat the set as open: select columns by name, and expect neither every listed column to be present nor the listed ones to be all there are.
Rules that hold for the whole layer:
- Uppercase names. Column names are uppercase.
- Metric values. Every numeric value is in the metric unit given for its column in the tables below.
- Timestamp.
TIMEis the first attribute of every record, RFC3339 in UTC (see Timestamp below). - Crop. For Seeding/Harvest,
CROPholds the crop name as text (see Crop name below). - Product width.
PRODUCTis at leastC(64)wide, matching the summary layer (see Product width below).
In the tables, Unit is the unit of the published value; — marks a column
that carries no unit (text, id, timestamp). Type is the column's nominal
type, which is not always the DBF field definition emitted — see below.
Column types
The Type in the tables below is nominal: it tells you what kind of value the column holds and roughly how big — text of some width, a small integer, a decimal number of a given precision. It is not a guarantee of the exact DBF field definition on disk, which may differ in width and decimal count.
What does hold:
- A column's kind is as stated: a column typed
Character(n)holds text, and a column typedNumber(n,d)orDoubleholds a number. Only widths and decimal counts may differ. - Numeric columns are emitted as DBF numeric (
N) or float (F) fields; both hold a decimal number written as text, and both should be parsed the same way. - Character widths are floors, not fixed sizes: a column may be emitted wider
than its nominal type, never narrower.
PRODUCTis at leastC(64)(see Product width below).
A consumer should read field definitions from the DBF header rather than hardcode them from these tables, and should not assume a column's width is stable across bundles.
Common columns
Present across operation types (exact membership still depends on the machine and operation):
| Column | Type | Unit | Meaning |
|---|---|---|---|
TIME | Character(30) | — | Sample timestamp, RFC3339 in UTC (e.g. 2021-04-28T11:49:31.714Z). See Timestamp below. |
HEADING | Number(18,8) | deg (0 = magnetic north) | Direction of travel. |
DISTANCE | Number(18,8) | m | Distance travelled since the previous sample. |
SWATHWIDTH | Number(18,8) | m | Width of the implement section. |
SECTIONID | Number(5,0) | — | Implement section id for this sample. |
ELEVATION | Double | m | GPS elevation, adjusted for receiver offset. |
MACHINE | Number(5,0) | — | Index of the active machine/configuration for this sample. |
PRODUCTHASH | Character(35) | — | Opaque unique identifier. |
Timestamp
TIME is the first attribute of every record and holds the sample timestamp
as RFC3339 in UTC (e.g. 2021-04-28T11:49:31.714Z). Parse it as RFC3339. Where
no timestamp is available for a sample, TIME is blank.
Optional weather/operating columns
Any of these may be present on any operation type:
| Column | Type | Unit | Meaning |
|---|---|---|---|
FUEL | Number(18,8) | l | Fuel consumed. |
VEHICLSPEED | Number(18,8) | km1hr-1 | Vehicle speed. |
AIRTEMP | Number(18,8) | °C | Air temperature. |
WINDDRCTN | Character(2) | — | Wind direction (e.g. SE). |
WINDSPEED | Number(18,8) | km1hr-1 | Wind speed. |
SKYCNDTN | Character(23) | — | Sky conditions (e.g. Sunny). |
HUMIDITY | Number(18,8) | percent | Humidity. |
SOILMOIST | Character(23) | — | Soil moisture (e.g. Dry). |
SOILTEMP | Number(18,8) | °C | Soil temperature. |
DELTAT | Number(18,8) | °C | Temperature variation during the operation. |
Application columns
| Column | Type | Unit | Meaning |
|---|---|---|---|
PRODUCT | Character(23) | — | Product applied at this sample. Emitted as C(64) to match the summary layer — see Product width below. |
APPLIEDRATE | Number(18,8) | kg1ha-1 or l1ha-1 | Measured application rate. |
CONTROLRATE | Number(18,8) | kg1ha-1 or l1ha-1 | Prescribed rate sent to the implement. |
TARGETRATE | Number(18,8) | kg1ha-1 or l1ha-1 | Prescribed rate in the absence of a control rate. |
Nutrient-constituent columns, present based on the application type — applied/total/target/prescription rate and concentration of nitrogen (N), phosphorus (P₂O₅), potassium (K₂O) and ammonium (NH₄N):
| Column | Type | Unit | Meaning |
|---|---|---|---|
APLDRTN | Number(18,8) | kg1ha-1 | Applied rate, nitrogen. |
APLDRTP2O5 | Number(18,8) | kg1ha-1 | Applied rate, phosphorus. |
APLDRTK2O | Number(18,8) | kg1ha-1 | Applied rate, potassium. |
APLDRTNH4N | Number(18,8) | kg1ha-1 | Applied rate, ammonium. |
APLDTLN | Number(18,8) | kg | Applied total, nitrogen. |
APLDTLP2O5 | Number(18,8) | kg | Applied total, phosphorus. |
APLDTLK2O | Number(18,8) | kg | Applied total, potassium. |
APLDTLNH4N | Number(18,8) | kg | Applied total, ammonium. |
TRGTRTN | Number(18,8) | kg1ha-1 | Target rate, nitrogen. |
TRGTRTP2O5 | Number(18,8) | kg1ha-1 | Target rate, phosphorus. |
TRGTRTK2O | Number(18,8) | kg1ha-1 | Target rate, potassium. |
TRGTRTNH4N | Number(18,8) | kg1ha-1 | Target rate, ammonium. |
RXRATEN | Number(18,8) | kg1ha-1 | Prescription rate, nitrogen. |
RXRATEP2O5 | Number(18,8) | kg1ha-1 | Prescription rate, phosphorus. |
RXRATEK2O | Number(18,8) | kg1ha-1 | Prescription rate, potassium. |
RXRATENH4N | Number(18,8) | kg1ha-1 | Prescription rate, ammonium. |
NCNCNTRN | Number(18,8) | kg1m3-1 | Nitrogen concentration. |
P2O5CNCNTRN | Number(18,8) | kg1m3-1 | Phosphorus concentration. |
K2OCNCNTRN | Number(18,8) | kg1m3-1 | Potassium concentration. |
NH4NCNCNTRN | Number(18,8) | kg1m3-1 | Ammonium concentration. |
DRYMATTER | Number(18,8) | percent | Dry matter. |
Product width
PRODUCT names the same thing in both layers and carries it at the same width in
both: at least C(64). One product name therefore fits identically wherever
it appears in the bundle, and a consumer sizing a field for it needs only one
number.
The width is a floor, not a fixed size: a PRODUCT column wider than 64 keeps
its width. This is the only column with a width floor of its own; every other
column takes the width its nominal type implies.
Seeding columns
| Column | Type | Unit | Meaning |
|---|---|---|---|
CROP | Character(64) | — | Crop name (e.g. Corn) — see Crop name below. |
VARIETY | Character(23) | — | Seed variety/hybrid planted here. |
APPLIEDRATE | Number(18,8) | kg1ha-1 or seeds1ha-1 | Measured seeding rate. |
CONTROLRATE | Number(18,8) | kg1ha-1 or seeds1ha-1 | Prescribed rate sent to the planter. |
TARGETRATE | Number(18,8) | kg1ha-1 or seeds1ha-1 | Prescribed rate in the absence of a control rate. |
Harvest columns
| Column | Type | Unit | Meaning |
|---|---|---|---|
CROP | Character(64) | — | Crop name (e.g. Corn) — see Crop name below. |
VARIETY | Character(23) | — | Seed variety/hybrid harvested here. |
MOISTURE | Number(18,8) | percent | Crop moisture reading. |
WETMASS | Number(18,8) | kg1ha-1 | Wet-mass yield per area at this sample. |
VRYIELDVOL | Number(18,8) | l1ha-1 | Volumetric yield (volumetric crops only). |
VRYIELDMAS | Number(18,8) | kg1ha-1 | Yield by mass (mass-based crops only). |
VRYIELDBAL | Number(18,8) | bales1ha-1 | Yield in bales (cotton only). |
Constituent/quality columns, present based on the harvest type:
| Column | Type | Unit | Meaning |
|---|---|---|---|
GROSSYLDA | Number(18,8) | kg1ha-1 | Gross yield per area. |
GROSSYLD | Number(18,8) | kg | Gross yield. |
NETYLD | Number(18,8) | kg | Net yield. |
TRASH | Number(18,8) | percent | Out-the-back mass measurement. |
ADFPRCNT | Number(18,8) | percent | Acid detergent fiber percentage. |
NDFPRCNT | Number(18,8) | percent | Neutral detergent fiber percentage. |
STRCHPRCNT | Number(18,8) | percent | Starch percentage. |
CRDPRPRCNT | Number(18,8) | percent | Crude protein percentage. |
SUGARPRCNT | Number(18,8) | percent | Sugar percentage. |
GINTURNOUT | Number(18,8) | percent | Gin turnout. |
CRUDEASH | Number(18,8) | percent | Crude ash. |
CRUDEFIBER | Number(18,8) | percent | Crude fiber. |
CRUDEFAT | Number(18,8) | percent | Crude fat. |
OIL | Number(18,8) | percent | Oil. |
METABENERGY | Number(18,8) | mj1kg-1 | Metabolizable energy. |
LENGTHOFCUT | Number(18,8) | m | Length of cut. |
IDHIGHRATE | Number(18,8) | ml1kg-1 | Inoculant dosing high rate. |
IDHIGHTOTAL | Number(18,8) | ml1kg-1 | Inoculant dosing high total. |
IDLOWRATE | Number(18,8) | ml1kg-1 | Inoculant dosing low rate. |
IDLOWTOTAL | Number(18,8) | ml1kg-1 | Inoculant dosing low total. |
DRYMATTER | Number(18,8) | percent | Dry matter. |
Crop name
For Seeding and Harvest, CROP holds the crop name as text (e.g. Corn). It is
Character(64), the same type and width as the summary layer's CROP, so the
column reads identically in both layers.
The crop is an operation-level value — one crop per field operation — so every
sample in the layer carries the same name. The variety or hybrid is a separate
value and has its own column, VARIETY. Where no crop name is available, CROP
is blank.
Tillage columns
| Column | Type | Unit | Meaning |
|---|---|---|---|
TILLTYPE | Character(23) | — | Tillage type (e.g. Disk). |
APPLDEPTH | Number(18,8) | m | Measured applied depth. |
CTRLDEPTH | Number(18,8) | m | Measured control depth. |
TRGTDEPTH | Number(18,8) | m | Measured target depth. |
APPLPRESS | Number(18,8) | kpa | Measured applied pressure. |
CTRLPRESS | Number(18,8) | kpa | Measured control pressure. |
TRGTPRESS | Number(18,8) | kpa | Measured target pressure. |
John Deere export implementation details
How the bundle above is produced from a John Deere Operations Center (JDOC) field operation.
Source material
For one JDOC field operation, John Deere provides a shapefile export together
with a .json metadata sidecar. The sidecar carries, among other things, each
column's original unit, the operation's crop as a top-level CropId/CropName
pair, and the mapping from the machine index to machine/operator ids.
The two published layers have different origins:
- The summary layer is composed here. Its columns, types and metric units are defined by this document; its values are aggregated from the operation's measurements as reported by JDOC.
- The point-level layer is John Deere's own shapefile export, republished with the transformations below. Its column set and types are John Deere's and depend on the operation type. The point-level column tables list every column John Deere documents, and their Type column is John Deere's documented source type.
Source archive layout
John Deere's download nests the shapefile under a doc/ directory, names it with
spaces and other special characters, and ships a {base}-Deere-Metadata.json
sidecar alongside it. Restructuring it into the flat bundle described under
Bundle layout means:
- taking the first complete
.shp/.dbfpair, sorted by basename; - renaming the layer to the field operation id, sanitized to ASCII;
- flattening the four layer files to the zip root, with no enclosing directory;
- dropping the metadata sidecar, after its units and crop name have been read;
- carrying over John Deere's
.prjwhen the download has one, and otherwise writing the default WGS-84 WKT.
Geometry is copied verbatim; John Deere's coordinates are WGS-84 degrees.
Transformations applied to the John Deere export
| Spec rule | What John Deere ships | What is published |
|---|---|---|
| Metric normalization | Column values in the unit named in the .json sidecar, often imperial | Value scaled to metric, metric unit token published; converted columns re-typed to F (see Emitted DBF types) |
| Uppercase names | Mixed-case names, e.g. Swathwidth | SWATHWIDTH |
| Timestamp | A redundant pair: Time (locale-formatted, e.g. 4/28/2021 11:49:31 AM) and IsoTime (ISO-8601 UTC, millisecond precision) | One TIME column parsed from IsoTime and re-emitted as RFC3339 UTC; the locale Time column is dropped and TIME is moved to the front of the record |
| Crop | CROP as a numeric crop id (e.g. 173), opaque without John Deere's crop dictionary | CROP re-typed to Character(64) and re-valued to the name (e.g. Corn) resolved from the sidecar's CropId/CropName |
| Product width | PRODUCT as Character(23) | PRODUCT widened to C(64) |
A sample whose id does not match the sidecar's CropId — or an operation whose
sidecar carries no crop name — yields a blank CROP.
Everything else is left alone: non-numeric columns and columns already in metric pass through untouched apart from the uppercasing, and a numeric column whose unit is not recognized is passed through unconverted.
Emitted DBF types
Each column is emitted in one of two ways.
Pass-through — every non-numeric column, every numeric column already in
metric, and every numeric column whose unit is not recognized. John Deere's DBF
field definition is re-emitted intact (same type, width and decimal count) and
only the name is uppercased. PRODUCT is the exception: its width is raised to
64 when John Deere ships it narrower.
Converted — the numeric columns scaled to metric. Each is emitted as a DBF
float (F), its width recomputed to fit the converted values and capped at 19,
its decimal precision taken from John Deere's source precision with a floor of 3.
A source Number(18,8) becomes F(w,8) with w ≤ 19; a source column that
declared no decimals becomes F(w,3).
Timestamp precision. IsoTime carries millisecond precision, so the
point-level TIME carries milliseconds; the summary layer's
STARTDATE/ENDDATE are second-precision. Both are RFC3339 in UTC, as the data format above specifies.
Known unit normalization
Values are requested from John Deere in metric where possible; whatever comes
back in another unit is converted on publish. Each column's incoming unit is read
from the .json sidecar.
Recognized John Deere unit tokens and the metric token published in their place;
the value is scaled by the same conversion. Note the spellings [m3],
kg11000gal-1 and floz1ton-1:
| Dimension | Original units (John Deere) | Published unit |
|---|---|---|
| Length | ft, feet, in, mi, cm | m |
| Speed | mph, mi1hr-1, m1s-1 | km1hr-1 |
| Volume | gal, [m3], m3 | l |
| Mass | lb, t | kg |
| Area | ac | ha |
| Mass per area | lb1ac-1, t1ha-1 | kg1ha-1 |
| Volume per area | gal1ac-1, [m3]1ha-1 | l1ha-1 |
| Seeds per area | seeds1m2-1 | seeds1ha-1 |
| Pressure | bar, psi | kpa |
| Mass per volume | kg11000gal-1 | kg1m3-1 |
| Volume per mass | floz1ton-1 | ml1kg-1 |
Tokens that are already metric (e.g. m, kg, l, ha, kg1ha-1, l1ha-1,
km1hr-1, seeds1ha-1, kpa, kg1m3-1, ml1kg-1) are typically passed through
unchanged, and their columns count as pass-through for the purposes of Emitted
DBF types.
Note that cm is converted to m - one case where a metric unit is rescaled
so that we have a consistent unit for the same dimension. John Deere sends cm for
tillage depth measurements.
If John Deere sends a unit in neither set — not metric, not in the table above — the value is published unconverted and its original token passes through verbatim. Such a value may be non-metric, and its token falls outside the vocabulary in Unit tokens. It is expected that clients would handle this situation depending on the needs of their application.
Verified coverage
All four operations were test exported from a testing organization — Application, Seeding, Harvest and Tillage. A column marked verified below has been published from that real data; every other column in the format tables rests on John Deere's documentation alone, as at this time we were unable to simulate an operation that would produce it.
In all four captures both layers came out as shape type 5 (Polygon), the point-level layer included, and every bundle held all eight files.
| Group | Verified | Not yet seen |
|---|---|---|
| Common | TIME, HEADING, DISTANCE, SWATHWIDTH, SECTIONID, ELEVATION, MACHINE, PRODUCTHASH | — |
| Optional weather/operating | FUEL, VEHICLSPEED | AIRTEMP, WINDDRCTN, WINDSPEED, SKYCNDTN, HUMIDITY, SOILMOIST, SOILTEMP, DELTAT |
| Application | PRODUCT, APPLIEDRATE, CONTROLRATE, TARGETRATE | — |
| Application nutrient constituents | — | all (APLDRT*, APLDTL*, TRGTRT*, RXRATE*, *CNCNTRN, DRYMATTER) |
| Seeding | CROP, VARIETY, APPLIEDRATE, CONTROLRATE, TARGETRATE | — |
| Harvest | CROP, VARIETY, MOISTURE, WETMASS, VRYIELDVOL | VRYIELDMAS, VRYIELDBAL |
| Harvest constituents/quality | DRYMATTER | GROSSYLDA, GROSSYLD, NETYLD, TRASH, ADFPRCNT, NDFPRCNT, STRCHPRCNT, CRDPRPRCNT, SUGARPRCNT, GINTURNOUT, CRUDEASH, CRUDEFIBER, CRUDEFAT, OIL, METABENERGY, LENGTHOFCUT, IDHIGHRATE, IDHIGHTOTAL, IDLOWRATE, IDLOWTOTAL |
| Tillage | TILLTYPE, APPLDEPTH, CTRLDEPTH, TRGTDEPTH, APPLPRESS, CTRLPRESS, TRGTPRESS | — |
Summary-layer row model
A JDOC single-product operation produces one summary row; a tank mix produces one
row per component, repeating the boundary geometry and the operation-level
columns. Application fills PRODUCT per component; Seeding and Harvest fill
CROP from the operation's crop.