Development of an AI system for analyzing geological surveys for construction
Engineering geological surveys are a costly process that determines fundamental project decisions. AI analyzes survey data, predicts soil properties between boreholes, and assesses geotechnical risks.
Interpretation of engineering survey data
Processing of sounding data (CPT):
Static penetration testing (CPTU/CPT) is the most informative survey method: the cone measures soil resistance (qc), lateral friction (fs) and pore pressure (u2) continuously over depth.
import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
class CPTSoilClassifier:
"""Классификация грунтов по данным статического зондирования (СП 47.13330)"""
# Классификатор Robertson (1990) — международный стандарт
SOIL_CLASSES = {
1: 'sensitive_fine_grained',
2: 'organic_soil_peat',
3: 'clays',
4: 'silt_mixtures',
5: 'sand_silt_mixtures',
6: 'clean_sands',
7: 'gravelly_sand_to_dense_sand',
8: 'very_stiff_sand_to_gravelly_sand',
9: 'very_stiff_fine_grained'
}
def classify_robertson(self, qc, fs, depth_m, unit_weight=18):
"""
Классификация по методу Robertson (1990).
qc: МПа, fs: кПа
"""
# Normalization
Pa = 0.1013 # МПа (атмосферное давление)
sigma_v = unit_weight * depth_m / 1000 # МПа (вертикальное напряжение)
qt = qc # упрощение (без поправки на поровое давление)
# Normalized tip resistance
Qtn = (qt - sigma_v) / Pa * (Pa / sigma_v) ** 0.381
# Normalized friction ratio
Fr = fs / max(qt - sigma_v, 0.001) * 100 # %
# Soil Behaviour Type Index (Ic)
Ic = np.sqrt((3.47 - np.log10(Qtn))**2 + (1.22 + np.log10(Fr))**2)
# Классификация по Ic
if Ic > 3.60:
return 2 # торф/органика
elif Ic > 2.95:
return 3 # глины
elif Ic > 2.60:
return 4 # суглинки
elif Ic > 2.05:
return 5 # супеси/суглинки
elif Ic > 1.31:
return 6 # пески
else:
return 7 # гравийные пески
def derive_geotechnical_params(self, qc, soil_class):
"""Определение расчётных характеристик грунта по эмпирическим корреляциям"""
params = {}
if soil_class in [5, 6, 7]: # несвязные грунты
params['phi_degrees'] = 17.6 + 11.0 * np.log10(qc) # угол трения (Kulhawy & Mayne)
params['relative_density'] = 100 * (qc / 100) ** 0.5 # Dr, %
params['Es_MPa'] = 5 * qc # модуль деформации (ориентировочно)
elif soil_class in [3, 4]: # связные грунты
params['Su_kPa'] = qc / 0.01 / 15 # прочность без дренажа
params['OCR'] = (0.33 * qc) ** 1.15 # степень переуплотнения
return params
Spatial interpolation of soil properties
Kriging of geological parameters:
There is no data between the wells. Geostatistics (kriging) constructs a probabilistic model of the parameter field:
from pykrige.ok import OrdinaryKriging
import numpy as np
def interpolate_bearing_capacity(borehole_locations, bearing_capacity_values, grid_resolution_m=5):
"""
Построение карты несущей способности грунта по данным скважин.
borehole_locations: (n, 2) координаты xy скважин
bearing_capacity_values: (n,) несущая способность кПа
"""
x = borehole_locations[:, 0]
y = borehole_locations[:, 1]
z = bearing_capacity_values
# Ordinary Kriging с автоматическим подбором вариограммы
ok = OrdinaryKriging(
x, y, z,
variogram_model='spherical',
verbose=False,
enable_plotting=False
)
# Создать регулярную сетку
x_grid = np.arange(x.min(), x.max(), grid_resolution_m)
y_grid = np.arange(y.min(), y.max(), grid_resolution_m)
z_pred, z_variance = ok.execute('grid', x_grid, y_grid)
return z_pred, np.sqrt(z_variance) # предсказание + неопределённость
Geotechnical risk assessment
Soil subsidence:
For loess soils of Central Russia and the south, the critical parameter is: - ML classifier based on laboratory research data + CPT: subsidence/non-subsidence - Forecast of the depth of the subsidence layer between wells
Risk of liquefaction during seismic events:
Japanese method (Ishihara) + ML-correction: - CRR (Cyclic Resistance Ratio) according to CPT - CSR (Cyclic Stress Ratio) according to seismic conditions - Factor of Safety FL = CRR/CSR < 1.0 → liquefaction is probable
Swelling soils:
ML regression of swelling pressure based on mineralogical composition and humidity (relevant for the south of the Russian Federation, Kazakhstan).
Generation of geological documentation
Report automation:
Based on survey data + regulatory framework → autogeneration: - Tables of physical and mechanical characteristics of soils (according to SP 22.13330) - Engineering and geological columns (GOST R 59623) - Text part of the report: template + ML filling from measurement data
3D visualization of the geological model:
PyVista/VTK + interpolated data → 3D engineering-geological model: - Soil layers across the site - Groundwater level - Risk zones (subsidence, liquefaction)
Development time: 4-6 months for an AI survey interpretation system with spatial interpolation and risk assessment.







