PortML.Documents 1.1.27

There is a newer version of this package available.
See the version list below for details.
dotnet add package PortML.Documents --version 1.1.27
NuGet\Install-Package PortML.Documents -Version 1.1.27
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="PortML.Documents" Version="1.1.27" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add PortML.Documents --version 1.1.27
#r "nuget: PortML.Documents, 1.1.27"
#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 PortML.Documents as a Cake Addin
#addin nuget:?package=PortML.Documents&version=1.1.27

// Install PortML.Documents as a Cake Tool
#tool nuget:?package=PortML.Documents&version=1.1.27

About

PortML stands for Port Markup Language. It is a descriptive language or document which describes container port assets, such as yard sets, quay cranes, wharves, and AGVs, as a markup code for modelling and simulation. In the future, besides the assets, it will include events as part of the document as well.

PortML Spec

PortML document follows the PortML specification which is defined in the schema file PortML.xsd. The schema defines all of the datatypes and base infrastructure types.

The PortML is described using the following format.

<PortML xmlns="http://o2des.com/portml-namespace" (attrA="value")>
   <nameA><nameA>
   <nameB[x]></nameB>
   <nameC> 
     <nameD></nameD>
   </nameC>
 <name>

Using this format:

  • To build a valid XML instance of a resource, simply replace the contents of the elements and attributes with valid content as described by the cardinality, type rules and content description found in the comment in each element;
  • Elements are always in the namespace http://o2des.com/portml-namespace. This is usually specified as the default namespace on the root element;
  • Element name is case-sensitive (though duplicates that differ only in case are never defined);
  • Elements must always appear in the order documented;
  • Elements which are not documented in this PortML Spec should not be included in the PortML document;
  • Any of the XML elements may have an id attribute to serve as the target of an internal reference;
  • Attributes can never be empty. Either they are absent, or they are present with at least one character of non-whitespace content;
  • Implementers should trim leading and trailing whitespace before writing and SHOULD trim leading and trailing whitespace when reading attribute values;
  • XML comments, processing instructions and formatting are not part of the contents of a resource;
  • XML resources MUST be exchanged using UTF-8 encoding. Specifying the character encoding using a <?xml encoding="UTF-8" ?> processing instruction is not needed;
  • The MIME-type for this format is application/xml.

How to Use

using (StreamReader file = new StreamReader("<path to PortML document>"))
{
    try
    {
        string portMLDocument = file.ReadToEnd();

        var parser = new PortML.Documents.PortMLParser();
        var portML = parser.Parse(portMLDocument);
        ...
    }
    catch (Exception ex)
    {
        ...
    }
}

Terminal

There will be one and only one Terminal module in the same PortML document. It is to specify the boundary of the terminal and to provide static properties which are general to the entire port system.

To retrieve the wharf information from the PortML object, use the following code.

var terminal = portML.GetTerminal();

The code above will return a list of WharfInfo object which contains the following information.

Property Data Type Description
BoundaryPoints List<Vector2> Boundary points of the terminal border which is a polygon. The area inside of the polygon is the terminal area.
BoAThreshold double Berth on Arrival threshold in second.
AnnualTeuRate int Number of TEUs handled by the sea port annually.
NumberOfAGVs int Total number of AGVs running inside the terminal.
ClusterFactor double [0,1]: 0 - small factor, 1 - big factor (single).
TEUInterTerminalRatio double Ratio of the total TEU which is for inter-terminal transhipment.
ConsignmentStrategy double [0,1]: 0 - 1st carrier, 1 - 2nd carrier, 0.5 - no consignment.
TEUExportRatio double Ratio of the total TEU which is for exporting.
ConcentrationFactor double [0.5,1.0]: 0.5 - dispersed (uniform); 1 - concentrated (single nearest point).
TEUImportRatio double Ratio of the total TEU which is for importing.
NumberOfQuayCranes int Total number of quay cranes available inside the terminal.

Wharf

Wharf is the side of the port terminal where vessels will be parked at.

Quay cranes will be located at the land side of the wharf while vessels will be parked at the sea side. As shown in the following diagram, the direction of the wharf, defined by StartingAt and EndingAt, is important. The wharf direction will decide which side of it is land side and which side of it is sea side.

Wharf Diagram

To retrieve the wharf information from the PortML object, use the following code.

var wharfs = portML.GetAllWharfs();

The code above will return a list of WharfInfo object which contains the following information.

Property Data Type Description
ReferenceId string Reference ID of the wharf.
StartingAt Vector2 The coordinate of the starting point of the wharf.
EndingAt Vector2 The coordinate of the ending point of the wharf.
Length double Wharf length in meter.

Yard Set

YardSet module is corresponding to the container yard in the sea port terminal.

The starting point and facing direction of a yardset is defined in the way shown in the following diagram. The Facing property defines the direction of the yardset in radian rotating around the StartingAt point. Wharf Diagram

To retrieve the wharf information from the PortML object, use the following code.

var yardSets = portML.GetAllYardSets();

The code above will return a list of YardSetInfo object which contains the following information.

Property Data Type Description
ReferenceId string Reference ID of the yardset.
StartingAt Vector2 The coordinate of the starting point of the yardset.
Facing double The direction of the yardset in radian.
NumberOfRows int Number of rows of the yardset.
NumberOfBays int Number of bays of the yardset.
NumberOfTiers int Number of tiers of the yardset.
BayTypes BayType[] Type (either exchange or transhipment) of each bay.
SlotWidth double Average width of each slot in the yardset. The total width of the yardset is thus SlotWidth * NumberOfRows.
SlotLength double Average length of each slot in the yardset. The total width of the yardset is thus SlotLength * NumberOfBays.

Release Notes

  • Introduced TerminalInfo;
  • Introduced WharfInfo;
  • Introduced YardSetInfo.

Feedback

Bug reports and contributions are welcome at PortML Contact Us Page.

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 netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  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
1.1.82 148 4/17/2024
1.1.81 111 3/22/2024
1.1.80 94 3/19/2024
1.1.79 94 2/28/2024
1.1.78 94 2/21/2024
1.1.77 110 2/14/2024
1.1.76 152 8/22/2023
1.1.75 108 8/22/2023
1.1.71 368 11/8/2022
1.1.70 370 10/19/2022
1.1.69 393 10/18/2022
1.1.68 397 10/13/2022
1.1.67 413 7/25/2022
1.1.66 400 7/4/2022
1.1.65 397 6/15/2022
1.1.64 399 6/14/2022
1.1.63 445 6/8/2022
1.1.61 410 6/3/2022
1.1.60 431 5/8/2022
1.1.59 416 4/30/2022
1.1.58 405 4/29/2022
1.1.57 436 4/28/2022
1.1.56 417 4/28/2022
1.1.55 453 4/23/2022
1.1.53 417 3/15/2022
1.1.52 433 2/24/2022
1.1.51 433 2/22/2022
1.1.50 426 2/11/2022
1.1.49 435 2/10/2022
1.1.48 441 1/27/2022
1.1.47 459 1/27/2022
1.1.46 456 1/27/2022
1.1.45 470 1/19/2022
1.1.44 447 1/15/2022
1.1.42 440 1/15/2022
1.1.41 432 1/11/2022
1.1.40 271 1/11/2022
1.1.39 443 1/11/2022
1.1.38 287 1/5/2022
1.1.37 285 1/5/2022
1.1.36 283 1/3/2022
1.1.35 261 1/3/2022
1.1.34 299 1/2/2022
1.1.33 291 1/2/2022
1.1.32 285 1/2/2022
1.1.31 284 1/2/2022
1.1.30 274 1/2/2022
1.1.29 270 1/2/2022
1.1.28 272 12/31/2021
1.1.27 272 12/31/2021
1.1.26 270 12/30/2021
1.1.25 270 12/30/2021
1.1.24 268 12/30/2021
1.1.22 270 12/30/2021
1.0.4 277 12/29/2021
1.0.3 282 12/29/2021

Please refer to README.