Borehole Grapher/Mapper

As part of AEON‘s baseline study in the Karoo, a group of my colleagues are undertaking a large scale hydrocensus in the area near the Western Cape/Eastern Cape boundary. At the moment, this entails visiting a large number of boreholes, recording some general information about them, and, where possible, recording the electro-conductivity of the borehole. They are also going to be doing other tests. The ultimate goal of this is to narrow down which boreholes we will be monitoring on a recurring basis.

This has lead to a large amount of readings, associated with a given depth, being recorded. Excel is painful to use, because there is no consistency in the depth of boreholes, so while some tests may only have 20 readings, there is one with nearly 300. This precludes automated graphing in Excel.

So, I have written a Python script to do this for me (mostly as practice, but hey, this will be pretty useful for the people actually working on it). I got this working adequately, and then realised that since I have coördinates for each borehole, I could graph the results.

Looking around, I settled on leaflet.js to do the mapping part of it.

As such, my script now writes a simple javascript file with all the locations and the information needed in the pop-up. It also links in the graph(s) for each borehole and any photos we may have.

One edge-case that I need to clear up still is that it does not handle a borehole with only one reading (which happens if we can not get the probe into the borehole). However, in general, this is all working quite nicely, so I am letting it out into the wild, in the hope that it will be improved for me.

The code can be found on github. Have at it, and I hope it is vaguely useful.

The page created when clicking on a link looks something like this. And this is the map, with one borehole marker pin.

Edit (2015-04-12): I have rewritten this from the ground up, so it is much more flexible regarding the input file. I have also fixed the edge case mentioned above. So it will now report a single reading as a surface reading only.