This repository contains the code for Regional Geoid Modelling.
- Ayush Gupta
- Shubhi Kant
-
Download the observed airborne gravity data i.e. GRAV-D from here.
-
Read the downloaded GRAV-D data file using Get_Data_Points, as shown below:
[lat, lon, elevation, obs_grav] = Get_Data_Points('NGS_GRAVD_Block_MS01_Gravity_Data_BETA1.txt', 32.5, -106, 1.0);
-
Download the height anomaly and gravity anomaly for the GGM from here.
-
Read the GGM files downloaded using GGM_Data, as shown below:
array = ['points1_GGM.dat'; 'point10001_GGM.dat'; 'point20001_GGM.dat'];
[lon_ggm, lat_ggm, height_anomaly_ggm, gravity_anomaly_ggm] = GGM_Data (array);
- Compute orthometric height by adding flight elevation to GGM height, as shown below:
ortho_height = elevation + height_anomaly_ggm';
- For computing the free air anomaly use compute_free_air_anomaly, as shown below:
FAA = compute_free_air_anomaly(obs_grav, lat, ortho_height, 'WGS84');
- For getting the short wavelength component of gravity subtract the GGM gravity anomaly from free air anomaly, as shown below:
anomaly_smw = FAA - gravity_anomaly_ggm';
- For compute the correction to remove gravity attraction due to atmosphere use compute_atm_correction, as shown below:
atm_correction = compute_atm_correction(ortho_height);
anomaly_smw_atm = anomaly_smw - atm_correction;
- To convert the gravity anomaly which is in vector for to a grid, use create_grid, as shown below:
[lons, lats, dg_smw_atm] = create_grid(anomaly_smw_atm, 0.01, lat, lon);
- Download the DEM file for your study area from here as a GeoTIFF file, and convert it into a grid, as shown below:
Heights = imread('srtm_15_06.tif'); % Reading DEM file
lat_dem = linspace(32.45, 33.55, 1320); % Defining the latitude range taking a buffer of 0.5 degree
lon_dem = linspace(-106.1, -105, 1320); % Defining the longitude range taking a buffer of 0.5 degree
[X_dem, Y_dem] = meshgrid(lon_dem, lat_dem);
H_dem = double(Heights(6000-1319:6000,2941:4260));
- For computing the terrain correction use Terrain_Correction, as shown below
TC = Terrain_Correction(X_dem, Y_dem, H_dem);
- Remove the buffer region from the resulting terrain correction matrix, and compute the Faye anomaly by subtracting the Terrain correction from short wavelength gravity anomaly grid computed in Step 6
- For computing the disturbing potential due to reduced gravity anomaly using strokes integral use strokes_integral, as shown below:
Tr = stokes_integral (lons, lats, g_faye, 'WGS84', 0.01);
- Compute the undulations due to short wavelength using Bruns equation by dividing disturbing potential by normal gravity, as shown below:
Nr = Tr./compute_normal_grav(lats, 'WGS84');
-
Download the height anomaly for all the grid points from here.
-
Compute the cogeoid by adding the undulation due short wavelength grid to GGM height anomaly grid, as shown below:
N = reshape(height_anomaly_gg, [101,101])'; % Reshaping the heigth anomaly to form a grid
N_cogeoid = Nr + N;
- Compute the indirect effect due to terrain on the undulation using compute_indirect_undulation, as shown below:
dN = compute_indirect_undulation(H_dem, 1/1200, X_dem, Y_dem, 'WGS84');
- Compute the final geoid by adding the indirect effects to the cogeoid, as shown below:
N_geoid = N_cogeoid + dN;
Note: For information regarding input and output to each of the function use:
help "function_name"