Oficjalna dokumentacja API Goodloading

Przestrzenie ładunkowe

Rodzaje przestrzeni ładunkowych oraz możliwość wydzielania ich części

W Goodloading, mamy dostępnych kilka rodzajów przestrzeni ładunkowych, definiowane są one przez parametr “type”, który może przyjmować następujące wartości:

  • “vehicle” – samochód (wartość domyślna)
  • “sea” – kontener morski
  • kontenery lotnicze (2 typy):
    – “air x” – kontener z dwoma skosami
    – “air y” – kontener z jednym skosem
  • “pallet” – paleta

W każdej przestrzeni ładunkowej można wydzielić max. 2 części, ma to zastosowanie m.in. przy załadunku zestawu, np. dla pojazdów lub kontenerów morskich Przykład 2: – Części w przestrzeniach ładunkowych.

Szczegółowy opis parametrów definiujących przestrzeń ładunkowa, został podany w rozdziale Dane przestrzeni ładunkowej (loadingSpaces)

Pojazdy

Układanie ładunków w przestrzeni “vehicle”

Zapytanie

{
 "loads": [
        {
           "quantity": 18,
           "name": "load 1",
           "length": 120,
           "width": 80,
           "height": 100,
           "weight": 200
        },
         {
           "quantity": 19,
           "name": "load 2",
           "length": 100,
           "width": 70,
           "height": 80,
           "weight": 160
        },
        {
           "quantity": 20,
           "name": "load 3",
           "length": 100,
           "width": 50,
           "height": 80,
           "weight": 50
        }
],
        "loadingSpaces": [
        {
            "type": "vehicle",
            "quantity": 1,
            "name": "Solowka 20 EP",
            "parts": [
                {
                    "length": 820,
                    "width": 245,
                    "height": 240,
                    "limit": 8000
                }
            ]
        }  
    ],  
     "options": {
                }
}

Rezultat

Palety

Układanie ładunków w przestrzeni “pallet”.

Bez uwzględniania wymiarów podstawy palety “baseHeight”

Zapytanie

{
 "loads": [
        {
           "quantity": 12,
           "name": "load 1",
           "length": 40,
           "width": 30,
           "height": 40,
           "weight": 50
        },
         {
           "quantity": 4,
           "name": "load 2",
           "length": 35,
           "width": 20,
           "height": 50,
           "weight": 60
        }
],
        "loadingSpaces": [
        {
            "type": "pallet",
            "quantity": 1,
            "name": "Pallet",
            "parts": [
                {
                    "length": 120,
                    "width": 80,
                    "height": 100,
                    "limit": 1500
                }
            ]
        }
        ],  
     "options": {
                }
} 

Rezultat

Z uwzględnieniem wymiarów podstawy palety “baseHeight”

Zapytanie

{
 "loads": [
        {
           "quantity": 12,
           "name": "load 1",
           "length": 40,
           "width": 30,
           "height": 40,
           "weight": 50
        },
         {
           "quantity": 4,
           "name": "load 2",
           "length": 35,
           "width": 20,
           "height": 50,
           "weight": 60
        }
],
        "loadingSpaces": [
        {
            "type": "pallet",
            "quantity": 1,
            "name": "Pallet",
            "parts": [
                {
                    "baseHeight": 15,
                    "length": 120,
                    "width": 80,
                    "height": 100,
                    "limit": 1500
                }
            ]
        }
        ],  
     "options": {
                }
}

Rezultat

Kontenery morskie

Układanie ładunków w przestrzeni “sea”.

Zapytanie:

{
{
 "loads": [
        {
           "quantity": 18,
           "name": "load 1",
           "length": 100,
           "width": 80,
           "height": 50,
           "weight": 200
        },
         {
           "quantity": 19,
           "name": "load 2",
           "length": 100,
           "width": 70,
           "height": 80,
           "weight": 160
        },
        {
           "quantity": 20,
           "name": "load 3",
           "length": 100,
           "width": 50,
           "height": 80,
           "weight": 100
        }
],
        "loadingSpaces": [
        {
            "type": "sea",
            "quantity": 1,
            "name": "sea",
            "parts": [
                {
                    "length": 600,
                    "width": 244,
                    "height": 259,
                    "limit": 22000
                }
            ]
        }
        ],  
     "options": {
                }
}

Rezultat

Kontenery lotnicze

Kontener lotniczy jednostronny “air y”.

Definicja kontenera, polega na zdefiniowaniu poniższych parametrów. Podano przykładowe wymiary dla kontenera typu LD2.

"parts": [
                {
                    "length": 155,
                    "width": 153,
                    "height": 163,
                    "base": 119,
                    "heightD": 112,
                    "limit": 1150
                }
            ],

gdzie podane wartości mają następujące odwzorowanie na rysunku:

  • B – “base”
  • A – “lenght”
  • C – “hight
  • D- “hightD”

Zapytanie:

{
 "loads": [
        {
           "quantity": 2,
           "name": "load 1",
           "length": 120,
           "width": 80,
           "height": 100,
           "weight": 100,
           "stacking": true,
           "alongFloor": true
        },
         {
           "quantity": 2,
           "name": "load 2",
           "length": 50,
           "width": 20,
           "height": 50,
           "weight": 400,
           "stacking": true,
           "alongFloor": true
        },
        {
           "quantity": 2,
           "name": "load 3",
           "length": 100,
           "width": 50,
           "height": 100,
           "weight": 500,
           "stacking": true,
           "alongFloor": true
        }
],
        "loadingSpaces": [
        {
            "type": "air y",
            "quantity": 1,
            "name": "zestaw",
            "parts": [
                {
                     "length": 155,
                    "width": 153,
                    "height": 163,
                    "base": 119,
                    "heightD": 112,
                    "limit": 1150
                }               
            ]
        }
    ],  
     "options": {
                }
}

Rezultat:

Kontener lotniczy dwustronny “air x”

Definicja kontenera, polega na zdefiniowaniu poniższych parametrów. Podano przykładowe wymiary dla kontenera typu LD3-45.

"parts": [
                {
                    "length": 242,
                    "width": 153,
                    "height": 114,
                    "base": 156,
                    "heightD": 61,
                    "limit": 1045
                }
            ],

gdzie podane wartości mają następujące odwzorowanie na rysunku:

  • B – “base”
  • A – “lenght”
  • C – “hight
  • D – “hightD”

Zapytanie:

{
 "loads": [
        {
           "quantity": 2,
           "name": "load 1",
           "length": 120,
           "width": 80,
           "height": 100,
           "weight": 100,
           "stacking": true,
           "alongFloor": true
        },
         {
           "quantity": 2,
           "name": "load 2",
           "length": 50,
           "width": 20,
           "height": 50,
           "weight": 400,
           "stacking": true,
           "alongFloor": true
        },
        {
           "quantity": 2,
           "name": "load 3",
           "length": 100,
           "width": 50,
           "height": 100,
           "weight": 500,
           "stacking": true,
           "alongFloor": true
        }
],
        "loadingSpaces": [
        {
            "type": "air x",
            "quantity": 1,
            "name": "zestaw",
            "parts": [
                {
                 
                    "length": 242,
                    "width": 153,
                    "height": 114,
                    "base": 156,
                    "heightD": 61,
                    "limit": 1045
 
                }
            ]
        }
    ],  
     "options": {
                }
}

Rezultat:

Części w przestrzeniach ładunkowych

Przestrzeń ładunkowa, może się składać max. z 2 części, dla typu przestrzeni vehicle, odpowiada to zestawowi.

Zapytanie

{
 "loads": [
        {
           "quantity": 36,
           "name": "load 1",
           "length": 120,
           "width": 80,
           "height": 100,
           "weight": 100
        },
         {
           "quantity": 50,
           "name": "load 2",
           "length": 100,
           "width": 70,
           "height": 80,
           "weight": 80
        },
        {
           "quantity": 30,
           "name": "load 3",
           "length": 100,
           "width": 50,
           "height": 80,
           "weight": 100
        }
],
        "loadingSpaces": [
        {
            "type": "vehicle",
            "quantity": 1,
            "name": "vehicle",
            "parts": [
                {
                    "length": 700,
                    "width": 240,
                    "height": 305,
                    "limit": 6000
                },
                {   "length": 700,
                    "width": 240,
                    "height": 305,
                    "limit": 6000
                }
               
            ]
        }
    ],  
     "options": {
                }

Rezultat

Rodzaje załadunków

Mamy dostępne 4 rodzaje załadunków, ustawiane parametrem “loadingSide, który może przyjmować następujące wartości:

  • „back” [domyślne]
  • „top”
  • „left”
  • „right”

Parametr obowiązuje dla zdefiniowanej części przestrzeni ładunkowej “part”, tak więc dla każdej zdefiniowanej części może być ustawiony inaczej.

Na rysunkach, na żółto oznaczona jest płaszczyzna, przez którą ma być dokonywany załadunek.

Domyślny typ załadunku “back”

Zapytanie:

{
 "loads": [
        {
           "quantity": 16,
           "name": "load 1",
           "color": "#71A34E",
           "length": 120,
           "width": 80,
           "height": 100,
           "weight": 50,
           "stacking": true      
        },
         {
           "quantity": 18,
           "name": "load 2",
           "color": "#5B9BD5",
           "length": 80,
           "width": 60,
           "height": 100,
           "weight": 60,
           "stacking": true
        },
        {
           "quantity": 24,
           "name": "load 3",
           "color": "#FFC000",
           "length": 100,
           "width": 50,
           "height": 100,
           "weight": 80,
           "stacking": true
        }
],
        "loadingSpaces": [
         {
            "quantity": 1,
            "name": "Solowka 20 EP",
            "parts": [
                {
                    "length": 820,
                    "width": 245,
                    "height": 240,
                    "limit": 8000,
                    "loadingSide": "back"
                }
            ]
        }
    ],  
     "options": {
                }
}

Rezultat:

Typ załadunku od góry “top”

Zapytanie:

{
 "loads": [
        {
           "quantity": 16,
           "name": "load 1",
           "color": "#71A34E",
           "length": 120,
           "width": 80,
           "height": 100,
           "weight": 50,
           "stacking": true      
        },
         {
           "quantity": 18,
           "name": "load 2",
           "color": "#5B9BD5",
           "length": 80,
           "width": 60,
           "height": 100,
           "weight": 60,
           "stacking": true
        },
        {
           "quantity": 24,
           "name": "load 3",
           "color": "#FFC000",
           "length": 100,
           "width": 50,
           "height": 100,
           "weight": 80,
           "stacking": true
        }
],
        "loadingSpaces": [
         {
            "quantity": 1,
            "name": "Solowka 20 EP",
            "parts": [
                {
                    "length": 820,
                    "width": 245,
                    "height": 240,
                    "limit": 8000,
                    "loadingSide": "top"
                }
            ]
        }


    ],  
     "options": {
                }
}

Rezultat:

Typ załadunku od lewej strony “left”.

Zapytanie:

{
 "loads": [
        {
           "quantity": 16,
           "name": "load 1",
           "color": "#71A34E",
           "length": 120,
           "width": 80,
           "height": 100,
           "weight": 50,
           "stacking": true      
        },
         {
           "quantity": 18,
           "name": "load 2",
           "color": "#5B9BD5",
           "length": 80,
           "width": 60,
           "height": 100,
           "weight": 60,
           "stacking": true
        },
        {
           "quantity": 24,
           "name": "load 3",
           "color": "#FFC000",
           "length": 100,
           "width": 50,
           "height": 100,
           "weight": 80,
           "stacking": true
        }
],
        "loadingSpaces": [
         {
            "quantity": 1,
            "name": "Solowka 20 EP",
            "parts": [
                {
                    "length": 820,
                    "width": 245,
                    "height": 240,
                    "limit": 8000,
                    "loadingSide": "left"
                }
            ]
        }


    ],  
     "options": {
                }
}

Rezultat:

Typ załadunku od prawej strony “right”.

Zapytanie:

{
 "loads": [
        {
           "quantity": 16,
           "name": "load 1",
           "color": "#71A34E",
           "length": 120,
           "width": 80,
           "height": 100,
           "weight": 50,
           "stacking": true      
        },
         {
           "quantity": 18,
           "name": "load 2",
           "color": "#5B9BD5",
           "length": 80,
           "width": 60,
           "height": 100,
           "weight": 60,
           "stacking": true
        },
        {
           "quantity": 24,
           "name": "load 3",
           "color": "#FFC000",
           "length": 100,
           "width": 50,
           "height": 100,
           "weight": 80,
           "stacking": true
        }
],
        "loadingSpaces": [
         {
            "quantity": 1,
            "name": "Solowka 20 EP",
            "parts": [
                {
                    "length": 820,
                    "width": 245,
                    "height": 240,
                    "limit": 8000,
                    "loadingSide": "right"
                }
            ]
        }


    ],  
     "options": {
                }
}

Rezultat:

Dwie części z różnymi typami ładunków – załadunek zestawu

Obydwie części ładowane od tyłu

Zapytanie:

{
 "loads": [
        {
           "quantity": 36,
           "name": "load 1",
           "color": "#71A34E",
           "length": 120,
           "width": 80,
           "height": 100,
           "weight": 100
        },
         {
           "quantity": 50,
           "name": "load 2",
           "color": "#5B9BD5",
           "length": 100,
           "width": 70,
           "height": 80,
           "weight": 80
        },
        {
           "quantity": 30,
           "name": "load 3",
           "color": "#FFC000",
           "length": 100,
           "width": 50,
           "height": 80,
           "weight": 100
        }
],
        "loadingSpaces": [
        {
            "type": "vehicle",
            "quantity": 1,
            "name": "vehicle",
            "parts": [
                {
                    "length": 700,
                    "width": 240,
                    "height": 305,
                    "limit": 6000,
                    "loadingSide": "back"
                },
                {   "length": 700,
                    "width": 240,
                    "height": 305,
                    "limit": 6000,
                    "loadingSide": "back"
                }
               
            ]
        }
    ],  
     "options": {
                }
}

Rezultat:

Pierwsza część ładowana od lewej strony, a druga część ładowana od tyłu

Zapytanie:

{
 "loads": [
        {
           "quantity": 36,
           "name": "load 1",
           "color": "#71A34E",
           "length": 120,
           "width": 80,
           "height": 100,
           "weight": 100
        },
         {
           "quantity": 50,
           "name": "load 2",
           "color": "#5B9BD5",
           "length": 100,
           "width": 70,
           "height": 80,
           "weight": 80
        },
        {
           "quantity": 30,
           "name": "load 3",
           "color": "#FFC000",
           "length": 100,
           "width": 50,
           "height": 80,
           "weight": 100
        }
],
        "loadingSpaces": [
        {
            "type": "vehicle",
            "quantity": 1,
            "name": "vehicle",
            "parts": [
                {
                    "length": 700,
                    "width": 240,
                    "height": 305,
                    "limit": 6000,
                    "loadingSide": "left"
                },
                {   "length": 700,
                    "width": 240,
                    "height": 305,
                    "limit": 6000,
                    "loadingSide": "back"
                }
               
            ]
        }
    ],  
     "options": {
                }
}

Rezultat:

Dopuszczalna ładowność przestrzeni ładunkowej

Algorytm Goodloading,, pozwala na kontrolę wagi załadunku. Parametr przetwarzania “allowOverweight”, umożliwia sterowanie tym, czy podczas układania ładunków, można przekroczyć dopuszczalną ładowność przestrzeni ładunkowej, czy nie. Domyślna wartość “allowOverweight”: “false”, mówi, że waga ładunków nie może przekroczyć dopuszczalnej ładowności. Ustawienie wartości parametru na “true”, daje możliwość przekroczenia tej ładowności.i

Przykład 1 – Brak możliwości przekroczenia dopuszczalnej ładowności

Zapytanie:

{
 "loads": [
        {
           "quantity": 18,
           "name": "load 1",
           "length": 120,
           "width": 80,
           "height": 100,
           "weight": 200
        },
         {
           "quantity": 19,
           "name": "load 2",
           "length": 100,
           "width": 70,
           "height": 80,
           "weight": 160
        },
        {
           "quantity": 20,
           "name": "load 3",
           "length": 100,
           "width": 50,
           "height": 80,
           "weight": 100
        }
],
        "loadingSpaces": [
        {
            "quantity": 1,
            "name": "Solowka 20 EP",
            "parts": [
                {
                    "length": 820,
                    "width": 245,
                    "height": 240,
                    "limit": 8000
                }
            ]
        }
        ],  
     "options": {
        "allowOverweight": false
                }
}

Rezultat:

Przykład 2 – Dozwolone jest przekroczenie dopuszczalnej ładowności

Zapytanie

{
 "loads": [
        {
           "quantity": 18,
           "name": "load 1",
           "length": 120,
           "width": 80,
           "height": 100,
           "weight": 200
        },
         {
           "quantity": 19,
           "name": "load 2",
           "length": 100,
           "width": 70,
           "height": 80,
           "weight": 160
        },
        {
           "quantity": 20,
           "name": "load 3",
           "length": 100,
           "width": 50,
           "height": 80,
           "weight": 100
        }
],
        "loadingSpaces": [
        {
            "quantity": 1,
            "name": "Solowka 20 EP",
            "parts": [
                {
                    "length": 820,
                    "width": 245,
                    "height": 240,
                    "limit": 8000
                }
            ]
        }
        ],  
     "options": {
        "allowOverweight": true
                }
}

Rezultat

Naciski na osie

Algorytm Goodloading ma możliwość kontroli nacisku na osie pojazdu. W tym celu dla każdej z części przestrzeni ładunkowej należy zdefiniowac tablice z jej osiami. Taka tablica, jeżeli została dodana, musi zawierać dokładnie dwa albo trzy elementy (opisy zdefiniowanych osi) .

Przykład definiowania osi dla jednej części przestrzeni ładunkowej:

"axis": [
                        {
                            "distanceFromSpaceFront": -42,
                            "emptySpaceLoad": 2985,
                            "maxLoad": 5300
                        },
                        {
                            "distanceFromSpaceFront": 500,
                            "emptySpaceLoad": 1510,
                            "maxLoad": 10700
                        }
                    ]

gdzie:

distanceFromSpaceFront number Odległość osi od początku przestrzeni ładunkowej, wartość ujemna, gdy oś znajduje się pod kabiną kierowcy.
axiemptySpaceLoad number Obciążenie osi przy pustej przestrzeni ładunkowej. Wartość musi być liczbą większą lub równą 0.
maxLoad number Najwyższe dopuszczalne obciążenie osi. Wartość musi być liczbą większą lub równą 0.

Schemat rozłożenia osi pojazdów

Poniżej przedstawiono przykładowe, poglądowe schematy dla różnych pojazdów.

W odpowiedzi na wysłane zapytanie, otrzymujemy odpowiedź (Response) z obciążeniem osi po załadunku towaru

"axis": [
                        {
                            "distanceFromSpaceFront": -42,
                            "emptySpaceLoad": 2985,
                            "maxLoad": 5300,
                            "addedLoad": 1428.04
                        },
                        {
                            "distanceFromSpaceFront": 500,
                            "emptySpaceLoad": 1510,
                            "maxLoad": 10700,
                            "addedLoad": 4371.96
                        }
                    ]

gdzie parametr “addedLoad” wskazuje nacisk ustawionych ładunków na oś

Na wizualizacja wyniku przetwarzania, kolor wskazuje stopień obciążenia osi:

  • kolor niebieski – obciążenie małe
  • kolor czerwony – przeciążenie
  • kolor pośredni, pomiędzy niebieskim a czerwonym – stopień w jakim oś jest obciążona (ale jeszcze nie jest przeciążona)

Dla zestawu możemy określić nacisk na osie dla każdej z części pojazdu, zarówno naczepy jak i przyczepy. Aby to zrobić, to dla każdej części pojazdu musimy zdefiniować tablice z parametrami poszczegolnych osi.

Przykład 1- Solówka

Zapytanie

{
  "loads": [
        {
           "quantity": 18,
           "name": "load 1",
           "length": 120,
           "width": 80,
           "height": 100,
           "weight": 100,
           "stacking": true,
           "alongFloor": true
        },
         {
           "quantity": 20,
           "name": "load 2",
           "length": 50,
           "width": 20,
           "height": 50,
           "weight": 400,
           "stacking": true,
           "alongFloor": true
        },
        {
           "quantity": 11,
           "name": "load 3",
           "length": 100,
           "width": 50,
           "height": 100,
           "weight": 500,
           "stacking": true,
           "alongFloor": true
        }
],
        "loadingSpaces": [
        {
            "type": "vehicle",
            "quantity": 1,
            "name": "vehicle",
            "parts": [
                {
                    "length": 700,
                    "width": 241.2,
                    "height": 280,
                    "limit": 10505,
                    "loadingSide": "left",
                    "axis": [
                        {
                            "distanceFromSpaceFront": -42,
                            "emptySpaceLoad": 2685,
                            "maxLoad": 5300
                        },
                        {
                            "distanceFromSpaceFront": 500,
                            "emptySpaceLoad": 1310,
                            "maxLoad": 10700
                        }
                    ]
                }                 
                 ]
        }
        ],  
     "options": {
        "allowOverweight": true
                }
}

Rezultat

Obciążenie osi po załadunku:

   {
                            "distanceFromSpaceFront": -42,
                            "emptySpaceLoad": 2685,
                            "maxLoad": 5300,
                            "addedLoad": 2877.31
                        },
                        {
                            "distanceFromSpaceFront": 500,
                            "emptySpaceLoad": 1310,
                            "maxLoad": 10700,
                            "addedLoad": 12422.69
                        }
                    ]

Przykład 2 – Zestaw

Zapytanie:

{
"loads": [
        {
           "quantity": 18,
           "name": "load 1",
           "length": 120,
           "width": 80,
           "height": 100,
           "weight": 100,
           "stacking": true,
           "alongFloor": true
        },
         {
           "quantity": 20,
           "name": "load 2",
           "length": 50,
           "width": 20,
           "height": 50,
           "weight": 400,
           "stacking": true,
           "alongFloor": true
        },
        {
           "quantity": 20,
           "name": "load 3",
           "length": 100,
           "width": 50,
           "height": 100,
           "weight": 500,
           "stacking": true,
           "alongFloor": true
        }
],
        "loadingSpaces": [
        {
            "type": "vehicle",
            "quantity": 1,
            "name": "zestaw",
            "parts": [
                {
                    "length": 720,
                    "width": 200,
                    "height": 300,
                    "limit": 24000,
                    "loadingSide": "left",
                    "axis": [
                        {
                            "distanceFromSpaceFront": -100,
                            "emptySpaceLoad": 2685,
                            "maxLoad": 5300
                        },
                        {
                            "distanceFromSpaceFront": 550,
                            "emptySpaceLoad": 1310,
                            "maxLoad": 10700
                        }
                    ]
                },
                {   "length": 720,
                    "width": 200,
                    "height": 300,
                    "limit": 24000,
                    "loadingSide": "back",
                    "axis": [
                        {
                            "distanceFromSpaceFront": 100,
                            "emptySpaceLoad": 2685,
                            "maxLoad": 5300
                        },
                        {
                            "distanceFromSpaceFront": 550,
                            "emptySpaceLoad": 1310,
                            "maxLoad": 10700
                        }
                    ]
                }               
            ]
        }
    ],  
     "options": {
                }
}

Rezultat:

Obciążenie osi po załadunku:

"axis": [
                        {
                            "distanceFromSpaceFront": -100,
                            "emptySpaceLoad": 2685,
                            "maxLoad": 5300,
                            "addedLoad": 3726.15
                        },
                        {
                            "distanceFromSpaceFront": 550,
                            "emptySpaceLoad": 1310,
                            "maxLoad": 10700,
                            "addedLoad": 6073.85
                        }
                    ]
"axis": [
                        {
                            "distanceFromSpaceFront": 100,
                            "emptySpaceLoad": 2685,
                            "maxLoad": 5300,
                            "addedLoad": 6666.67
                        },
                        {
                            "distanceFromSpaceFront": 550,
                            "emptySpaceLoad": 1310,
                            "maxLoad": 10700,
                            "addedLoad": 3333.33
                        }
                    ]