118 lines
4.2 KiB
Python
Executable File
118 lines
4.2 KiB
Python
Executable File
# Make some nice plots of the DEM, the densities used and the calculated GGT
|
|
import numpy
|
|
from matplotlib import pyplot as plt
|
|
from mpl_toolkits.basemap import Basemap
|
|
|
|
# Plot the DEM and density maps
|
|
################################################################################
|
|
lons, lats, heights, dens = numpy.loadtxt('dem-dens.txt', unpack=True)
|
|
nlons = 151 # Number of points in the longitude direction
|
|
nlats = len(lats)/nlons
|
|
|
|
# Convert the lists to 2D grids
|
|
glons = numpy.reshape(lons, (nlats, nlons))
|
|
glats = numpy.reshape(lats, (nlats, nlons))
|
|
gheights = numpy.reshape(heights, (nlats, nlons))
|
|
gdens = numpy.reshape(dens, (nlats, nlons))
|
|
|
|
# Set up a Mercator projection
|
|
bm = Basemap(projection='merc',
|
|
llcrnrlon=lons[0], llcrnrlat=lats[-1],
|
|
urcrnrlon=lons[-1], urcrnrlat=lats[0],
|
|
lon_0=lons[nlons//2], lat_0=lats[len(lats)//2],
|
|
resolution='l',
|
|
area_thresh=10000)
|
|
glons, glats = bm(glons, glats)
|
|
|
|
# Plot the DEM first
|
|
print "Plotting DEM"
|
|
plt.figure()
|
|
bm.drawmeridians(numpy.arange(lons[0]+5., lons[-1], 5.),
|
|
labels=[0,0,0,1], fontsize=12, linewidth=0.5)
|
|
bm.drawparallels(numpy.arange(lats[-1]+5., lats[0], 5.),
|
|
labels=[1,0,0,0], fontsize=12, linewidth=0.5)
|
|
bm.drawcoastlines(linewidth=1)
|
|
bm.drawmapboundary()
|
|
bm.drawcountries(linewidth=0.8)
|
|
# Do the pseudocolor plot
|
|
cf = bm.pcolor(glons, glats, gheights, cmap=plt.cm.gist_earth, \
|
|
vmin=-1000, vmax=1000)
|
|
cb = plt.colorbar()
|
|
cb.set_label("Height [m]")
|
|
# Plot the calculation area used later
|
|
w = -60
|
|
e = -45
|
|
s = -30
|
|
n = -15
|
|
areax, areay = bm([w, w, e, e, w], \
|
|
[n, s, s, n, n])
|
|
bm.plot(areax, areay, '-r', label="Computation grid", linewidth=1.8)
|
|
plt.legend(shadow=True, loc='lower right', prop={'size':10})
|
|
# Save a png figure
|
|
plt.savefig('dem.png')
|
|
|
|
# Now plot the densities
|
|
print "Plotting density model"
|
|
plt.figure()
|
|
bm.drawmeridians(numpy.arange(lons[0]+5., lons[-1], 5.),
|
|
labels=[0,0,0,1], fontsize=12, linewidth=0.5)
|
|
bm.drawparallels(numpy.arange(lats[-1]+5., lats[0], 5.),
|
|
labels=[1,0,0,0], fontsize=12, linewidth=0.5)
|
|
bm.drawcoastlines(linewidth=1)
|
|
bm.drawmapboundary()
|
|
bm.drawcountries(linewidth=0.8)
|
|
# Do the pseudocolor plot
|
|
cf = bm.pcolor(glons, glats, gdens, cmap=plt.cm.jet)
|
|
cb = plt.colorbar()
|
|
cb.set_label(r"Density [$g.cm^{-3}$]")
|
|
# Save a png figure
|
|
plt.savefig('dem-dens.png')
|
|
|
|
# Plot the GGT
|
|
################################################################################
|
|
print "Plotting GGT"
|
|
data = numpy.loadtxt('dem-ggt.txt')
|
|
lons, lats, heights, gxx, gxy, gxz, gyy, gyz, gzz = data.T
|
|
nlons = 50 # Number of points in the longitude direction
|
|
nlats = len(lats)/nlons
|
|
|
|
# Convert the lists to 2D grids
|
|
glons = numpy.reshape(lons, (nlats, nlons))
|
|
glats = numpy.reshape(lats, (nlats, nlons))
|
|
|
|
# Set up a Mercator projection
|
|
bm = Basemap(projection='merc', \
|
|
llcrnrlon=lons[0], llcrnrlat=lats[0], \
|
|
urcrnrlon=lons[-1], urcrnrlat=lats[-1], \
|
|
lon_0=lons[nlons//2], lat_0=lats[len(lats)//2],
|
|
resolution='l', area_thresh=10000)
|
|
glons, glats = bm(glons, glats)
|
|
|
|
# Plot each component
|
|
fig = plt.figure(figsize=(14,9))
|
|
plt.subplots_adjust(wspace=0.35)
|
|
titles = [r"$g_{xx}$", r"$g_{xy}$", r"$g_{xz}$", r"$g_{yy}$", r"$g_{yz}$",
|
|
r"$g_{zz}$"]
|
|
fields = [gxx, gxy, gxz, gyy, gyz, gzz]
|
|
for i, args in enumerate(zip(fields, titles)):
|
|
field, title = args
|
|
ax = plt.subplot(2, 3, i + 1, aspect='equal')
|
|
plt.title(title, fontsize=18)
|
|
# Make it a 2D grid
|
|
gfield = numpy.reshape(field, (nlats, nlons))
|
|
# Plot the coastlines and etc
|
|
mer = bm.drawmeridians(numpy.arange(lons[0]+3, lons[-1]-3, 3),
|
|
labels=[0,0,0,1], fontsize=9, linewidth=0.5)
|
|
bm.drawparallels(numpy.arange(lats[0]+3, lats[-1]-3, 3),
|
|
labels=[1,0,0,0], fontsize=9, linewidth=0.5)
|
|
bm.drawcoastlines(linewidth=1)
|
|
bm.drawmapboundary()
|
|
bm.drawcountries(linewidth=1)
|
|
bm.drawstates(linewidth=0.2)
|
|
# Make a pseudocolor plot
|
|
cf = bm.pcolor(glons, glats, gfield, cmap=plt.cm.jet)
|
|
cb = plt.colorbar(orientation='vertical', format='%.2f', shrink=0.8)
|
|
cb.set_label(r"$E\"otv\"os$")
|
|
# Save a png figure
|
|
plt.savefig('dem-ggt.png')
|