Hey guys, very green geospatial engineer here. I've set myself a task to learn how to create track diagrams with ArcGIS Pro. I created the following diagram by using railroad track data and by using the "Apply Relative Mainline Tool". For a first run of the tool I think its looking fairly good (or maybe I've spent so long on it I am lying to myself to make myself feel better).
My task now is to try and make the diagram look a bit neeter (e.g. have the main line be on the same Y-coordinate, get rid of all the weird divits etc...).
I have managed to do this by hand by using the move, edit vertices, and reshape tools but I was wondering if it was possible to do this programmatically?
I'd appreciate any help on this, thanks 🙂
I created this diagram from this data:
@matteatsbrainz Have a look at this excellent blog Create a Schematic Map for a Railroad Line by @JimBarry
Hey Ayan, Jim's blog was what actually laid the foundation for me to do this and helped me create a python tool that automatically assigned track hierarchy. I have been emailing him and he has been extremely helpful.
We've worked closely with @JimBarry & team for a few years now to automate this process. An elegant solution for push-button track charts in yards remains elusive, at least for the initial layout. There are several approaches for assigning hierarchies that can lessen the amount of manual layout you'll need to do in tight areas. Cartographically, none of them are fool proof. Combinations of shared-edge tools and snapping to concentric buffers occasionally help. Stepping up into Utility Networks or Roads & Highways offer a few additional tools for managing the routes/diagrams more efficiently at scale.
Hey Remmert, Jim's blog helped me out massively in creating an automatic python tool that assigns track hierarchy. I wont go into too much detail (as that would be a blog on its own) but essentially our dataset contains a "TRACK_ID" field which determins the type of track (e.g up fast mainline, or down relief line).
This code gets me about 80% of the way there. My final problem is just getting the diagram to look correct. A correct looking track diagram is there I think I just need some kind of python script that will allign all the correct lines, and simplify the geometry. Am I correct in assuming that currently this can only be done by hand?
I have had a strange idea of potentially using machine learning to do this. I would manually clean up 50 or so diagrams and then feed them to an AI and see it could replicate it.
You are correct, the "20%" currently has to be done by hand, minus assistive tools I mentioned above. I certainly look forward to seeing any solution you come up with, ESRI would probably welcome a presentation at Rail Summit. "I just need a python that does it correctly" and "training an AI" that can interact with a connected network inside the ESRI environment are often man-hour investments that exceed the cost of doing manually. We only continue to pursue supportive tools of this nature for Class I customers where the scale makes it viable. Another unexplored avenue is Ken Fields pushpin method for generating Vignellian subway maps. Make a transit map in ArcGIS Pro
Hey, Remmert. I thought I would give you a quick update with my diagrams. I've implimented some bits into my hierarchy code that take into consideration the spatial continuity of the track and it produces a much better diagram now. I think I still need to play around with the settings of the tool a bit (like line compression and branch offsets), but I think it is a major improvement to my previous diagram. I'd love to get some feedback on it 🙂
If you got it to produce this with just the relative main line tool you are winning my friend. I should probably try running one now that 3.5.2 is out. The branch offset function was one of the sticking points us. We could not get it to function reliably as described in the help docs. Hopefully they've made some improvements.
Thank you, I'm really happy with how it turned out. I found that it was a delicate balance between the branch offset distance and track compression ratio that would reduce the amount of tracks randomly crossing over in the diagram. Now I've got to figure out how to include stations on the diagram, which should be fun