PortML.Documents
1.1.29
See the version list below for details.
dotnet add package PortML.Documents --version 1.1.29
NuGet\Install-Package PortML.Documents -Version 1.1.29
<PackageReference Include="PortML.Documents" Version="1.1.29" />
paket add PortML.Documents --version 1.1.29
#r "nuget: PortML.Documents, 1.1.29"
// Install PortML.Documents as a Cake Addin #addin nuget:?package=PortML.Documents&version=1.1.29 // Install PortML.Documents as a Cake Tool #tool nuget:?package=PortML.Documents&version=1.1.29
About
PortML stands for Port Markup Language. It is a descriptive language or document which describes container port assets, such as yard blocks, 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 terminal information from the PortML
object, use the following code.
var terminal = portML.GetTerminal();
The code above will return a list of TerminalInfo
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.
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 Block
yard block module is corresponding to the container yard in the sea port terminal.
The starting point and facing direction of a yard block is defined in the way shown in the following diagram.
The Facing
property defines the direction of the yard block in radian rotating around the StartingAt
point.
To retrieve the yard block information from the PortML
object, use the following code.
var yardBlocks = portML.GetAllYardBlocks();
The code above will return a list of YardBlockInfo
object which contains the following information.
Property | Data Type | Description |
---|---|---|
ReferenceId | string | Reference ID of the yard block. |
StartingAt | Vector2 | The coordinate of the starting point of the yard block. |
Facing | double | The direction of the yard block in radian. |
NumberOfRows | int | Number of rows of the yard block. |
NumberOfBays | int | Number of bays of the yard block. |
NumberOfTiers | int | Number of tiers of the yard block. |
BayTypes | BayType[] | Type (either exchange or transhipment) of each bay. |
SlotWidth | double | Average width of each slot in the yard block. The total width of the yard block is thus SlotWidth * NumberOfRows. |
SlotLength | double | Average length of each slot in the yard block. The total width of the yard block is thus SlotLength * NumberOfBays. |
Release Notes
- Introduced TerminalInfo;
- Introduced WharfInfo;
- Introduced YardBlockInfo.
Feedback
Bug reports and contributions are welcome at PortML Contact Us Page.
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 | 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. |
-
.NETStandard 2.0
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Numerics.Vectors (>= 4.5.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 |
---|---|---|
1.1.82 | 193 | 4/17/2024 |
1.1.81 | 142 | 3/22/2024 |
1.1.80 | 119 | 3/19/2024 |
1.1.79 | 118 | 2/28/2024 |
1.1.78 | 123 | 2/21/2024 |
1.1.77 | 143 | 2/14/2024 |
1.1.76 | 177 | 8/22/2023 |
1.1.75 | 140 | 8/22/2023 |
1.1.71 | 406 | 11/8/2022 |
1.1.70 | 398 | 10/19/2022 |
1.1.69 | 433 | 10/18/2022 |
1.1.68 | 427 | 10/13/2022 |
1.1.67 | 443 | 7/25/2022 |
1.1.66 | 439 | 7/4/2022 |
1.1.65 | 427 | 6/15/2022 |
1.1.64 | 427 | 6/14/2022 |
1.1.63 | 479 | 6/8/2022 |
1.1.61 | 439 | 6/3/2022 |
1.1.60 | 456 | 5/8/2022 |
1.1.59 | 450 | 4/30/2022 |
1.1.58 | 439 | 4/29/2022 |
1.1.57 | 468 | 4/28/2022 |
1.1.56 | 444 | 4/28/2022 |
1.1.55 | 485 | 4/23/2022 |
1.1.53 | 448 | 3/15/2022 |
1.1.52 | 458 | 2/24/2022 |
1.1.51 | 457 | 2/22/2022 |
1.1.50 | 456 | 2/11/2022 |
1.1.49 | 465 | 2/10/2022 |
1.1.48 | 464 | 1/27/2022 |
1.1.47 | 485 | 1/27/2022 |
1.1.46 | 482 | 1/27/2022 |
1.1.45 | 502 | 1/19/2022 |
1.1.44 | 477 | 1/15/2022 |
1.1.42 | 468 | 1/15/2022 |
1.1.41 | 465 | 1/11/2022 |
1.1.40 | 296 | 1/11/2022 |
1.1.39 | 470 | 1/11/2022 |
1.1.38 | 313 | 1/5/2022 |
1.1.37 | 311 | 1/5/2022 |
1.1.36 | 312 | 1/3/2022 |
1.1.35 | 293 | 1/3/2022 |
1.1.34 | 329 | 1/2/2022 |
1.1.33 | 323 | 1/2/2022 |
1.1.32 | 312 | 1/2/2022 |
1.1.31 | 320 | 1/2/2022 |
1.1.30 | 308 | 1/2/2022 |
1.1.29 | 295 | 1/2/2022 |
1.1.28 | 298 | 12/31/2021 |
1.1.27 | 299 | 12/31/2021 |
1.1.26 | 295 | 12/30/2021 |
1.1.25 | 304 | 12/30/2021 |
1.1.24 | 292 | 12/30/2021 |
1.1.22 | 296 | 12/30/2021 |
1.0.4 | 307 | 12/29/2021 |
1.0.3 | 309 | 12/29/2021 |
Please refer to README.