Data Objects in Geological Modeling

Previously I’ve covered the process we use for finding oil. Now I want to discuss the modeling side of this. How do we model and represent the various geological entities we deal with.

I will cover the data objects roughly in the sequence in which they are used by a professional.

Usually we start by doing a seismic survey and drilling wells.


Today 3D seismic is normal. That means seismic data has a volumetric representation. We can think of the data being made up of a bunch of voxels. However this might give you a wrong idea of what we actually got. It implies that we measure the average of some value inside a voxel, and stamp each voxel with that value.

However each vertical stack of voxels can be thought of as a sinus wave shaped signal, which has been made discrete. So basically we got a stack of sampled values from this wave. This is important to keep in mind because a large positive cell (voxel) value could represent a large negative value instead. It all depends on whether there has been a phase shift of the wave or not.

Data Organization of a Seismic Cube

Lets talk about how the data in the cube is organized. As a user you refer to data by:

  • inlines (columns)
  • crosslines (rows)
  • layers (vertical time or depth slice)


Picture a cube and cut out a slice of it in the inline direction. This inline slice is the data that the seismic survey ship records in one go. It needs to move to record another slice. In simplified terms we may say each hydrophone (microphone at sea) records a seismic trace. This is a sinus wave because that is what sound is. We know where our hydrophones are located, so that is why the x, y position (or inline, cross line) position of a trace is known. What we don’t know is the depth of the rock formations which caused a sound reflection. That is why with a seismic cube we have x, y directions in meters, while the z direction is in milliseconds. The trick is to figure out how to do a so called “depth conversion” so we can get the depth of the cube in meters as well.


If the inline slices are perfectly aligned we can make a cut right across them to obtain the cross line section, profile or slice. Geologists seem to use many different words to describe this.


If we cut a slice horizontally in the seismic cube, we get a layer.

Geometry of a Seismic Cube

We can get data for a seismic cube representing traces, by specifying an i, j, k coordinates. A row, column and layer or alternatively a inline, crossline and layer number. However to complete the picture we need to know the geometry of the cube. Reading a specific value at the fifth row, second column and third layer doesn’t tell us where in space this is. To know that we also store meta data describing the geometry:

  • x, y, z coordinate of the corner trace.
  • inline and crossline increments which says how many meters in inline and crossline direction there is between the traces.
  • sample rate is distance in milliseconds or meters between layers (z direction).
  • orientation of cube. We use unit vectors in all directions to determine in which direction we got to add up inline, crossline and sample increments.

Very common for almost any kind of scientific data is that we keep track of which data is defined and not. So for a seismic cube we got a 2D boolean matrix telling us if a trace is defined or not.


You might think an oil well is just a hole in the ground but it something very complicated to represent well as a data type. Back in the old days when you drilled wells just straight down vertically, it might have been easy. But especially with offshore oil platforms things started getting complicated. To avoid putting a platform above every single location you want to drill into offshore, people started drilling holes sideways to get to more locations from just one oil platform. That means a drilled hole has lots of holes branching out in different directions.

Well Head and Mean Sea Level

The point where we start drilling is called the well head. With the well head we store its x, y coordinate in the world as well as its elevation. To be able to compare the height above ground for a well with other wells we need to define some common reference point. On earth that is what we call MSL (mean sea level). Since there are tides on earth and a number of effects which makes the sea level not even across the whole planet, we have to deal with an arithmetic mean. Airplanes would also reference their height above MSL. If you are on another planet such as Mars, without any sea level you would have to find another reference point. There it is defined as an atmospheric pressure. This works because pressure change with elevation.

Wellbores and Trajectories

A well contains many wellbores. Imagine a main hole with several holes branching out from it. Every branch going from the bottom of the hole to the top is a wellbore. This is easy to confuse with the concept of trajectory. A trajectory is a description of parts of the wellbore geometry. Let me illustrate with an example. I got a wellbore, lets call it A, going straight down. Branching out from this wellbore on the side is a wellbore, B. B is a side track. There will be a trajectory T, going all the way through wellbore A. For B there will be a trajectory S, which only describes the geometry going from the bottom of B to the intersection point with A. That means to get the full geometry of B from the well head all the way down to the bottom, you need to combine both trajectory T and S. But only the part of trajectory T down to the tie in point of B should be included.

Trajectories and Survey Points

We have different kinds of trajectories. We can have a planned trajectory e.g. which means it has some geometry, but a physical hole with this geometry doesn’t actually exist yet. This is just the trajectory the person drilling the hole intends to follow to reach the desired target. Because we are drilling with a steel string, there are limits to how much we can curve the drill string. So planning a trajectory to a target involves finding a trajectory which doesn’t bend too much at any given point.

A drilled trajectory, represents an actual physical hole. The trajectory is composed of a number of survey points which describes the trajectory. In a perfect world these would just be x, y, z coordinates of every point along the trajectory. However you can’t measure coordinates directly. Instead what happens while you drill is that at regular intervals you record how far you have drilled, which is what we call measured depth, MD. That is roughly equivalent to the length of the drill string. Close to the drill bit there are various measuring instruments such a gyroscopes, which measures the angles the drill bit is pointing in. The azimuth tells us the rotation and the dip, how much it is pointing up or down. By integrating a number of short straight lines with a given dip and azimuth along the whole trajectory we are able to calculate the x, y and z coordinates of the survey points. Of course since neither azimuth or dip is known with 100% accuracy the uncertainty of the x,y and z coordinates grow with the depth.

We can imagine the real drilled trajectory exists inside an envelope around the calculated trajectory. The envelope has the shape of a funnel, which is large at to bottom where uncertainties have accumulated to their highest values and thinnest at the top, where we are most certain of the positions the drill string went through.

On the survey points we store all this information:

  • Measured depth
  • Azimuth
  • Dip
  • X, Y and Z.
  • Uncertainty Ellipse.

Log Data and Logruns

To help figure out what the geology of the subsurface looks like, oil companies drop down measurement instruments attached to a wire down the the drilled trajectories. Sometimes they got measurement devices attached to the drill bit itself, or rather above it. All measurements done with from different instruments attached to the wire is called a log run. So a log run has several associated logs, once for each instrument. Of course you can measure multiple times and do several logruns. Logs derived from a set of logs on one log run will usually be stored on the same logrun because they have the same sample rate in depth. For each logrun there is one associated measured depth log, which tells us what the depth is of each measured log value. E.g. if you want to know the depth of the third measured value on your porosity log, you have to look at the third measured depth value stored on the MD log of the logrun.

Wellpicks, Markers or Welltops

There are several names for this, but I will refer to this data as wellpicks. Unlike seismic, logs and trajectories these are not something you measure but something a geologist interprets. The geologist wants to create models of the subsurface geology made up of layers of rock. In the seismic data we see the change from one rock layer to another as a reflection of the acoustic signals (sound waves). We want to be able to identify these changes from one layer to another in the wellbore as well. To do that geologists look at log data and try to identify places where log values indicate a significant change. The points along the well trajectory picked because they indicate a rock transition are called wellpicks.

A well pick is a point defined by the trajectory it is on and the measured depth along this trajectory. However we associate a lot of other kinds of data with a wellpick. With the wellpick we can store the azimuth and dip angles we get from the survey point at that angle as well as the x and y coordinates we can derive from that through integration. The x and y coordinates are usually referred to as east and north.

The actual depth calculated is called TVD or true vertical depth. This is different from MD (measured depth), as it measures the shortest distance from the wellpick to mean sea level. MD is the distance along the trajectory to the the wellhead (location on oil platform from which the well was drilled).

Iscochore Picks (Wellpick intervals)

Each rock layer between wellpicks have certain properties such as:

  • porosity. Cavities in the rock. Think sand stone, which has a lot. Important to know to estimate how much oil can be stored there.
  • permeability. Connections between cavities in the stone. If there is no permeability, then the fluids inside the cavities can’t flow.
  • resistivity. Electrical resistance in the rock. Allows us to distinguish between rocks containing oil and water. Rockes soaked in water will conduct electricity better than rocks soaked in oil.
  • acoustic impedance. Resistance against an acoustic signal. Affects the velocity of sound. It is changes in acoustic impedance which causes reflection of sound waves.

Wellpicks can’t store these kinds of properties because a pick is just a single location. However we got picks representing an interval Isochore picks. These are defined by an upper and lower regular wellpick. Since it represent an interval we can store porosity, permeability and other properties with it.

Horizons and Wellpicks

The area between two rock formations is referred to as a Horizon. This area can have many different forms of representations such as lines, points or surfaces. I’ll talk more about that later. A horizon data type in geological modeling is thus often more like a container of other objects offering different representations of the horizon.

A geologist will look seismic data to identify horizons and faults. This is called seismic interpretation. What they are looking for are strong reflections of acoustic signals, which signal a transition between two clearly different rock formations. At least with a difference in composition which cause a difference in acoustic impedance (resistance against an acoustic signal).

The surfaces, points or lines created by the geologist to represent a horizon will have its depth in time, because the depth on seismic cubes is in time. We need to convert these into depth in meters or feet, otherwise you don’t really know the location of anything in the subsurface. Wellpicks are one of the data types aiding in this effort. Because they mark transitions between rock layers, they can be used to correlate time surfaces with depth data.

On wellpicks marking horizons we store the horizons intersecting the well trajectory at the point where the wellpick is located. Initially that may not be the case, but we try to adjust horizons so they go through where their corresponding wellpicks are.


Rock layers don’t lie smoothly on to of each other, on after the other. Rather the earth moves due to earth quakes and the rock layers get shifted relative to each other creating what we call faults. That means horizons also have have areas where they are shifted up or down. Faults is an abstraction or container for all the data types which may describe the surface between the horizons making up the fault. A geologist may have interpreted a fault looking at seismic and created multiple polygon lines, called fault sticks. These could have been further processes into a surface representation.


A zone is an abstraction of what is found between two horizons. While a horizon wellpick helps us define a position of a horizon, Iscochore picks help define the thickness of the zone between two horizons. However we also have surfaces, we call isochore maps, which is a 2D representation of the thickness of the zone at different locations. There are other representations such as:

  • thickness points
  • isochore lines

Representations of Horizons, Faults, Zones

As mention before abstract concepts such as horizons and faults have many possible concrete representations. Lets talk about the most used representations. All of these types are usually represented by 2D grids. Mathematically speaking this is a matrix. In programming terms it is a 2D array. If you draw this as a grid on paper, then we refer to the intersections of lines as nodes. In some software this may be referred to as vertices. The little squares are called cells.

Each value stored in a 2D array can then be made to represent a height (z-value) on a surface. The x and y coordinates are given indirectly by the row and column number of the element. There are several ways of solving this. One is to store an increment in each direction so that we know how many meters are between each node. We can then simply multiple the indices with the increments to get the x, y position.

We can generalize this further and say that the matrix (2D array) contains coordinates in the u-v-w space. If we multiply these coordinates with what we call a basis matrix (affine transformation) we get the x, y, z coordinates. We don’t need this to represent horizons since they are layered horizontally. But for faults this is useful. The basis matrix allows us to represent a fault as a rotated surface.

The isochore maps (zones) can of course be represented like horizons. Except for them the z value for each grid node would not mean a depth but a thickness.

Trends and Residuals

Trends are basically function which give information about spatial distribution or variation of some geological attribute or feature. One trend could get e.g. that porosity increase as you go deeper in a zone. Trends could be one dimensional, meaning you have a function taking one argument and giving one value as a result. Essentially you got a graph. However it could also be 2D taking two arguments such as x and y. A trend would then be represented as a 2D surface just like a horizon, or it could be a cloud of points.

Trends are used in a statistical context. If we sample some data and put it in a plot, we can find a line going through most of the points using e.g. linear regression. This line is the trend of the data. We call the difference between the trend and sampled data points residual.

So we can think of any geological feature as being made up of both a trend and a residual. The trend gives the overall global shape, while the residual gives the small local variations.

Grids and Parameters

Well logs are used to make wellpicks. Together with time surfaces interpreted from seismic cubes we create depth surfaces representing horizons and faults. Together with zones this is used to define a structural model. This becomes the foundation for creating a 3D grid. The grid is made up of many layers of of cub sized cells. The Grid is divided in many different ways. It is divided into zones and it is divided by the faults forming fault blocks. In geological modeling, what we refer to as the Grid, is all about the geometry. It defines how the structure is layed out geometrically in space. We have separate cubes of data (3D arrays) containing data about each cell for different properties.

So Grids like Seismic cubes split the data and geometry into two different data structures. The data is stored in parameter objects which could represent e.g:

  • Porosity
  • Permeability

So if you read out a porosity value from the porosity parameter at column, row, and layer i, j, k then you must specify the same i, j, k in the grid to get the position or location in space of this value. At least that is how it works conceptually.

Geek dad, living in Oslo, Norway with passion for UX, Julia programming, science, teaching, reading and writing.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store