Example Usage Applied to Venus Lineaments - Ganiki Planitia

Data fromGaniki Planitia Quadrangle (V–14)

Radial lineaments on Venus are intriguing geological features indicative of the planet’s dynamic surface and internal processes. These lineaments are essentially long, linear structures that radiate outward from a central point. The presence of radial lineaments on Venus provides valuable insights into the planet’s geological history and its current geodynamic behavior. They can indicate the locations of past volcanic activity, the movement of tectonic plates (if applicable, given Venus’s thick lithosphere and unique tectonic regime), or the impact of asteroids and comets. These features are also important for understanding the crustal stress patterns and may help to map out the subsurface structures of the planet.

  1. Load in a shape file with multiple features.

  2. Find the lines you want.

  3. Perform the Hough Transform

  4. Visualize the Results

  5. Radial Feature extraction

  6. Save features

Venus Ganiki Map

Grosfils, E. B., Long, S. M., Venechuk, E. M., Hurwitz, D. M., Richards, J. W., Kastl, B., … & Hardin, J. S. (2011). Geologic map of the ganiki planitia quadrangle (v–14), venus.

[43]:
#Let's begin by loading the module
import linkinglines as ll
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
[44]:

# Load the example dataset dikeset=ll.readFile('../data/exampleGanikiSegments.shp', preprocess=True)


22 dropped for not being straight
0 dropped for not being straight

The next step is to perform the Hough Transform

Besides the data the input in the hough transform code is the center (xc,yc) which is assumed to be the mean of the X and Y coordinates. It can be set arbitrarily. You may wish to set this to investigate structures in your dataset. But most people will use the default settings.

[45]:

dikeset, xc, yc=ll.HoughTransform(dikeset) print(xc,yc) print(dikeset.columns)
-85099.97178645834 -5451850.508986442
Index(['WKT', 'v14_gt_LWM', 'Type', 'Shape_Leng', 'geometry', 'Xstart',
       'Ystart', 'Xend', 'Yend', 'seg_length', 'HashID', 'Xmid', 'Ymid',
       'theta', 'rho', 'xc', 'yc', 'PerpOffsetDist', 'PerpIntX', 'PerpIntY',
       'Date Changed'],
      dtype='object')

Visualize the hough transform data.

[46]:
fig, [ax_main, ax_xDist, ax_yDist]=ll.plotScatterHist(dikeset, "theta",
                                                   "rho", hue='Ymid', palette="icefire")
_images/DemoVenus_6_0.png

Now we will apply the radial feature extraction. The ‘tol’ feature is the radius of the area of intersection and this is set to 15km. Then save the features.

[47]:
rad=ll.RadialFit(dikeset)

close, rad=ll.NearCenters(dikeset, rad, tol=15000)
ll.writeCenterWKT(rad, 'VenusGanikiRadialFitsCenters.csv')

[47]:
Center Std Error RSq Spacing ExpandingR AngleRange nDikes geometry
0 [-80280.397841859, -5493100.957091977] [5533.63948925587, 9042.67306613744] 0.171472 (8.193225176241935, 2.839983294061625, 0.02250... [0.0, 0.020833333333333332, 0.03125, 0.6666666... 332.671883 42 POINT (-80280.397841859 -5493100.957091977)
[48]:
fig, [axCart, axHough] = ll.DotsLines(dikeset, ColorBy='Ymid') # Plot the lines and the dots
axCart.plot(rad['Center'][0][0], rad['Center'][0][1], 'ro') #plot the center of the radial fit

#Plot the fit onto the data

angles=np.linspace(-90,90) #make an array of angles from -90,90 for plotting
rhorad=ll.CenterFunc(angles,rad['Center'][0][0], rad['Center'][0][1], xc,yc)/1000 #calculate rho values, convert to kilometers
axHough.plot(angles, rhorad, 'r-.', label='Radial Fit') #plot the radial fit
axHough.legend() #add a legend

km scale label
/home/akh/myprojects/Dikes_Linking_Project/linkinglines/src/linkinglines/PlotUtils.py:1428: UserWarning: The figure layout has changed to tight
  plt.tight_layout()
[48]:
<matplotlib.legend.Legend at 0x7ff498a40f70>
_images/DemoVenus_9_3.png
[ ]: