Note
Go to the end to download the full example code
F3 demo#
F3 demo, https://dataunderground.org/dataset/f3.
Interpretation data is provided by Xinming Wu, all data is big endian.
CIG’s profile photo (USTC-CIG)
# sphinx_gallery_thumbnail_path = '_static/cigvis/more_demos/070.png'
import numpy as np
import cigvis
def load_wellLog(p):
nlog = 4
npoints = 2121
x = [259, 619, 339, 141]
y = [33, 545, 704, 84]
z = np.arange(0, 0.2 * npoints, 0.2)
v = np.fromfile(p, np.float32).reshape(nlog, npoints)
v = 0.5 * np.log(v)
nodes = []
for i in range(nlog):
points = np.c_[np.ones(npoints) * x[i], np.ones(npoints) * y[i], z]
nodes += cigvis.create_well_logs(points,
v[i],
cyclinder=False,
radius_tube=[2, 5],
null_value=-999.25)
return nodes
if __name__ == '__main__':
root = '/Volumes/T7/DATA/cigvisdata/F3/'
seisp = root + 'seis.dat'
saltp = root + 'salt.dat'
hz2p = root + 'hz.dat'
uncp = root + 'unc.dat'
unc2p = root + 'unc2.dat'
ni, nx, nt = 591, 951, 362
shape = (ni, nx, nt)
# seismic slices
seis = np.memmap(seisp, np.float32, 'c', shape=shape)
nodes = cigvis.create_slices(seis,
pos=[ni - 2, 25, nt - 2],
cmap='gray',
clim=[-2.0, 1.5])
# salt (geologic body)
salt = np.memmap(saltp, np.float32, 'c', shape=shape)
nodes += cigvis.create_bodys(salt, 0.0, 0.0, color='cyan')
# hrizon (surface)
hz2 = np.fromfile(hz2p, np.float32).reshape(ni, nx)
nodes += cigvis.create_surfaces([hz2], value_type='yellow')
# displacement field of unconformity (volume)
unc = np.fromfile(uncp, np.float32).reshape(shape).astype(np.float32)
# unconformity (surface)
unc2 = np.fromfile(unc2p, np.float32).reshape(ni, nx).astype(np.float32)
nodes += cigvis.create_surfaces([unc2], volume=unc, value_type='amp')
# well logs
nodes += load_wellLog(root + 'logs.dat')
# fault skin
nodes += cigvis.create_fault_skin(root + 'skins/',
endian='>',
values_type='likelihood')
cigvis.plot3D(nodes,
azimuth=-65.0,
elevation=22.0,
fov=15.0,
axis_scales=(1, 1, 1.7),
zoom_factor=1.4)
Total running time of the script: (0 minutes 0.000 seconds)