No description has been provided for this image

Lineament Mapping from Airborne Gravity & Magnetic Data and its Application in Mineral Exploration¶

Table of Contents¶

  • Introduction
  • Airborne Gravity & Magnetic Data
  • Lineament Mapping Techniques
    • 1. Data Acquisition
    • 2. Data Processing
    • 3. Filtering and Enhancement
    • 4. Lineament Detection
    • 5. Integration with Geological Data
  • Application in Mineral Exploration
    • Identifying Structural Controls
    • Mapping Lithological Boundaries
    • Targeting Exploration Areas
    • Detecting Buried Intrusions
  • Conclusion

Introduction¶

Lineament mapping is a geophysical technique used to identify linear features on the Earth's surface, such as faults, fractures, and geological boundaries. These features can be indicative of underlying structures that influence the distribution of mineral deposits. Airborne gravity and magnetic data are critical tools in this process, as they provide high-resolution insights into the subsurface geological structures over large areas.

Airborne Gravity & Magnetic Data¶

  • Airborne Gravity Data: Measures variations in the Earth's gravitational field. These variations are influenced by changes in rock density, which can be associated with geological structures like faults and folds.
  • Airborne Magnetic Data: Records variations in the Earth's magnetic field caused by the magnetic properties of underlying rocks. Magnetic anomalies often highlight the presence of ferromagnetic minerals such as magnetite, which can delineate geological structures like dykes, sills, and faults.

Lineament Mapping Techniques¶

1. Data Acquisition¶

Airborne surveys are conducted using aircraft equipped with gravity and magnetometer sensors to collect data over the study area.

2. Data Processing¶

The raw gravity and magnetic data are processed to remove noise and correct for factors such as topography and instrument drift.

3. Filtering and Enhancement¶

Techniques like upward continuation, horizontal derivative filters, and tilt derivative are applied to enhance linear features in the data.

4. Lineament Detection¶

Automated and manual methods are used to detect and delineate lineaments from the enhanced data. This may include edge-detection algorithms, directional filters, and visual interpretation.

5. Integration with Geological Data¶

The identified lineaments are correlated with known geological maps and data to validate the results and gain insights into subsurface structures.

Application in Mineral Exploration¶

Identifying Structural Controls¶

Faults and fractures identified through lineament analysis can act as conduits for hydrothermal fluids, which are often associated with mineral deposits such as gold, copper, and rare earth elements.

Mapping Lithological Boundaries¶

Changes in magnetic susceptibility and density help delineate different rock types, aiding in the identification of host rocks and mineral-bearing formations.

Targeting Exploration Areas¶

Lineament maps provide a cost-effective method to focus exploration efforts by highlighting areas with favorable structural conditions for mineralization. Lineament maps can be valuable in targeting exploration areas, as they help identify zones where structural conditions are conducive to mineral deposits. Some mineral deposits tend to be found along lineaments—linear or curvilinear features on the Earth's surface—often aligned in a particular orientation. These lineaments, which could represent faults, fractures, or other structural discontinuities, serve as pathways for hydrothermal fluids or host rocks that are favorable for mineralization. By mapping these lineaments, geologists can focus exploration efforts on areas with increased potential for finding valuable mineral deposits, making the process more cost-effective and efficient.

Detecting Buried Intrusions¶

Magnetic data can reveal the presence of buried igneous intrusions that are often associated with mineralized zones, such as porphyry copper deposits.

Conclusion¶

Lineament mapping from airborne gravity and magnetic data is a powerful technique in the field of mineral exploration. By providing detailed information about subsurface structures and geological variations, it enables geologists to identify potential areas for mineralization. This approach not only enhances the efficiency of exploration activities but also reduces the costs associated with drilling and ground surveys, making it a valuable tool in the search for mineral resources.

In [1]:
import numpy as np
import matplotlib.pyplot as plt
from skimage import filters, feature
import seaborn as sns
import grav_mag_inv as gmi
import Grav_Mag_Transform as gt
import rasterio
import Euler_Deconvolution as ev
import GravMagPro as gmp
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from skimage import feature, measure, io, morphology
from gravmagpro import lineaments as lm
import warnings
warnings.filterwarnings('ignore')
In [2]:
df = pd.read_csv('mag_data11.csv')
df.head()
Out[2]:
X Y Z mag
0 330000 6629200 211.055369 5535
1 330050 6629200 210.654999 5500
2 330100 6629200 210.286555 5476
3 330150 6629200 209.952679 5479
4 330200 6629200 209.655742 5496
In [3]:
# Calculate the midpoints of X and Y for the filtered data
x_mid = df['X'].mean()
y_mid = df['Y'].mean()

df['X_centered'] = df['X'] - x_mid
df['Y_centered'] = df['Y'] - y_mid

# Display the transformed dataset
print(df[['X_centered', 'Y_centered', 'mag']])
       X_centered  Y_centered   mag
0         -4500.0     -6900.0  5535
1         -4450.0     -6900.0  5500
2         -4400.0     -6900.0  5476
3         -4350.0     -6900.0  5479
4         -4300.0     -6900.0  5496
...           ...         ...   ...
12665      4300.0      6900.0  4945
12666      4350.0      6900.0  4943
12667      4400.0      6900.0  4940
12668      4450.0      6900.0  4938
12669      4500.0      6900.0  4936

[12670 rows x 3 columns]
In [4]:
dt = df[
    (df['X_centered'] > -2000) & (df['X_centered'] < 2000) & (df['Y_centered'] > -4000) & (df['Y_centered'] < 4000)
].copy()
In [5]:
mag_grid, x_grid, y_grid = ev.create_grid(dt, 201, 401)
In [6]:
mag_grid = mag_grid - np.mean(mag_grid.mean())
target_points_x = 201
target_points_y = 401
In [7]:
# Extracting data from DataFrame
x = dt['X'].values
y = dt['Y'].values
# Determine cell size based on the spacing of grid points
cell_size_x = (x.max() - x.min()) / (target_points_x - 1)
cell_size_y = (y.max() - y.min()) / (target_points_y - 1)

# Automatically determine the upper-left corner
upper_left_x = x.min()
upper_left_y = y.max()

# Create an affine transform for the grid (Y cell size is negative to go downward)
transform = rasterio.transform.from_origin(upper_left_x, upper_left_y, cell_size_x, -cell_size_y)
In [8]:
# Optional parameters for the Grid class
nodata_value = -9999
name = 'OptimizedGrid'
filename = 'theoritical_grid.tif'
mask = None  # No mask for now
crs = None  # Set your CRS here
In [9]:
data_array = mag_grid
In [10]:
dtilt = ev.compute_tilt(data_array, transform, nodata_value, name, filename, mask, crs = None)
In [11]:
gmp.plot_interactive_grid(dtilt, x_grid, y_grid, title='Tilt Derivative Map', zaxis_title=' (nT/m)')
In [12]:
ev.plot_contours(x_grid, y_grid, dtilt, label = 'nT/m', title = 'Tilt Derivative Map')
No description has been provided for this image
In [13]:
extent=(dt['X'].min(), dt['X'].max(), dt['Y'].max(), dt['Y'].min())
In [14]:
edges_canny, filtered_edges, angles_degrees = lm.extract_lineaments(dtilt, sigma=1, low_threshold=0.1, high_threshold=0.3, min_length = 20, 
                       extent=extent, figsize=(8, 8))
No description has been provided for this image
In [15]:
lm.plot_angles_diagram(angles_degrees)
No description has been provided for this image
In [16]:
edges_canny, filtered_edges, angles_degrees, label_image = lm.extract_lineaments_angle_filter(dtilt, sigma=1, low_threshold=0.1, high_threshold=0.3, min_length = 20, 
                       extent=extent, figsize=(8, 8),
                                   angle_min = 270, angle_max = 360)
No description has been provided for this image

Lineaments with azimuth between 270 and 360 degrees¶

In [17]:
nx, ny = 201, 401
lm.fit_lineament_straight_lines(dtilt, extent, nx, ny, sigma=1, low_threshold=0.1, high_threshold=0.3, min_length = 10,
                                 figsize=(10, 12), angle_min = 270, angle_max = 360)
No description has been provided for this image