Integrating geotechnical data with an online application


Geotechnical engineering soil sample
If you are a geotechnical engineer, you probably recognize how slow and tedious it can be to interpret CPTs, create 2D soil layouts, and set up your models with all soil properties. Especially when working on larger projects with 10 or more CPTs involved. When working on large infrastructure projects, such as dikes, highways, or tunnels, creating these models can even become your daily job. In this article you can read how you can do this more easily using a set of tools that helps you save time and make your geotechnical data more insightful, called GeoTools.

Introduction to GeoTools

What are the GeoTools?

Over the years, developers at VIKTOR have worked in several civil projects have seen the amount of time and energy that is wasted interpreting CPTs, creating 2D soil layouts, and setting up models. This isn’t fun work, so we decided to do something about it: We teamed up with geotechnical engineers across the industry to create the best set of tools to help you save time and make your geotechnical data more insightful. We call them: The GeoTools.

Of course, we want everyone to use and help improve GeoTools. That is why at the end of the article you will find a link to request free access.

In this video, you can see a demo of the GeoTools on the VIKTOR platform.

Saving time

As the size of civil engineering projects grows and the amount of available data continuous to increase, the average geotechnical engineer is expected to do even more number-crunching on soil data. They must provide an increasingly accurate interpretation of the soil layout and everything that is necessary to perform detailed analysis on foundations, settlements, or other geotechnical projects. However, not every civil engineering project requires the same processes to follow or the same type of soil interpretation. Since most of these tasks are everyday things, a custom application that solves one task very well isn’t required. However, it would be very useful to have something that can save the geotechnical engineer a lot of time from day one.

Centralizing datasets

The GeoTools application is a compilation of several geotechnical tools, functionalities, and digital buildings blocks that can be used in the daily work of any geotechnical engineer. The soil datasets that are at the core of every geotechnical analysis are centralized in the VIKTOR platform, where GeoTools is also hosted. The application provides a variety of tools to reduce the amount of repetitive work for the engineer while also improving their insights based on the ever-expanding datasets. The GeoTools app provides numerous of tools related to:

  • Storing and interpreting soil data,
  • visualizing and cleaning this data,
  • preparing in-depth geotechnical analyses,
  • and integrating the data with other software packages or databases, such as ArcGIS or the BRO database.

Continue reading to learn more about how why we have chosen to create the GeoTools as they are, what tools are implemented, which are still to come, and how they are offered to geotechnical engineers.

illustration of free trial

Start building apps now

Try for free

Requirements of GeoTools

To create an app that helps any geotechnical engineer in their day-to-day work, we needed an overview of the most frequently performed tasks. For this, we contacted many different geotechnical engineers from many different of our existing clients individually to gather their feedback and gain more insight into their daily jobs.

First Minimum Viable Product

The First Minimum Viable Product was released exclusively to these geotechnical engineers and contained an initial set of tools. To promote transparency, enable sharing feedback, and viewing possibilities of the app from different perspectives, all engineers from different companies were given access to the same app, sharing the same experience and the same data. This allowed them to not only experience how the app works, but also how fellow engineers were using it. The app contained a section where any used could leave feedback, upload screenshots, and provide new ideas and concepts for improvement. This enabled users to all be very involved in the development process; we work with geotechnical engineers, rather than for them.

By engineers, for engineers

Following the same philosophy, new versions are continuously released and tested. In addition, periodical feedback sessions are organized with geotechnical engineers to agree on upcoming developments to ensure real value for every geotechnical engineer. The GeoTools is the first app for which we have applied this philosophy, and with great success! Many more applications have already followed, and soon the VIKTOR App Store (see: demo environment) will be filled with a wide variety of applications created for engineers and developed by them!

If you have an idea for an application that you would like to have as part of the app store, or if you would like to develop an application (together with us), please contact us. We are happy to talk with you about all the possibilities!

The GeoTools application

How to create successful application that ensure adoption

Build successful applications

Learn how you (developer, engineer, end-user, domain expert, project manager, etc.) can contribute to the creation of apps that provide real value to your work.

Get now

Functionalities of GeoTools

With the GeoTools, geotechnical engineers can manage, structure, and visualize geotechnical data to ensure availability, accessibility, easy classification and interpretation, and better insights.

Visualization of geotechnical data in the VIKTOR app

Managing geotechnical data

The GeoTools provide a platform for uploading and storing soil data, in this case a Cone Pressure Test (CPT) dataset. This can be in the form of (the most used) GEF-files, but also as XML-files or even downloaded directly from the BRO database. This ensures that the soil data is centralized and available regardless of the format it is in. In addition, because GeoTools is a web-based app, you and all your colleagues can access the data you are working with always and from anywhere!

How to automate interpretations and speed up geotechnical calculations.png

Structuring geotechnical data

Another module within the GeoTools is about the classification and interpretation of CPT data. This module cleans and filters the data so that it can be used in subsequent analyses. Geotechnical engineers can select the type of classification method that is used. The different options are:

This filtered data is visualized so that geotechnical engineers can easily inspect it and update as needed.

Visualizing geotechnical data

The GeoTools also provides insights on an even higher level. The location of all CPTs can be shown in map or satellite view. From there, you can select multiple CPT datasets and compare them side-by-side (also see: open-source CPT comparison app) to see how the soil changes from one point to the next. By combining several CPT datasets, a 2- or 3D interpretation of the soil layers can automatically be calculated and visualized in an intuitive and interactive 2- or 3D plot. Additionally, geotechnical engineers can manually modify the automatically generated soil layouts if desired. These visualizations are helpful in many types of civil engineering projects, such as pile foundations, dykes and dams, or road construction.

illustration of platform

Build any application you can imagine

Explore the platform

Integrating GeoTools

GeoTools seamlessly integrates with several external software packages. This ensures you that the tedious steps required to set up a calculation in any of these software packages can be reduced to a single click of a button, which reduces time to set up a calculation from a couple of minutes down to a few seconds.

Deltares software package

By integrating with one of the Deltares software packages, you can use the available soil data and interpolated profiles directly in several geotechnical analyses.


The current version of the GeoTools application integrates the soil layout data with the D-Settlement, allowing users to quickly set up advanced soil settlement calculations.


Exporting the soil latyout and properties to D-Foundations is also possible (see: Automation in D-Foundations for more in-depth information on how such an integration works).

Integration of data in deltares software packages

Data integrated from Deltares software packages in the GeoTools

In the next update of the application, other software packages can be integrated, such as D-Stability, D-Sheetpiling and Plaxis.


Don’t hesitate to contact us to let us know which software packages you would like to integrate with, and why! If you think that the GeoTools can help you save time and better understand your geotechnical data, apply now for a demo account to try it out in the demo environment.

Go to the demo environment

illustration of free trial

Start building apps now

Try for free

Out-of-the-box or custom

In this section, we will explain how you can program your own applications using the digital building blocks of the GeoTools. This is an advanced topic for those that know how to use Python. Feel free to go straight to the conclusion of this blog post if you feel like you have enough information now!


With a standard app like the GeoTools, there is no need to go through the process of developing a fully customized application. Clients don’t have to spend time building useful applications either; end users can start using the tool from day one. If you are interested in the full application, you can find it in the demo environment. More information on the all the technical functionalities of the full GeoTools application can be found here.

Source code availability

Fortunately, clients not only have access to a plug-and-play application that is suited to their every need, but they also have access to the source code of the app. This allows any engineer to add additional tooling to customize the GeoTools to their unique process, while having a solid foundation for the basic functionalities. Not only does this make the application extremely customizable, it also helps developers by providing a set of pre-assembled digital building blocks that they can inspect and re-use in different applications.

An example of the GEF building block, as well as a cross-section building block are provided in the Python code snippet below:

1from viktor.geo import GEFFile 2from viktor.geo import MapPoint 3from viktor.geo import SoilLayout 4from viktor.geo import RobertsonMethod 5 6class Project(ViktorController): 7 def get_gef_file(self): 8 “””Obtain a GEFFile object from the example GEF file””” 9 Return GEFFile.from_file(“Example.GEF”) 10 @View(‘Soil Layout’) 11 def visualize_soil_layout(self): 12 “””Visualize the Soil Layout in a View in the web-browser””” 13 gef_file = self.get_gef_file() 14 15 # Get Soil Layout by classifying GEF using the Robertson Method 16 soil_layout = gef_file.classify(RobertsonMethod(soil_properties)) 17 return soil_layout.get_visualization() 18 19 @View(‘Map’) 20 def visualize_gef_on_map(self): 21“””Visualize the GEF in a Map in the web-browser””” 22gef_file = self.get_gef_file() 23return MapPoint(gef_file.coordinates)

Each of the modules in the application’s source code is extensively documented and even published as a seperate 'sample application', so that any developer who looks under the application’s hood knows exactly what is going on and can quickly tweak the code to their personal needs.

Open-source Python code for the following modules is all hosted within the VIKTOR GitHub repository. Below are code snippets from the repositories of a couple of the functionality from GeoTools that are also offered as seperate sample application within the demo environment.

AHN elevation profiles

1@MapView(‘Map’, duration_guess=1) 2def get_map_view(self, params: Munch, **kwargs: dict) -> MapResult: 3 """Set the map view on which the line can be drawn for which the AHN values are wished to be known""" 4 features = [] 5 if params.geo_polyline: 6 features.append(MapPolyline.from_geo_polyline(params.geo_polyline)) 7return MapResult(features)

CPT comparison

1from viktor.geo import GEFFile 2 3@ParamsFromFile(file_types=['.gef']) 4def process_file(self, file: File, **kwargs) -> dict: 5 """Process the CPT file when it is first uploaded""" 6 cpt_file = GEFFile(file.getvalue("ISO-8859-1")) 7 return cpt_data_object.serialize()

CPT interpretation with Robertson

1def classify_cpt_file(cpt_file: GEFFile) -> dict: 2 """Classify an uploaded CPT File based on the selected _ClassificationMethod""" 3 try: 4 # Parse the GEF file content 5 cpt_data_object = cpt_file.parse(additional_columns=ADDITIONAL_COLUMNS, return_gef_data_obj=True) 6 ground_water_level = get_water_level(cpt_data_object) 7 8 # Classify the CPTData object to get a SoilLayout 9 soil_layout_obj = cpt_data_object.classify(method=RobertsonMethod(DEFAULT_ROBERTSON_TABLE), 10 return_soil_layout_obj=True) 11 12 except GEFParsingException as parsing_exception: 13 raise UserException(f"CPT Parsing: {str(parsing_exception)}") from parsing_exception 14 except GEFClassificationError as classification_exception: 15 raise UserException(f"CPT Classification: {str(classification_exception)}") from classification_exception 16 17 # Serialize the parsed CPT File content and update it with the new soil layout 18 cpt_dict = cpt_data_object.serialize() 19 cpt_dict['soil_layout'] = soil_layout_obj 20 cpt_dict["groundwater"] = ground_water_level 21 return cpt_dict

Continue reading here for an overview of all sample applications.

illustration of platform

Build any application you can imagine

Explore the platform


The GeoTools application has been developed for any geotechnical engineer who wants to speed up their daily process while increasing the amount of data they use to improve the accuracy of their models. They can reap the benefits from the moment they log in to the VIKTOR platform.

VIKTOR for geo-engineering

The VIKTOR platform ensures that the data required for the geotechnical calculations is all centralized in one single location. The centralized data is easy to link with many different software packages that a geotechnical engineer uses for in-depth analyses. The tools in the application will significantly reduce the time that is needed to spend on tedious day-to-day tasks. This opens many new possibilities for taking geotechnical engineering to the next level. Geotechnical engineers can now evaluate a great many different designs in an optimization scheme, reduce uncertainty in calculations by using more soil datasets, or simply take on bigger projects.

Demo environment

VIKTOR offers free access to a continuously growing collection of sample application, including the GeoTools including the GeoTools, through the demo environment. Applications range from functional tools that can be immediately be used for your own projects, to basic ‘template’ applications that contain the result of open-source Python code of specific functionality from our GitHub repository.

Apply for a demo account to test applications and experience working in a VIKTOR environment (together with your colleagues) that contains all your organizations apps.

Please let us know if you want to add a new digital building block to the GeoTools or to the App Store. Together we can improve the geotechnical community as a whole!

Other applications you might also find interesting:

Download the White Paper and get INSPIRED

Learn about trends in digital transformation and how they affect the engineering and construction industry.

Get now
illustration of free trial

Start building apps now

Try for free

Related Blog Posts

AI in engineering: optimization of workflows, costs, and sustainability

Read more

Avoid Piping with Open-Source Web App

Read more

Easily Turn Grasshopper Models into Sharable Web Apps with VIKTOR

Read more

Build and share web apps

Get your free account now
Start for free