Skip to content

1 SLAM Calculator Overview

Luke Pajer edited this page Oct 28, 2020 · 2 revisions
                      1.1.0    Set DEM File Boundaries
                      1.1.1     Get DEM File
                      1.2.0    Instantiate QFaults Class
                      1.2.1     Different Shape Files Available via USGS

          1.3    Obtain Event Data

                      1.3.0    Instantiate the 'get_data' Class
                      1.3.1     Query for Events within the DEM Area
                      1.3.2    Get Individual Focal Data
                      1.3.3    Viewing Error Data
                      1.3.4    Focal and Error Data Combined
                      1.4.0    Instantiate the 'swaths' Class
                      1.4.1     Calculate Grid North Adjustment
                      1.4.2    Combine Focal Data Points
                      1.4.3    Computations of the 1st Nodal Plane
                      1.4.4    Determine Errors Relative to the Nodal Plane
                      1.4.5    Calculate Light Direction for DEM
                      1.5.0    Calculate Swaths
                      1.5.1     Determine Seismo-Lineament Bounds
                      1.6.0    Instantiate the 'SLAM_Viz' Class
                      1.6.1     Elevation Map using Open Topography DEM File
                      1.6.2    Physical Map using Stamen and OpenStreetMap
                      1.6.3    Multiple Solutions - Elevation Map
                      1.6.4    Multiple Solutions - Physical Map

Import the SLAM calculator as 'slam'.

import geo_slam_calculator_v1 as slam
area = slam.DEM(longitude=-120.160, latitude=39.438, lon_del=0.2, lat_del=0.2)

lat_min, lat_max, lon_min, lon_max = area.get_bounds()

print(lat_min, lat_max, lon_min, lon_max)
(39.238, 39.638000000000005, -119.96, -120.36)
dem_file = area.get_dem(lat_min, lat_max, lon_min, lon_max)
Begin Downloading DEM File...  
Downloaded DEM file in 7.6 seconds  
Processing...  
Complete.  
from geo_slam_calculator_v1 import qFaults
qfaults = qFaults.get_qfaults()

Default value for get_qfaults for the file name of the shape file is 'Qfaults_GIS'. Other files can be found on the qfaults page. However, not all of the files are shapefiles. If the selection is not a shape file, it will return an error.

data = slam.get_data(lat_min=lat_min, lat_max=lat_max, lon_min=lon_min, lon_max=lon_max)
events_1983 = data.event_query(start_time='1983-07-02', end_time='1983-07-04', min_mag=3)
Downloaded Regional Earthquake Data in 0.6760 seconds

image

focal_data_1983 = data.focal_data(earthquakes=events_1983)
focal_data_1983.focal_data

image

focal_data_1983.error_data

image

eq1_1983 = focal_data_1983.data[focal_data_1983.data['ID']=='B2'].reset_index(drop=True)

image
image

swaths_init = slam.swaths(elevation=dem_file.elevation)
gridNorthAdjustment_1983 = swaths_init.grid_adjustment(longitude=-120.160, latitude=39.438, zoneMeridian=-123)
Grid North Adjustment: -1.80
focal_data_1983 = swaths_init.focal_metrics(lon=-120.206, lat=39.412, depth=11.05)
Latitude: 39.412
Longitude: -120.206
Depth: -11050.0 meters
nodal_comps_1983 = swaths_init.nodal_comps(strike=eq1_1983.np1_strike, grid_adjust=gridNorthAdjustment_1983, 
                                           strike_uncert=eq1_1983.np1S_uncert, plunge=eq1_1983.np1_dip,
                                           dip_ang=eq1_1983.np1D_uncert)  
Dip Trend: 300.0 
Dip Trend + North Grid Adjustment: 298.2 
Dip Trend Uncertainty: 8.0 
Dip Plunge: 80.0
Dip Angle Uncertainty: 13.0
err_comps_1983 = swaths_init.err_computations(eh1=300, eh2=300, eh1Az=45, ez=0.8, grid_adjust=gridNorthAdjustment_1983)
eh1: 300.0 meters
eh1 Azimuth: 43.2 
eh2: 300.0 meters
ez: 800.0 meters
lightDirection_1983 = swaths_init.light_direction(nodal_comps_1983[1])
Light Direction: 61.80 
swaths_1983 = swaths_init.swath_calc(npDipPlunge=nodal_comps_1983[3], npDipAngUncert=nodal_comps_1983[4], 
                                     npDipTr=nodal_comps_1983[1], npDipTrendUncert=nodal_comps_1983[2], 
                                     widthFactor=1.5, multiplier=1.5, cellsize=dem_file.cellsize, 
                                     cellsize_res=30, eh1=err_comps_1983[0], eh1Az=err_comps_1983[1], 
                                     eh2=err_comps_1983[2], ez=err_comps_1983[3], lat=focal_data_1983[0], 
                                     lon=focal_data_1983[1], focalDepth=focal_data_1983[2], 
                                     bounds=dem_file.bounds, thin=False)

image

swaths_shade_1983 = swaths_init.get_shade(swaths_1983.swaths, corners_fill=['NE', 'SW'])
Begin computing Seismo-Lineament boundary area
Finished assessment of Seismo-Lineament boundary area in 10.39 seconds
maps = slam.SLAM_viz(elevation=dem_file.elevation)
maps.elevation_map(middle_road=swaths_1983.middle_road, swaths_shade=swaths_shade_1983, 
                   lightDirection=lightDirection_1983, altDeg=12.5, lon=-120.206, lat=39.412, 
                   lon_max=lon_max, lon_min=lon_min, lat_max=lat_max, lat_min=lat_min, 
                   strike=eq1_1983.np1_strike, dip=eq1_1983.np1_dip, rake=eq1_1983.np1_rake, 
                   faults=qfaults, title='A2')

maps.physical_map(middle_road=swaths_1983.middle_road, swaths_shade=swaths_shade_1983, 
                  lon=focal_data_1983[1], lat=focal_data_1983[0], lon_max=lon_max, 
                  lon_min=lon_min, lat_max=lat_max, lat_min=lat_min, strike=eq1_1983.np1_strike, 
                  dip=eq1_1983.np1_dip, rake=eq1_1983.np1_rake, title='A2', tiler_size=11, faults=qfaults)

Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL

These are the multiple solutions taken from section 2, the Ashburn thesis, section of this document.

Must put items into a list:

swaths_mult = [swaths.swaths, swaths_1983.swaths, swaths_1992.swaths]
middle_road_mult = [swaths.middle_road, swaths_1983.middle_road, swaths_1992.middle_road]
swaths_shade_mult = [swaths_shade, swaths_shade_1983, swaths_shade_1992]
lon_mult = [focal_data[1], focal_data_1983[1], focal_data_1992[1]]
lat_mult = [focal_data[0], focal_data_1983[0], focal_data_1992[0]]
strike_mult = [44, eq1_1983.np1_strike, eq1_1992.np1_strike]
dip_mult = [80, eq1_1983.np1_dip, eq1_1992.np1_dip]
rake_mult = [180, eq1_1983.np1_rake, eq1_1992.np1_rake]
title = ['A1', 'A2', 'A3']
colors_ = ['lightblue', 'green', 'yellow']
maps.elevation_mult(swaths_shade=swaths_shade_mult, lightDirection=lightDirection_1992, altDeg=12.5, 
                    lon=lon_mult, lat=lat_mult, lon_max=lon_max, lon_min=lon_min, 
                    lat_max=lat_max, lat_min=lat_min, strike=strike_mult, dip=dip_mult, 
                    rake=rake_mult, title=title, colors_=colors_, faults=qfaults)

maps.physical_mult(lon=lon_mult, lat=lat_mult, lon_max=lon_max, lon_min=lon_min, 
                   lat_max=lat_max, lat_min=lat_min, strike=strike_mult, 
                   dip=dip_mult, rake=rake_mult, title=title, tiler_size=11, 
                   faults=qfaults, focal_size=0.5)

Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL

Clone this wiki locally