Skip to main content

The technical webinars are delivered as 4 standalone modules.


This 4-part technical webinar series is designed for you to learn how to bring contaminant data directly into your Leapfrog Works 3D geological models and characterise, visualise, and create auditable estimates of contaminant mass and location in land and groundwater environments. Sessions 2-4 include a live Q&A at the end.

Webinar Data

Session One:

  • Introductory video: Leapfrog Basics – Importing data and building a model


31 min

See more on demand videos


Find out more about Seequent's environmental solution

Learn more

Video Transcript

<v Jeffrey>Hello, and welcome to the first</v>

of a four-part webinars series where we highlight

the workflow of the contaminants extension.

My name is Jeffrey McKeon,

a project geologist with Seequent out of Denver,

and I will be leading you through this workflow.

So in this initial webinar,

we are going to discuss how to import data.

We’re going to import a variety of data including maps,

GIS vector data, lithological data, contaminant data,

as well as an elevation grid.

We are then going to validate our data in Leapfrog Works

in order to standardize it for use

and downstream modeling processes.

We will then build a geological model

representing our lithological units

using our borehole interval data.

Then we will build a water table model

using the GIS vector data and borehole data.

Before jumping into the modeling process,

I just wanted to highlight the input data

that we are going to use for this project.

So that is located in this folder here on my computer.

So we have an aerial photo,

which is just an aerial map as a TIF file.

We then have our borehole information.

So we have our collar, contaminant intervals,

and our geology intervals as a CSV file.

We also have our topography as a MESH file

and our water table as a shapefile.

I just wanted to touch on the borehole tables.

So our collar table is composed of a hole ID,

an XYZ, our Easting, Northing, and elevation,

as well as max depth.

Our geology table is the hole ID,

from, to, and the geology interval.

And then our contaminant interval table is our hole ID,

from, to, and then our contaminant analytes.

So now jumping into Leapfrog Works.

This is the interface of Leapfrog Works.

It’s split up into three different components.

You have your project tree,

which is where all of your data is housed.

You have your scene view,

which is where you visualize your data in the 3D space

and the shape list, which is anything that is visualized

in your scene view will appear here

just so you can keep track of what you are viewing.

Jumping into the project tree,

the project tree was built in a top-down approach.

It is workflow oriented.

So at the top you have your typography

and all of your inputs like your GIS data, borehole data,

points, polylines, geophysical data.

Moving downward into what you build

in Leapfrog Works being your geological models,

numeric models, contaminant models.

Moving further down, then you have your saved scenes

and your cross sections.

I’m going to discuss most of these folders

starting at the top.

So, first we’re going to build our typography.

Typography can be built from elevation grids,

from a surface, from GIS vector data, as well as points.

In this case, we have a surface.

So, first I need to load that surface

into the appropriate folder.

So I’m going to right click on Meshes, select Import Mesh,

and select my typography mesh.

I am okay with the default settings,

so I’m going to go ahead and click OK,

and that will start the import process.

In Leapfrog if something is importing

and you want to see where it’s at in the processing,

or just anything that’s processing in Leapfrog,

you can click this

and you can see what exactly is processing.

And once it’s done processing, this box will turn black.

We can see that there’s nothing processing now,

meaning our typography has successfully loaded.

We now need to take this input file

and build our topography from it.

So I’m going to right click New Typography, From Surface

and then select the surface that I just imported.

Click OK.

I’m okay with naming it topography.

And again, it’s done processing,

and now we can pull this into the scene.

To view anything in the scene,

all you do is click and drag and drop,

and then it will appear in your scene view.

And like I said, anything viewable,

anything that is in your scene view will appear

in the shape list down here.

So now that we have our topography,

I want to drape a GIS map onto my typography.

So first I need to load that into the appropriate folder.

So again, to import anything, you right click.

I’m going to import map.

So this specific map is already geo-referenced,

but I just want to note that you can geo-reference images

in Leapfrog Works as well.

So once my map is loaded,

if I want to drape either the map

or any of the GIS vector data that I have imported,

I’m going to come into my shape list.

And underneath my typography,

you can see this GIS data little drop-downs.

I’m going to click that, go to maps and photos,

and select the map that I just imported.

And here we can see that that was successful.

So now that I’ve imported my typography,

I’m going to move on to import some borehole data.

So again, to import anything into these folders,

you just right click.

With boreholes, we have the ability to import a local file

like a CSV, text file, or DAT file.

We can also import via Central,

which is sequence cloud-based data management software.

We can import via an ODBC like Access.

We also have the ability to connect to gINT,

and then you can also import via OpenGround Cloud,

which is Bentley’s cloud-based

geotechnical database software.

In this instance, I have a local file.

So I’m going to select import boreholes,

click on this little folder, and select my collar table.

I’m going to press Open.

We can see here

that it automatically pulled my geology table.

So I just need to add my contaminant interval table.

In this project, we don’t have a survey survey table,

because all of the holes are vertical.

You can also import downhole points in this initial import.

Once I’m happy, I’m going to click Import,

and it’ll bring up this screen.

This is just where you map the columns in the CSV file.

So we can see here that Works

has automapped these correctly, hole ID,

East, North, elevation, and max depth.

This has also automapped correctly hole ID,

from, to, geology.

For the contaminants interval,

I just need to designate these as one of these data types.

So I’m going to map these as numeric.

This is really important

if you want to use these as numeric values

in your modeling process,

especially for numeric models

and the contaminants extension.

So I’m going to map these as numeric values.

And once I’m happy with that, I’ll select Finish.

And then that will put these in my borehole table.

So we can see here initially that one of them has

a little red circle with an exclamation point,

and one has a little yellow triangle

with an exclamation point.

That means that there are errors in these files.

So to jump into our modeling process,

we need to fix these or else they won’t be usable.

So we can see here,

I just dragged the contaminant interval data into the scene,

and we can see that there’s very limited data.

All of our analytes aren’t mapping correctly.

So this is not usable.

So we need to fix this

before we jump into the modeling process.

To do this, I’m just going to right click

and select Fix Errors,

and that’s going to bring up this table,

so we can see that there’s some invalid depths

and some invalid values handling.

I’m going to jump into this one first, starting with total.

So we can see here that this is broken up

into three different parts.

We have missing values.

So this defaults to omit these missing intervals,

which I am okay with.

Non-numeric values, we can see that the default action

is to omit these as well.

I’m going to want to use these.

We can see in this right hand column

that these are the non-numeric values.

So a lot of times when a value is below the detection limit,

they say that it’s less than the lower detection limit.

Leapfrog can’t use this as a numeric value,

because this symbol is not numeric.

So what we are going to need to do is replace this with…

And whenever I see this,

I just do half of this detection limit.

So I’m going to do 0.05.

And then jumping down to numeric values,

it says we have 11 non-positive values.

Those are just these zero values here.

I’m going to keep these.

It’s really important that you keep these.

Especially in your using the contaminants extension

for domaining off this plume,

you’re going to need these values.

So once I’m happy with these rules,

you’re going to come up to this red box

and tick on These rules have been reviewed.

And then you can see here that now this has valid values

indicated by there not being this little red circle.

I’m going to go ahead

and jump through all of these really quickly

and be right back.

So now that all of my values

do not have the error symbol anymore, these are all valid,

I’m just going to jump up into this invalid depth.

So what we have here is…

Okay, so we have a hole ID and we have a total contaminant,

but we don’t have a from, to.

So in this scenario, there’s an issue with your source data.

You would probably need to go back to your database manager

and figure out what the issue is.

For the purpose of this project,

I’m just going to ignore these for now,

so we can move forward.

And select Save.

And so now we can see that there is no error

in the contaminant intervals.

So now we can use this in the modeling process.

So I’m going to exit out of this.

Now I’m just going to look at my collar table.

So whenever it’s a yellow symbol and not a red symbol,

that means that Leapfrog Works has identified some issues

with the source data,

but you can still use it in the modeling process.

So we can see here that it’s just duplicate collars.

In this scenario, I’m okay with this.

So I’m just going to leave it

and know that these will be used.

So now that my borehole data is loaded

in its proper location,

I’m just going to pull it into the scene.

So this is my geology table.

To view the legend, just come down into the scene list

and click on this button,

and that will put the legend into scene view.

And for contaminant intervals,

there were multiple columns in this table,

meaning there’s multiple different analytes.

So if I want to visualize these,

I just click on this dropdown.

I’m going to click on Total

in this instance, and I’m going to click on this.

This just makes them 3D.

I’m going to decrease the lines,

the line radius for my geology intervals,

and I’ll keep it there for my contaminant intervals.

So now we have all of our borehole information loaded

and validated.

Now that all of this is loaded,

we can jump into the geological modeling process.

So I’m just going to collapse this to clean it up

and jump down into this folder right here.

To start a new geological model,

all you do is right click on this folder

and select New Geological Model.

That will prompt this box to open.

So you’re going to want to select your base lithology column

here just geology.

You also set the surface resolution here.

All of the surfaces and meshes in Leapfrog

are triangulated meshes.

So this surface resolution just means

that depending on the unit that the project is using,

either meters or feet,

it means that each triangle will have 1,000 meter faces.

You also set the model extents here.

You can do this manually by entering them.

You can also jump into the scene view

and adjust this transparent box using these arrows,

or you can enclose an object.

This is what I prefer.

So I’m modeling my geology.

So I’m going to enclose my geology.

And here we can see that it created

an appropriate sized extent to this geological model.

You can then name it.

I’m going to just keep GM and select OK.

So again, we can see that this is processing right here,

and this is the geological model that I just built.

It’s gray, because it’s still processing,

but the geological model is split up

into five different parts.

You have your boundary,

which is just the extents of your geological model.

Those are the extents laterally that you just set,

as well as the bottom.

Leapfrog automatically clips the upper bound

to the topography.

You also have your fault system.

So there’s no fault in this project,

but you have the option to create a new fault

from multiple different source files.

You have your lithology,

which is what we just set as the geology interval table.

And then probably the two most important folders

in the geological modeling process,

the surface chronology folder and the output volumes folder.

So I’m going to clear this, open this.

So, initially in the model building process,

Leapfrog creates this unknown output volume,

and that just fills up your model extents.

To parse this apart into units

that represent your geological units,

you need to create surfaces.

To do so, right click on Surface Chronology.

And there’s an array of different surface types

that you can create.

I’m not going to jump into these in too much detail,

but we do have training documentation

on the MySeequent page.

So in this case,

I’m going to start off with an erosional surface

and select From Base Lithology,

because I’m using one of these units.

All right, so in this table,

you’re going to want to first select your primary lithology.

So I’m going to start by modeling this blue unit,

the outwash deposits unit.

So I’m going to select that.

You then have the option of choosing contacts below

or contacts above.

Because this is my upper unit and there’s nothing above it,

I’m going to select Use contacts below.

That’s going to then calculate every single time

that my outwash deposit unit contacts another unit

at its lower boundary.

We can see here that it only contacts till,

and it does that 21 times.

And when I’m happy with this, I’m going to select OK.

I’m also going to double click on my geological model

and look at the surface generation.

So here we can see that the surface resolution is at 400.

Because I’ve been building all of my surfaces

with a resolution of 30, I’m going to stick with that.

I’m also going to under Snap to data,

select All data

and click OK.

So I selected All data,

because whenever a surface is being created,

what Leapfrog does initially is creates a points object.

So this points object right here

will create a point at every one of these contacts.

And then with these points,

it will create a surface going through those.

If you select Snap to all data,

that means that it will snap directly to these points.

So I’m going to drag these points into the scene.

I’m going to increase their size to 30,

so that we can see the points.

Maybe less, maybe 10.

And I’m going to toggle off the geology intervals.

So just keep an eye on these contact points right here

to see where those points are created.

And if I toggle off geology,

you can now see that there is a point object

that was created at these contacts.

With this point object, it then creates this surface.

So once we’ve created the first surface,

I’m just going to jump through and create surfaces

for all of our other units.

I’m going to select Deposit this time.

I’m going to model my outwash and local ice contact deposits,

contacts below, contacts till 27 times.

I’m going to select OK.

I’m also going to create a surface for my till.

And that should do it.

Now that I’ve created these four surfaces,

I then need to activate them.

You do this by double clicking on the surface chronology.

To activate all of them, you click this upper tick box.

You then need to sort them

and their cross-cutting relationships

or their young relationships.

So the bedrock surface will be the oldest,

and I’m just going to move the till

and outwash deposit contacts up.

So once you’re happy with this, select OK.

And now what it’s doing is generating output volumes

for each of your respective geological units.

We can see that here.

Now there is no…

I’m going to pull these surfaces that I created in,

and then start pulling these units in.

And we can see here that our geological model is built.

If you wanted to audit your geological model

to see how well it honors the data,

you can turn on the geological model.

You can also turn on your forvals.

Then you’re going to come up to this upper menu.

There’s multiple options up here.

There’s a measuring tool,

so you can measure different units.

You can also get strikes and dips with this tool.

We have a

tool to draw a plane.

This is useful in multiple model building processes.

You can also draw a slice through your scene view,

which is what I’m going to do now.

I’m just going to draw a slice from West to East.

I’m also going to turn off these surfaces,

so that it’s just the geological model

and the geology intervals.

I’m also going to, in this tab,

you can adjust the transparency.

So I’m going to turn the transparency down,

so that I can see the boreholes

as I’m toggling through this model.

You then come to your keyboard and you hit the period

or the comma to move through the model.

So I’m going to bring it all the way to the front.

And as I move it backwards,

just watch the boreholes

to see how well they’re being honored.

So here we can see it’s doing a pretty good job.

And when we’re happy with that,

we have validated our geological model.

So now that the geological model is built,

I’m going to move on and build a water table model.

So I’m going to go ahead and clear the scene.

You do that by clicking this little trash icon

with a screen, and that will clear everything

out of your scene view.

I’m also going to come up and right click

on Project Tree and select Collapse all rows

just to clean everything up.

And now I’m going to jump into my model building process

of my water table.

As I showed you previously in our input data,

we have vector data that represents our water table.

So I’m going to import that now.

I’m going to come up to this GIS data maps and photos,

right click and select Import Vector Data.

I’m then going to select the shapefile

and select Open.

I’m happy with the default settings,

so I’m going to click OK.

It will then come up with this tab

and ask if you want to filter the data or not.

I’m not going to filter the data,

because I want to keep the elevation.

So I’m going to select Don’t Filter Data.

And then that will import my water table vector data.

I’m just going to drag that into the scene,

so we can visualize it.

What I need to do now is create a surface

for our water table, so that we can use it

in the modeling process.

To create a surface, you’re going to come down

to the meshes folder.

Right click and toggle down to New Mesh.

There again are multiple input source files.

In this case, I’m dealing with GIS vector data.

Going to select our water table.

I am then going to…

This is where you select the extents.

I want my water table model to be the same extents

as my geological model, so this is fine.

And again, we need to adjust the surface resolution.

I’m going to stick with 30,

because it’s nice to have the surface resolution

standardized throughout your project.

Click OK.

And then that will digitize our water table as a surface.

I’m going to bring that into the scene.

And here we can see that we now have a surface

for our water table.

Once we have this,

we can go ahead and build the geological model

for our water table.

So we’re going to right click again,

select Geological Model.

In this case, I’m not going to use

the geology interval tables as our base lithologies.

So I’m going to select None,

change the surface resolution to 30,

and then, as I said, previously,

I want to maintain the same extents,

so I’m going to select the extents of my geological model.

I’m also going to change the name to water table

and select OK.

So that will generate our water table geological model.

In this instance, because I didn’t use an interval table

or any of our borehole data,

I’m going to have to create lithologies.

So I’m going to open Lithologies, select this plus button.

So in this case, I’m going to model my vadose zone

my saturated zone,

and my bedrock.

I’m also going to change these colors to something different.

This is just a preference.

So my vadose zone is going to be pink.

My saturated zone, I’m going to make it a little darker blue,

and then my bedrock, I’m going to make that gray.

And once I’m happy with this, I’m going to select OK.

So we’re going to do roughly the same process.

You’re going to start in your surface chronology.

Right click, New Deposit.

This time, instead of selecting base lithology,

we are going to model from surfaces.

So I’m going to select From Surface

and select my water table surface that I just created.

I’m then going to jump into my lithology

and, say, because the water table is the surface

between my vadose and my saturated zone,

I’m going to say first lithology is vadose is younger

than my saturated, and my saturated is older.

When I’m happy with that, I select OK.

And that will create the surface,

which is just this same surface right here.

I also need to create a surface for the interface

between my bedrock and my saturated zone.

So again, I’m going to right click on Surface Chronology,

New Deposit, From Surface,

and then just going to come down to my geological model

and select the bedrock surface that I created

and the geological model that I created previously.

And select OK.

And here, I’m going to say my saturated sown is younger

than my bedrock.

Select OK.

I’m just going to toggle off the water table mesh

and pull in my new bedrock surface.

So you can see here that the colors on this surface

that I created in my geological model

are indicative of the lithologies that I created.

This upper surface will be my vadose zone.

If I turn this, let me toggle this off for a second,

if I turn this surface over,

we can see it’s blue for my saturated zone,

and then the same thing for the other surface

that I created.

So it’s blue on top.

So this is my saturated.

And on the bottom, it is gray,

which is indicative of my bedrock.

So I’m happy with that.

So these surfaces are built.

So I’m going to double click on the Surface Chronology,

toggle them both on,

put them in the correct order, and select OK.

And this will then generate my output volumes

for my water table model.

And those are done generating.

So I’m going to toggle the surface off

and just pull this water table model in.

And here we can see that we now have a water table model.

I’m just going to turn on the legend.

All right, so here we can see

that this water table model honors the data

that we used as input data for the specific model.

So with that, we have completed our workflow

for this portion of the webinar.

Again, we imported our data,

our GIS data, and our vector data.

We imported our borehole data,

and then went in and validated it,

as well as our meshes.

We then created a topography,

as well as our geological model for our water table

and our lithology data.

So that bookends the content we are going to cover today

in this webinar.

Next week, we will look into domaining

through statistical analysis of our contaminant population

with respect to the models that we built today,

as well as build some numeric models.