opentripmodel / otm5-change-requests

Tracking and reporting bugs and change requests of the OTM5 specification.
5 stars 1 forks source link

StackCapacity and StackPointers #74

Closed thomaskolmans closed 4 months ago

thomaskolmans commented 1 year ago

Type of request

Is your feature request related to a problem? As discussed a couple weeks ago in the OTM meeting - there is a need for a describing "value" of how things can be "stacked". That can either be a trailer with 2 loading spots, or how a vehicle has to be loaded.

Describe the solution you'd like I would propose the following:

StackCapacity: the capacity description of either a Vehicle or TransportEquipment.

The description that we currently use, and would also suggest, is the following JSON format:

{
    "x": [
        {
            "order": 0,
            "y": [
                {
                    "order": 0,
                    "z": [
                        {
                            "order": 0,
                            "usableCapacity": true,
                            "width": {},
                            "height": {},
                            "length": {},
                            "constraints": []
                        }
                    ]
                }
            ]
        },
        {
            "order": 1,
            "y": [
                {
                    "order": 0,
                    "z": [
                        {
                            "order": 0,
                            "usableCapacity": true,
                            "width": {},
                            "height": {},
                            "length": {},
                            "constraints": []
                        }
                    ]
                }
            ]
        }
    ]
}

The above JSON could describe a double-container chassis OR something else that can load 2 "things" behind each other. It's an XYZ description of capacity and/or if it's available or with it's constraints. The description above is used for trucks, trailers, chassis, boats, basically everything

In order to point towards such a position we also have a StackPointer, which is simply:

{
    "x": 0, 
    "y": 0, 
    "z": 0
}

The pointer is used on TransportEquipment (pallets for instance), goods and the action relevant to loading, unloading, etc.

Describe alternatives you've considered At this moment in time we are not aware of any solution that supports this within OTM. It could of course always be communicated within the externalAttributes, but we deemed this important enough to submit.

nlenlited commented 1 year ago

We could really use this to determine where a container needs to be loaded onto a truck, train or ship.

bmeesters commented 1 year ago

The general idea makes sense to me.

Let me rephrase the solution to be clear I understood it well.The capacity is a means to describe how much space a vehicle or equipment has. The pointer is a means to indicate how the capacity is used for some goods at some point in time. Therefore the capacity is a new field on both vehicle and transportEquipment, and the pointer is a new field on load. Correct?

I do have a few questions though:

Is there anything I missed?

thomaskolmans commented 1 year ago

Yes almost.

It's a definition of capacity in the sense of where Goods can be placed (either TransportEquipment or Items). As the name alludes, it gives a 3D representation of a space and where something can be placed.

You can do pallet stacking with this, container loading, trailer loading but also barge stowage plans.

1) The pointer is a reference to a certain place within the 3D capacity definition. The pointer is also needed on the Goods as for the purpose of stacking within TransportEquipment. 2) The order ensures the order of the arrays to make the 3D representation static. It also makes the StackPointer easier to implement as you can simply select the order for each depth. 3) Yes indeed, that is why at answer 1 there is also a pointer at the Goods level Sadly not possible to navigate around that.

That's it. To maybe make this clear we should show a 3D example of this to make this concept clear as it is slightly abstract. I can't make 3D data-representation any simpler or clearer, if you have suggestions, feel free.

bmeesters commented 1 year ago

Alright, almost everything makes sense to me.

Only thing I am uncertain about is how to deal with goods that are part of multiple trips. You would need to update the goods to update the pointer for each trailer/equipment it is going to be part of? I would say it makes more sense to have the load point to the goods. Then goods can be part of multiple loads/unloads and each load has a reference to where the specific goods should be stacked for that part of the trip.

Definitely would be good to work out an example and make it part of the documentation once we have a final design. Let's discuss it in a larger setting as well.

thomaskolmans commented 1 year ago

Sure but what about a pallet-stacking with certain goods? Or is that too specific? I think it would be good to discuss with the group.

bmeesters commented 1 year ago

Decided to postpone for now

bmeesters commented 4 months ago

We think this could be valuable, but we would like to hear from more parties that use this if the suggestion is good. For now we close it as non-planned. But it could be re-opened if more parties show support.