HackZurich 23

This year’s HackZurich challenge was to take information about a train shunting station in which locomotives and wagons come together on a network and create some kind of routing solution.

Locilizing the information

While we have .las, models, drone photography and .obj files, in order to solve a routing problem you have to build a network. Diggiging through the fancy data formats we found some .pdf’s and .dwg files which appear as if they may be geolocated but ultimately we wanted to extract a network.

I managed to pull out quite a bit of info from a CAD file, but making that usable was another challenge.

Modifying CAD plans to a Geospatial format

Manually digitizing a small network for a proof of concept actually turned out to be easier than forcing Fusion360 to generate a Geospatial compatible .dxf file with the attributes in the right place.

After some tests we ended up with a pretty stange network with node edges, nodes and edges. 

We did this to match the network which was essentially available to the competing teams on the Siemens challenge though a real time api call; the only critical missing information was the geospatial location of the various references highlighted in the code block below.

{
      "id": "GLIS.WEICHE.236",
      "neighbors": [
        { "neighborID": "GLIS.WEICHE.235", "side": "fixed", "neighborsSide": "left" },
        { "neighborID": "GLIS.GLEIS.GS6.1", "side": "right", "neighborsSide": "a" },
        { "neighborID": "GLIS.WEICHE.237", "side": "left", "neighborsSide": "fixed" }
      ]
    },
    {
      "id": "GLIS.WEICHE.237",
      "neighbors": [
        { "neighborID": "GLIS.WEICHE.236", "side": "fixed", "neighborsSide": "left" },
        { "neighborID": "GLIS.GLEIS.GS7.1", "side": "right", "neighborsSide": "a" },
        { "neighborID": "GLIS.GLEIS.902_", "side": "left", "neighborsSide": "a" }
      ]
    },
    {
      "id": "GLIS.WEICHE.238",
      "neighbors": [
        { "neighborID": "GLIS.GLEIS.902_", "side": "fixed", "neighborsSide": "b" },
        { "neighborID": "GLIS.WEICHE.239", "side": "right", "neighborsSide": "fixed" },
        { "neighborID": "GLIS.WEICHE.240", "side": "left", "neighborsSide": "fixed" }
      ]
    },

Of course a manual process for such a thing is not ideal but in a time bound exercise like this it was kind of ok to literally lie on the schematic and fix it up for a working concept at a smaller scale.

Visuals

Taking this information into a 2D view with routing information was done by converting from the Swiss national grid to 4326 and then displaying with cesium, which can handle geospatial data in geojson format.

Its a hackathon so another member of our team put AI into the prototype because why not.

And volia a working prototype for presentations, video editing and un-necessarily epic into and outro music…

Thanks team HackZurich and everyone at the Siemens booth,

Lucas

HackZurich Submission links:


Posted

in

,

by

Tags:

Comments

Leave a comment