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
<PackageReference Include="Dev4Agriculture.ISO11783.ISOXML" Version="0.21.1.1" />
paket add Dev4Agriculture.ISO11783.ISOXML --version 0.21.1.1
#r "nuget: Dev4Agriculture.ISO11783.ISOXML, 0.21.1.1"
// 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
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
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
- Type of machine
- Name of Manufacturer (via the ID; see https://www.isobus.net/isobus/manufacturerCode)
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 | Versions 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. |
-
.NETStandard 2.1
- Newtonsoft.Json (>= 13.0.2)
- System.ComponentModel.Annotations (>= 5.0.0)
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 | 187 | 10/21/2024 | |
0.21.0.1 | 79 | 10/21/2024 | |
0.20.1.1 | 118 | 10/20/2024 | |
0.19.6.3 | 121 | 9/17/2024 | |
0.19.5.5 | 794 | 5/7/2024 | |
0.19.5.2 | 771 | 8/22/2023 | |
0.19.5.1 | 140 | 8/20/2023 | |
0.19.5 | 197 | 7/29/2023 | |
0.19.4.1 | 143 | 7/25/2023 | |
0.19.4 | 163 | 7/25/2023 | |
0.19.3.5 | 154 | 7/21/2023 | |
0.19.3.4 | 147 | 7/3/2023 | |
0.19.3.3 | 151 | 6/29/2023 | |
0.19.3.2 | 145 | 6/28/2023 | |
0.19.3.1 | 175 | 6/23/2023 | |
0.19.3 | 154 | 6/22/2023 | |
0.19.2 | 138 | 6/22/2023 | |
0.19.1 | 158 | 6/21/2023 | |
0.19.0 | 135 | 6/20/2023 | |
0.18.0 | 137 | 6/20/2023 | |
0.17.3 | 2,768 | 6/3/2023 | |
0.17.2.1 | 126 | 5/31/2023 | |
0.17.2 | 127 | 5/26/2023 | |
0.17.1 | 171 | 5/20/2023 | |
0.17.0 | 155 | 5/12/2023 | |
0.16.3 | 142 | 5/2/2023 | |
0.16.2.2 | 122 | 5/2/2023 | |
0.16.1 | 196 | 4/17/2023 | |
0.15.2.1 | 166 | 4/16/2023 | |
0.15.2 | 163 | 4/12/2023 | |
0.14.2.1 | 436 | 3/11/2023 | |
0.13.3 | 256 | 2/23/2023 | |
0.13.2 | 221 | 2/22/2023 | |
0.13.1.1 | 316 | 2/8/2023 | |
0.13.1 | 234 | 2/7/2023 | |
0.12.0.1 | 299 | 1/16/2023 | |
0.12.0 | 280 | 1/15/2023 | |
0.11.0 | 301 | 1/10/2023 | |
0.10.0 | 291 | 1/8/2023 | |
0.9.1.2 | 304 | 1/3/2023 | |
0.9.1.1 | 282 | 12/30/2022 | |
0.9.0.2 | 289 | 12/17/2022 | |
0.9.0.1 | 692 | 12/8/2022 | |
0.9.0 | 294 | 12/5/2022 | |
0.8.0 | 435 | 11/24/2022 | |
0.7.4.4 | 354 | 11/22/2022 | |
0.7.4.2 | 360 | 11/22/2022 | |
0.7.4.1 | 325 | 11/20/2022 | |
0.7.3.1 | 338 | 11/17/2022 | |
0.7.2.1 | 979 | 11/1/2022 | |
0.7.1.1 | 461 | 10/24/2022 | |
0.6.0.2 | 385 | 10/3/2022 | |
0.6.0 | 622 | 9/16/2022 | |
0.5.0.1 | 454 | 8/24/2022 | |
0.4.0.1 | 436 | 8/15/2022 | |
0.4.0 | 400 | 8/15/2022 | |
0.0.0.2 | 293 | 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/