Using Generic Mapping Tool (GMT) for Oblique Projection Problem

In previous post (Using Generic Mapping Tool (GMT) Basic) we make a map with the study area is located at Taiwan, where the subduction trench are either having South-North and or West-East  orientations, respectively. For these subduction systems, we could make a cross section immediately perpendicular to the trench orientation, i.e. West-East (for the South-North oriented trench) and South-North (for the West-East orientated trench). From this cross section, we could see the Wadati-Benioff zone clearly from the earthquakes distribution (although clear or not will be depend on your data quality).

However, this not the case for the study area at Sumatra (Using Generic Mapping Tool (GMT) Basic II), where the subduction trench is Northeast-Southwest orientation or we can call it as an oblique subduction. If we make a cross section as same as the one that we described earlier, we wouldn’t able to see the Wadati-Benioff zone. Now this is the problem, how we could rotate the map so that it will have a parallel orientation to the trench?

For this problem, we could solve it easily by using the GMT. The GMT provide various map projection that enable us to plot a map in almost what ever orientation that we wanted to. Keep in mind that, in this post we work on a Linux Operating System (OS) with GMT version 4.5 (some features, i.e., to make a file executable, post script viewing (.ps) and others, you may need to change it or install some program in order to work and viewing the output).

For this post, the files that you need are listed as shown below (freely accessible).

  1. Topography grid file GEBCO 30-arc second (download here).
  2. Earthquake event (customized for this post only) at northern Sumatra region from the USGS earthquake catalog (download here).
  3. Sumatra trench file from the USGS (download here).
  4. Color file for the map (you can create by yourself, or download here).
  5. Color file for the earthquake event (same as number 4, or download here).

After you downloaded all the files, make sure that these files are located in the same folder as your scrip. Now, you may try to plot the Map by using this script as follow.

#!/bin/csh
#environment setting
gmtset PAPER_MEDIA A3
gmtset LABEL_FONT_SIZE = 12p
gmtset BASEMAP_TYPE plain
gmtset ANNOT_FONT_SIZE_PRIMARY = 12p
gmtset ANNOT_FONT_SIZE_SECONDARY = 12p
gmtset HEADER_FONT_SIZE = 14p

####topographic file####
set inputgrd=sumatra1.grd

####range and projection for regional map####
set range1=95/-2/97/8r
set oblq1=98.5/4/55/4i

####range and projection for study area map####
set range2=96/-1/95.95/5r
set oblq2=100/10/10/54/5.8i

####cpt, gradient and trench####
set mapcpt=sumatra.cpt
set inputgradient=sum1_intens.grd
set trench=sumatra_trench.clip
set eventcpt=eventdepth.cpt

####erthquake event from usgs cataloque custom area and time#####
#magnitude 4
awk '{if ($5>=4 && $5<5) print $3, $2, $4}' usgs_cat2005.dat > m4_2005.xyz 
#magnitude 5
awk '{if ($5>=5 && $5<6) print $3, $2, $4}' usgs_cat2005.dat > m5_2005.xyz
#magnitude 6
awk '{if ($5>=6 && $5<6) print $3, $2, $4}' usgs_cat2005.dat > m6_2005.xyz
#magnitude 7
awk '{if ($5>=7 && $5<8) print $3, $2, $4}' usgs_cat2005.dat > m7_2005.xyz
#magnitude 8
awk '{if ($5>=8 && $5<9) print $3, $2, $4}' usgs_cat2005.dat > m8_2005.xyz

####output####
set output=oblique_subduction.ps

####Map Script for regional map####

#grd image#
grdgradient $inputgrd -A0/270 -G$inputgradient -Ne0.6 -V
grdimage $inputgrd -R$range1 -JOa$oblq1 -Ba1f0.5WNSE -C$mapcpt -I$inputgradient -X11.7i -Y7.5i -K -V > $output

#coast line#
pscoast -R -J -B -Dh -W1.5p,black -O -K -V >> $output

#custom contour line#
grdcontour sumatra1.grd -R -J -C500 -L-7000/-4500 -K -O -V >> $output
grdcontour sumatra1.grd -R -J -C100 -L-4500/-3500 -K -O -V >> $output

#sumatra_trench#
psxy $trench -R -B -J -Sf0.5i/0.1ilt -Gred -W0.03i,red -K -O -V >> $output

#input event custom sized#
#magnitude 4
psxy m4_2005.xyz -R -J -Sc0.04i -W0.001p -C$eventcpt -K -O -V >> $output
#magnitude 5
psxy m5_2005.xyz -R -J -Sc0.07i -W0.001p -C$eventcpt -K -O -V >> $output
#magnitude 6
psxy m6_2005.xyz -R -J -Sc0.10i -W0.001p -C$eventcpt -K -O -V >> $output
#magnitude 7
psxy m7_2005.xyz -R -J -Sc0.15i -W0.001p -C$eventcpt -K -O -V >> $output
#magnitude 8
psxy m7_2005.xyz -R -J -Sc0.20i -W0.001p -C$eventcpt -K -O -V >> $output

#make a rectangle indicate for the study area#
psxy -R -J -W0.02i/red -K -O -V << EOF >> $output
95.95 5
93.20 2.98
96.1 -1
#> next (this gonna disconnect the points)#
98.8 1.01
95.95 5
EOF

#cross section line#
psxy -R -J -W0.02i,black -K -O -V << END >> $output
94.6 1
97.4 3
END

####Map Script for study area map####
grdimage $inputgrd -R$range2 -JOc$oblq2 -Ba1f0.5WNSE -C$mapcpt -I$inputgradient -X-9i -Y-4.3i -K -O -V >> $output

#coast line#
pscoast -R -J -Dh -Ba1f0.5WNSE -W1.5p,black -K -O -V >> $output

#custom contour line#
grdcontour sumatra1.grd -R -J -C500 -L-5000/-4500 -K -O -V >> $output
grdcontour sumatra1.grd -R -J -C100 -L-4000/-1000 -K -O -V >> $output
grdcontour sumatra1.grd -R -J -C250 -L-1000/-250 -K -O -V >> $output

#input sumatra_trench
psxy $trench -R -B -J -Sf0.5i/0.1ilt -Gred -W0.03i,red -K -O -V >> $output

#input event custom sized#
#magnitude 4
psxy m4_2005.xyz -R -J -Sc0.04i -W0.001p -C$eventcpt -K -O -V >> $output
#magnitude 5
psxy m5_2005.xyz -R -J -Sc0.07i -W0.001p -C$eventcpt -K -O -V >> $output
#magnitude 6
psxy m6_2005.xyz -R -J -Sc0.10i -W0.001p -C$eventcpt -K -O -V >> $output
#magnitude 7
psxy m7_2005.xyz -R -J -Sc0.15i -W0.001p -C$eventcpt -K -O -V >> $output
#magnitude 8
psxy m8_2005.xyz -R -J -Sc0.20i -W0.001p -C$eventcpt -K -O -V >> $output

#cross section line#
psxy -R -J -W0.02i,black -O -V << END >> $output
94.6 1
97.4 3
END

gv $output

After you execute the program, you may get a map as shown below.

1_3

Here are some explanations to the script:

  1. Oblique projection can be made by using range as described in set range1 and set range2, which are the range of the regional and study area maps respectively. If you see carefully, we append a small “r” later at the end of the range. This implies that we will use lower left corner and upper right corner longitude and latitude information for the map range.
  2. We use two types of oblique projection (you may type in the terminal man grdimage to get a full description):
    1. -JOa$oblq1” means that we will use a cylindrical projection with an Oblique Mercator – point and azimuth.
    2.  “-JOc$oblq2” same as 1, but with an Oblique Mercator – point and pole.
  3. We make the illuminations of the topography grid file by using grdgradient.
  4. We use a simple shell command such as awk, i.e. to get the preferred column being printed to the file that we want, such as the usgs_cat2005.dat being printed to a several files with different magnitude (column 5 in the .dat file indicate for the earthquake magnitude).
  5. We set up a custom earthquake size. In default, the psxy command will search the 4th column as the earthquake size and will plot the size using default size. However, we can customized the size that we want to see the earthquake with larger magnitude has a “logarithmic” size from the small one, so it will give us an “appealing” attention to the big magnitude event as the main shock.

Keep in mind that, this post only show how to rotate the map, not the cross section plot. However, we already make a line for the cross section and we will cover that for the next post.

  •                                  Haekal A. Haridhi, TIGP Program, IES, Academia Sinica

2 thoughts on “Using Generic Mapping Tool (GMT) for Oblique Projection Problem

Add yours

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Powered by WordPress.com.

Up ↑

%d bloggers like this: