Neo4j Spatial Experiments #2: Modelling borehole data with Neo4j, visualizing with GraphXR!

Experiment 2 - Subsurface data - Modelling boreholes with Neo4j

One of the disruptive aspects of Neo4j is that the graph modelling approach makes it possible to model not just the data, but also the structure of the data as it would be in the real world.

This is a powerful enabler for geoscience related appliations for environmental, geotechnical, geological and geophysical data. Historically, these types of data require modelling the structural aspects such as the shape and location of an orebody, boreholes, environmental receptors, engineered structures and the data associated with those structures using multiple approaches and multiple systems.

Neo4j has both cartesian and spatial capabilities, and because most structural modelling approaches in the geosciences use meshes or linked lists to model data, Neo4j is very well suited to these use cases.

Further - Neo4j offers the potential to not only model the structures and data that compose those structures, but all adjacent and associated data in a single repository. It also offers powerful tools such as graph algorithms, natural language processing and the ability to factor in all decisions and versions of decisions made to develop a conceptual model of a complex site.

We at Menome Technologies feel that Neo4j has the potential to have a major impact on the world of geology and engineering, and we are working hard to use our team's domain expertise in environmental, oil and gas, engineering, geology and AEC to explore applying Neo4j's capabilities to the world of Geology and Engineering.

It seemed appropriate therefore to focus the second post in our series of Neo4j Spatial Experiements on modelling borehole data with Neo4j.

Modelling Boreholes With Neo4j

Boreholes area foundational aspect of many forms of geological model. Boreholes are a powerful tool for understanding what is below the surface of the ground, and are used in many forms of geological modelling:

  • Soil Characterization to understand the structural aspects of the ground for engineering, environmental or geotechnical work (foundation design, )
  • Groundwater modelling: Locating subsurface water resources for water wells or other uses
  • Contaminate Detection: finding where spilled hazardous materials are located (salt, hydrocarbons etc.)
  • Remediation: removing contaminates by pumping contaminated water out of the ground and treating it
  • Mining Exploration: deep hardrock boreholes that are logged to locate metals such as gold, silver, zink, copper etc.
  • Petroleum Geology: the now well known fracking technique relies on directed drilling of boreholes

All of these types of boreholes are well suited to being modelled with Neo4j.

To keep things simple though for this example I have chosen what is known as a Lithological soil classification borehole. These boreholes are reletively shallow and drilled into soil. The soil is logged using a standard classification method to identify key layers of soil.

The logs are used to delimit soil intervals down the hole. For example, a hole might contain 3 meters of Till, 1 meter of sand, 2 meters of boulders and then bedrock. The next hole beside it might have 3 meters of till, 2 meters of boulders, then bedrock. In this example, when the geologist interprets the two holes, the like material intervals are connected between the holes. The sand 'pinches out' somewhere between the two holes. This forms the basis of a simple geological model of the material beneth the ground.

For this example, we will do the first part of the process: taking the data from a set of borehole logs, and generating borehole intervals of linked lists in Neo4j.

Geology Data Visualization

While Modelling geological data is a big part of the equation of developing a geological model, being able to effectively visualize and work with the geological model is crucial.

We were very excited therefore when we saw what Kineviz had developed with the GraphXR tool. I reached out to the Kineviz team following the presentation they did on GraphXR in the Neo4j Developer community.

The Kineviz team have been great to collaborate with and have taking the borehole model example, and projected it into GraphXR. With their help, we were able to create a 3d visualization of the borehole data that is spatially accurate. GraphXR gives the ability to see the different layers, and manipulate the data set as well.

Details for this example including data, import CQL scripts and transforms required to generate borehole linked lists are located in the following GitHub Repo:

Borehole Example Github Repository:

You can check out the final visualization here, but its more rewarding if you build er from scratch!
Borehole Example GraphXR 3d Viz

Prior Spatial Experiments are in the root of the repo:

1 Like

Mike, interested in presenting this on Neo4j Online Meetup? CC: @mark.needham

Greetings @neo4j_devrel and @mark.needham! We definitely would love to do a meetup on this subject.

I have spoken with @sony and Weidong Yang at Kineviz who collaborated with us to bring the example to life using GraphXR about this, and we would love to co-present on the subject at an upcoming meetup.

I am also working on a follow up to the first post on walkscore spatial routing using neo4j, and will be using graphXR for that as well, so we could have a nice series on this subject.

Let us know what potential times are, and we'll coordinate accordingly.


1 Like

Let's connect via email - sometime in June work for you? Do you think 1-hour presentation is enough time?

Not being very familiar with GraphXR and after random clicking around using GraphXR, i managed (eventually) to render the 2d view on a map.
My question would be : what did you to display it as a 3d view (as from text "Move this into a 3d view for interpretation:")
Thanks in advance