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:
- last years submission Disasterverse
- This years submission https://devpost.com/software/railblazer
- Siemens challenge winners this year Thomas Tracks XR

Leave a comment