Dev4Agriculture.ISO11783.ISOXML 0.21.1.1

dotnet add package Dev4Agriculture.ISO11783.ISOXML --version 0.21.1.1                
NuGet\Install-Package Dev4Agriculture.ISO11783.ISOXML -Version 0.21.1.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Dev4Agriculture.ISO11783.ISOXML" Version="0.21.1.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Dev4Agriculture.ISO11783.ISOXML --version 0.21.1.1                
#r "nuget: Dev4Agriculture.ISO11783.ISOXML, 0.21.1.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Dev4Agriculture.ISO11783.ISOXML as a Cake Addin
#addin nuget:?package=Dev4Agriculture.ISO11783.ISOXML&version=0.21.1.1

// Install Dev4Agriculture.ISO11783.ISOXML as a Cake Tool
#tool nuget:?package=Dev4Agriculture.ISO11783.ISOXML&version=0.21.1.1                

Abstract

ISOXML is an agricultural data format to create Task Descriptions and record machine data in agricultural machines. ISOXML is standardized in ISO11783-10.

Developers and Maintainers

Logo

Dev4Agriculture is specialized in agricultural data analysis. We love to make farming software work.

What are all the sub projects

This repository consists of multiple sub-projects. They all belong to isoxml.net but onliy Dev4Agriculture.ISO11783.ISOXML is the one that represents the library itself

Dev4Agriculture.ISO11783.ISOXML.Generation

This subproject is used to autogenerate the classes from XSD Schema Files. Those are adjusted versions of https://isobus.net (adjusted to fit V3 and V4 in parallel)

Dev4Agriculture.ISO11783.ISOXML.Test

Guess what, those are the tests for the ISOXML.net library. You may find interesting examples and also a few test data here.

Dev4Agriculture.ISO11783.ISOXML.Examples

Another sub project that provides Examples

Dev4Agriculture.ISO11783.ISOXML

This is the library itself that will be described in the following chapters


The Library

Nuget Package

isoxml.net is published as a nuget package here: https://www.nuget.org/packages/Dev4Agriculture.ISO11783.ISOXML

Classes

DataStructures in the ISOXML.net Library

ISOXML

The Datastructures in the ISOXML reflect an ISOXML TaskDataSet that was loaded or created:

  • Messages: A list of Warnings and errors that accoured during loading
  • Data: The TaskData Structure including Tasks, Devices, etc.
  • Grids: The List of Grids (Prescription maps) used in the TaskSet
  • TimeLogs: The List of MachineData-Packages provided with the TaskSet
  • IdTable: The IdTable collects all IDs from within the TaskSet (e.g. CTR1, TSK-1, etc.)
  • LinkList: In case of a Version 4 TaskSet, this is the List of Links between TaskData-Internal Ids (e.g. CTR1) and IDs from the FMIS (e.g. UUIDs).

This is the main Class. It consists of functions to create, load and save ISOXML.

static Load or LoadAsync

The static Load-Functions are used to Load a TaskDataSet from a storage folder. Its result consists of a Type ISOXML. There are also functions to read ISOXML From a Zip File.

static Create

Creates an Empty TaskDataSet

Save or SaveAsync

Stores the ISOXML to the given FolderPath

ISO11783_TaskDataFile

This is the RootElement of any TaskData. It includes all the Coding Data Elements of ISOXML such as Customers, Farmers, Partfields etc.

All these subElements have names beginning with ISO. E.g. ISOPartfield, ISOCustomer, ISOTask

The Tasks include links to TimeLogs as well as a grid if those data are available in the TaskSet.

The TaskDataFile is linked within an ISOXML Object as "Data".

ISOGridFile

This is an Application, Seeding or Prescription Map

Remark: Each Grid can be of Type1 or Type2

  • Type1: Type 1 is an array of bytes; each value in the grid redirects to the corresponding TreatmentZone and its proposed Value
  • Type2: Type 2 is an array of 32bit integers. It directly includes values rather than a link to the treatmentZone.

Important: Both Grids should be acessed through the Functions GetValue/SetValue only!

ClientName

An analysis class to Analyse WorkingSetMasterNames/ClientNames

The WorkingSetMasterName, also known as ClientName is the Unique Identifier for a machine in the ISOXML world.(Actually it's "nearly unique" only 😕)

It can be decoded to read things like

ToString()

This outputs the Hex-encoded name.

ToArray()

This is used to export a WorkingSetMasterName to an ISOTaskDataFile.

TaskController Emulation

The TaskController Emulator can be used to generate machine data just like a TaskController would do it.

You find details on that functionality in the specific Chapter;

License note on Logos

Please be aware that the logo assigned to this project is only covered under Apache2 when used with this project. You may not use this logo for any other purpose whatsoever without consent by https://www.dev4Agriculture.de

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.21.1.1 167 10/21/2024
0.21.0.1 75 10/21/2024
0.20.1.1 114 10/20/2024
0.19.6.3 120 9/17/2024
0.19.5.5 755 5/7/2024
0.19.5.2 770 8/22/2023
0.19.5.1 139 8/20/2023
0.19.5 196 7/29/2023
0.19.4.1 142 7/25/2023
0.19.4 162 7/25/2023
0.19.3.5 153 7/21/2023
0.19.3.4 146 7/3/2023
0.19.3.3 150 6/29/2023
0.19.3.2 144 6/28/2023
0.19.3.1 174 6/23/2023
0.19.3 153 6/22/2023
0.19.2 137 6/22/2023
0.19.1 157 6/21/2023
0.19.0 134 6/20/2023
0.18.0 136 6/20/2023
0.17.3 2,717 6/3/2023
0.17.2.1 125 5/31/2023
0.17.2 126 5/26/2023
0.17.1 170 5/20/2023
0.17.0 154 5/12/2023
0.16.3 141 5/2/2023
0.16.2.2 121 5/2/2023
0.16.1 195 4/17/2023
0.15.2.1 165 4/16/2023
0.15.2 162 4/12/2023
0.14.2.1 435 3/11/2023
0.13.3 255 2/23/2023
0.13.2 220 2/22/2023
0.13.1.1 315 2/8/2023
0.13.1 233 2/7/2023
0.12.0.1 298 1/16/2023
0.12.0 277 1/15/2023
0.11.0 300 1/10/2023
0.10.0 290 1/8/2023
0.9.1.2 303 1/3/2023
0.9.1.1 281 12/30/2022
0.9.0.2 288 12/17/2022
0.9.0.1 691 12/8/2022
0.9.0 293 12/5/2022
0.8.0 434 11/24/2022
0.7.4.4 353 11/22/2022
0.7.4.2 359 11/22/2022 0.7.4.2 is deprecated because it is no longer maintained and has critical bugs.
0.7.4.1 324 11/20/2022
0.7.3.1 337 11/17/2022
0.7.2.1 978 11/1/2022
0.7.1.1 460 10/24/2022
0.6.0.2 384 10/3/2022
0.6.0 621 9/16/2022
0.5.0.1 453 8/24/2022
0.4.0.1 433 8/15/2022
0.4.0 399 8/15/2022 0.4.0 is deprecated because it is no longer maintained.
0.0.0.2 292 12/29/2022

v0.21.1.1:
 - FIX: We added several definitions for SerialNumber handling in the DeviceGenerator, but we did not add the corresponding definitions in the TCEmulator

v0.21.0.1:
- FIX: Switching the DataTransferOrign lead to errors as it's static.
+ ADD: Handle Devices with a SerialNumber including Letters.
-FIX: Ensure that the TaskControllerEmulator always makes the ISOXML use DataTransferOrign MICS, not FMIS
-FIX: IMPORTANT: We had several First() or Last() calls that might cause throwing errors. We're now using FirstOrDefault() and LastOrDefault(). ATTENTION: If you used the following functions in a TryCatch, you'll now need to check the Result for NULL:
           - GetDeviceFromDeviceElement: Might now return null
           - FindDeviceProcessData: Might now return null
           - FindDeviceProperty: Might now return null
           - GetDeviceDataDesignator: Might now return ""
           - GetDeviceValuePresentation: Might now return a Default ValuePresentation
           - IsInField caused crash if no Field exists.
           -


v0.20.1.1:
- FIX: Several bugs in the non-published version of the TaskController Emulator

v0.20.0.1:
- ADD: A TaskController Emulator was added to generate ISOXML Like a TaskController would do it.

v0.20.0.0:
- Internal Release, not published. Base for the TaskController Emulator.

v0.19.6.1
- FIX: In some ISOXML Folders, There are files that end with TASKDATA.XML but are not actually these files. This happens e.g. with MAC OS files. To avoid errors, we add a warning about that

v0.19.6.1
- Was not released due to pipeline issues

v0.19.5.5
- FIX: If an empty or less than 6 bytes BIN-File existed, loading the ISOXML Caused an exception

v0.19.5.4
- FIX: TryGetDDIValue in Time Elements, Converter to Version 3, Totals and Lifetime Totals might crash in case the coresponding list was empty

v0.19.5.3
- FIX: Error in case of some function Apps, Fix the error message generation with parameters

v0.19.5.2
- FIX: In case the DataTransferOrign was MICS, the generated IDs were still positive as the TransferOrign was not handed on to the IDList

v0.19.5.1
- FIX: In case 2 polygons were compared of which one was closed and one was not, the overlap algorithm might in some cases not recognize the equality of both polygons
v0.19.5
+ ADD: Function to check if a field is within bounds.

v0.19.4.1
-FIX: If a TaskData inside a Zip folder was hidden in multiple subfolders, this lead to loading issues

v0.19.4
=OPT: This is an optimization Release to better read invalid ISOXML Files and get the maximum out of the data.

v0.19.3.5
-FIX: The edge case that a TLG is linked twice in a TaskData.XML now doesn't cause a crash but an error in the messages List

v0.19.3.4
-FIX: Not all elements were read to the IDList; Polygon or LinesTring IDs could have been duplicated
-FIX: When reading the ISOXML from a string,

v0.19.3.3
-FIX: Grid-Export to CSV had invalid filename

v0.19.3.3
-FIX: Grid-Export to CSV had invalid filename

v0.19.3.2
-FIX: Ensure the path for SaveTLG and SaveGrid is valid.

v0.19.3.1
+FIX: improved Function to get intersected area

v0.19.3
+ADD: Function to get intersected area

v0.19.2
+ADD: Several functions to improve the capabilities of the LinkList Functionalities
-FIX: The IDs of BaseStation, ProductGroup and ColourLegend were not initialized.

v0.19.1
+ADD: Get the StopTime for an ASP or TIM, no matter if it exists or needs to be calculated from the Duration.

v0.19.0
-FIX: Make sure to remove LineStringId in V3 TaskSets
-FIX: Make sure to limit amount of digits to 9 for GuidancePattern Linestrings.

v0.18.0
-FIX: The ProductAllocation was the only element in a Task having an ASP instead of AllocationStamp in parameter. Fixed in XSD and therefore also in Lib
-FIX: The LinkList-File doesn't export any NameSpace headers anymore
-FIX: Several Points and  Positions may only have up to 9 digits.

v0.17.3
=OPT: Optimize algorithm to find CulturalPractice in a Task
+ADD: Functions to read durations

v0.17.2.1

+FIX: add check if no elements with DDI179

v0.17.2

+ADD: GetTaskCulturalPractice in ISOTaskAnalysis

v0.17.1

+ADD: Specific Exception for missing TaskData.xml.

v0.17.0

+ADD: Adjust CodeGeneration from Schema files to remove Parenthesis-Text
+FIX: ISOPartField area calculation

v0.16.3

+ADD: Convert any ISOXML Element to an XML String

v0.16.2.2

-FIX: When reading an invalid XML, the Load-Function threw an exception

v0.16.2.1

-FIX: Found a DataSet with AFE-Elements as XFRs. Those are not officially supported but we shouldn't crash when we find them
-FIX: The resolution of the DDIs was wrong

v0.16.2

-ADD: Functions to get IsoField area

v0.16.1

-FIX: GridFile values were unsigned and GetSetpointValue was problematic

v0.15.2.1

-FIX: MixUp in the Enum of Trigger Methods lead to mixUp between Thresholds and OnChange.

v0.15.2

+ADD: Take TIM-Elements into account when totals could not be found in TimeLog Files

v0.15.1

+ADD: Functions to calculate the totals list of a given TimeLogs List
-FIX: Change variable for DeviceElementId to int
-FIX: Change variables for DDI to ushort

v0.14.2.1

-FIX: MultiLayer Grids were broken

v0.14.2

+ADD: Some functions to read the GridValue at a specific Geoposition, find out if a point is within a field and get the bounds of this field
+ADD: Functions to Generate TimeLogs

v014.1

+ADD: Add an autogenerated DDIList from the isobus.net Export

v0.13.3

+ADD: Analysis to find DeviceElements Relevant for specific DDIs in a Task

v0.13.1.1

-FIX: LinkList was not marked as a file to be preserved and returned to FMIS

v0.13.1

+ADD: Store LinkList seperately, used e.g. in case of exporting a V3 TaskSet

v0.13.0.1

+ADD: Load LinkList from .XML file separately, Save LinkLink into a separate LinkList file if needed. (for v3 or lower)
+FIX: Resolve inconsistensies between TaskFile and LinkList VersionMajor values

v0.13.0.0

+ADD: Save TimeLogXMLs
-FIX: Wrong BitEncoding when storing in V3

v0.12.0.1

-FIX: Zip-Archives were always unpacked to same TEMP-Folder, which avoids parallel processes

v0.12.0

+ADD: Add support to export ISOXML V3

v0.11.0.0

+ADD: Analysis of LocalizationLabel
+ADD: Extend WSM capabilities
=CHG: Rename WSM to ClientName

v0.10.0.0

+ADD: Add DetailsField and CodeField to ResultMessages

v0.9.1.2

-FIX: Did not properly read files from subfolders when reading zipfile stream
-FIX: Wrong casing of LINKLIST.xml. Must be LINKLIST.XML

v0.9.1.1

OUTDATED, do not use

v0.9.1.0

ADD: Function to ReadTaskData from Zipfile Stream

v0.9.0.2

FIX: Loading of Layers for GridType 2 was invalid

v0.9.0.1

FIX: Added missing Elements to the IDListTable; e.g. CodedCommentListValue could not be assigned with an ID.

v0.9.0.0

FIX: WorkingSetMasterName WSM required reversing of the ByteArray when reading Data from the ISODevice.WorkingSetMasterName

v0.8.0.0

Fix unsigned Machine Data Value to be actually signed

v0.7.4.4

Editorial only: Update the LogoURL in the Readme so that it's displayed in nuget.org

v0.7.4.3

Fix Reading of TimeLogs when TimeLogs include NumberOfSatellites

v0.7.4.2

HasDDIValue supported unsigned DET numbers only, making it impossible to check it for DeviceElements that were created in the MICS

v0.7.4.1

Add functionality to read an XML String to an ISOXML Object, no matter if it's a fully qualified ISO11783_TaskDataFile or a Coding Data Element.

v0.7.3.1

Add Functionality to get TimeLog Extracts for Positions where a specific value was not recorded. Relevant and important e.g. for values recorded "onChange"

v0.7.2.1

Add DeviceElement to IDList Table

v0.7.1.1

Add DefaultDataLogTrigger-Function for Tasks

v0.7.0.1

Add TimeLog Reading Functionalities

v0.6.0.1

Add functions to set the Core Root Information of an ISOXML and its LinkList in parallel

V0.5.0.1

WSM can now handle upper and lower case
Adjusted Namings and Values of the DeviceClass enum to fit the definition in https://isobus.net/