Category Archives: Geo-Hacks

Global Paleoshoreline data

Together with former Ph.D. student Logan Yeo, we’ve reverse-engineered a set of global paleoshoreline compilations by Golonka et al. (2006) [1] and Smith et al. (1994) [2] and taken them back from the age of “dark data” being only published in analogue form, to fully digital versions. The paleoshoreline models are made available publicly in different formats, ready to be reconstructed with GPlates using different plate models. The data is published on the web alongside the paper (in press) in the Australian Journal of Earth Sciences (Heine, Yeo & Muller: Evaluating global paleoshoreline models for the Cretaceous and Cenozoic, Aust. J. Earth Sciences, in press) and they show the evolution of land area over time from ~150 Ma to the present according to the two different paleoshoreline estimates.

The files are available on my GitHub page here in *.gpml, *.geojson and *.shp format and can be viewed online. Unfortunately it doesn’t seem to be possible to embed the map on wordpress.com – I originally envisaged some funky webX.X embedded mapping here, but no. Instead web1.0 style links to follow for a sneak peek and some screenshots below:

  1. Golonka et al. (2006) models (examples):
  2. Smith et al. (1994) models:

The rendering through GitHub is fast and allows a quick overview about the global and regional paleoshoreline locations, allowing zooming in and panning.

Paleoshorelines in the Golonka model for the 139-123 Ma time slice rendered from a geojson file live on GitHub.

Paleoshorelines in the Golonka model for the 139-123 Ma time slice rendered from a geojson file live on GitHub. The colored area inside the polygon is equivalent to interpreted land (above sealevel) in the given time interval.

Another option to access the data is to use the version on CartoDB and interactively query and alter the data.

References:

[1] GOLONKA J., KROBICKI M., PAJAK J., VAN GIANG N. & ZUCHIEWICZ W. 2006. Global Plate Tectonics and Paleogeography of Southeast Asia. Faculty of Geology, Geophysics and Environmental Protection, AGH University of Science and Technology, Arkadia, Krakow, Poland.

[2] SMITH A., SMITH D. G. & FURNELL B. M.1994. Atlas of Mesozoic and Cenozoic coastlines. Cambridge University Press, 112 p. Cambridge, United Kingdom.

The world in (geological) colors

The color palettes I described in my recent post can also be used with GPlates to color loaded features. Here are three examples which use the static polygon dataset which comes with GPlates. The first is using the GTS2012 chronostratigraphic time scale to color the static polygons by epoch and fill the polygons:

The world colored by geological epoch.

The world colored by geological epoch, filling the static polygons.

The second is just using the same data set and color the line features by geological era:

Coloring the polygons by era in GTS2012 colors.

Coloring the polygons by era in GTS2012 colors.

And the last is a bit Bauhaus-y by coloring everything in black and white according to the Gee & Kent geomagnetic polarity time scale (not that this would make a lot of sense, but as we can do it…):

The world in normal polarity and reverse polarity according to the Gee & Kent geomagnetic polarity timescale.

The world in normal polarity and reverse polarity according to the Gee & Kent geomagnetic polarity timescale (using the filled static polygons).

That planet looks way to boring -  hemispherical view of the Earth colored according to a normal (white) and reverse (black) geomagnetic polarity. Again using the Gee & Kent 2007 timescale.

That planet looks way to boring – hemispherical view of the Earth with the static polygons colored according to a normal (white) and reverse (black) geomagnetic polarity. Again using the Gee & Kent 2007 timescale.

In order to color loaded features by age (and timescale) just add the colorpalettes to the “Draw style” settings (Features -> Manage colouring) like this:

The geological age color palettes can be added to the Draw style (Manage colouring).

The geological age color palettes can be added to the Draw style (Manage colouring).

Once the new colour palettes are available, they can be assigned to the individual layers either through the layer window or through “Features -> “Manage colouring” .

Graticules for plate tectonic reconstructions

Plate tectonic reconstructions require to have some present-day markers so that any person reading or looking at the results can correlate the paleo plate positions and continents with present day. Things did indeed look quite a bit different back then… Usually the present-day coastlines are used a such a marker, but as sealevel has varied extensively over the geological history, displaying an Early Cretaceous reconstruction at, say 110 Million years, with present-day shorelines might be a bit misleading. In fact one could probably say that it is plainly wrong.

So what’s the big deal about this you might ask. One key aspect of graticules is usually that they are not “features” in the sense of tangible geospatial data, but rather a “decorative” overlay. GPlates also displays a fixed graticule (the thin gray lines spaced at 30 degrees) on the globe. However, in plate tectonics, if we go back in time, we require that such lines and decorations become ‘reconstructable’ back through geological history. So we need data, not decorations. During the 1980’s in the famous PLATES project at UTIG, a special data type called ‘Gridmarks’ was invented which was pretty much a set of crosshairs, centered at equally spaced increments, mimicking a graticule which could be reconstructed. Take these individual crosshairs, assign them a lifespan and a PlateID and one could simply reconstruct them as continental outlines and other geospatial features were. All worked quite happily with this concept and this old file.

When I started to work on South Atlantic plate kinematics, I realised that, albeit being quite useful, some smaller plates would simply be missed by the grid marks. Also, one would also have to reassign plate ids for any new set of polygons one is working with and sometimes a bit of an update to the way things are being done is also refreshing. The routines which were used to generate these gridmark files (in the old PLATES *.dat format) were written in Fortran and I don’t have a compiled version for my OS at hand and knowing the pain associated with this exercise I opted for a writing a new routine from scratch in Python tailored for use with GPlates.

The result of this is  a short script called “CreateGraticuleLines.py” in my gptools repository on Atlassian’s BitBucket which borrows command line options from GMT. I’ll give a brief overview about the usage. First,  either clone the toolbox using

git clone https://bitbucket.org/chhei/gptools.git

or simply download a zipped archive (either from the overview or from the Downloads page under ‘branches’). Open the terminal, cd to the place where you have downloaded the archive, unzip and type:

cd gptools
chmod u+x CreateGraticuleLines.py
./CreateGraticuleLines.py --help

So now you can create regular spaced graticule lines either for a global coverage at 5 degree line spacing (the default settings, equivalent to -Rd -I5) or for any other bounding box and line increment you require. For example

./CreateGraticuleLine.py -R-10/40/40/70 -I1

will create the following file for GPlates (by default the output name for the file is “Graticule.gpml”):

Graticule lines feature collection showing a 1-degree graticule covering most of Europe. Note that all lines are individual features.

Graticule lines feature collection showing a 1-degree graticule covering most of Europe. Note that all lines are individual features.

Once you load plate polygons into GPlates along with the graticule lines, you can use the cookie-cutting functionality in GPlates to cut the lines and assign individual plate IDs along with an “age of appearance” (set to 0 Ma by the script). It should then somehow look like this:

A global graticule (using the default settings) cookie-cut and age-assigned along with plate polygons.

A global graticule (using the default settings) cookie-cut and age-assigned along with plate polygons.

Once you have cookie-cut and age-assigned the graticule lines, you can reconstruct them like any other feature in GPlates. Note that areas without plate ID and changed ages of appearance will not display once you step back beyond 0 Ma (present day). Here’s another screenshot:

Graticule lines as reconstructable features - cookie cut to plate polygons and rotated back to 100 Ma.

Graticule lines as reconstructable features – cookie cut to plate polygons and rotated back to 100 Ma.

If you now export your reconstruction as set of GMT files, you can now use GMT’s psxy to plot a graticule mesh on top of your reconstruction maps using various line styles. A last example from my South Atlantic maps:

An example of the application of the reconstructed graticules here as thin gray dashed lines (Heine et al., 2013)

An example of the application of the reconstructed graticules here as thin gray dashed lines (Heine et al., 2013)

Similarly, this will also work when using GPlates’ SVG export. You can of course also export your graticule file in GPlates to different formats – such as ESRI Shapefile or OGR GMT plain text format (“Save as” functionality in GPlates’ feature manager).

Happy map making. For bug reports and improvement suggestions please use the BitBucket issue tracker or the commenting functionality here.

GISLook – A quicklook plugin for Mac OS X

The Cartography group at Oregon State Uni offers a QuickLook plugin for Mac OS X, which allows to preview multiple types of GIS files (ESRI shapefiles etc) by just hitting the space bar. Very valuable if you want to just quickly check out the spatial content of a file without throwing it into a GIS. Here’s an example (even properly associates the auxiliary files *.dbf, *.shx etc with the right spatial content):

Previewing a shapefile using the GISlook quicklook plugin.

Here’s the link: http://cartography.oregonstate.edu/gislook/

Plate boundaries for GMT5’s psxy

GMT5‘s psxy offers a nice feature which lets the user designate fronts on a line segment basis – for example if you have a number of normal faults and subduction zone line segments in a multi-segment file, you can give each line a different symbol, depending on to which side the fault dips (left or right in line direction).

I have taken Peter Bird’s plate boundary file  and added these plotting instructions to the indivdual plate boundary line segment headers, for example:

> JF\NA by Peter Bird 1999
> -Sf0.45/3p+t+r

for the Juan de Fuca plate subducting under NorthAmerica. With the new header, psxy will now plot a triangle (+t) with a 3pt size (3p) to the right side (+r) of the front, fronts being separated by 0.45cm. And this is how it looks on a Robinson map centered on the dateline, generated with:


pscoast -Rg -JN180/22 -Dl -A5000 -V -G200 -K -Y4 > Bird_PlateBoundaries.ps
psxy -J -R PB2002_boundaries.gmt -W0.5p,red -O -Sf0.25/3p -Gred -Ba30:."Bird's 2003 Plate Boundaries" >> Bird_PlateBoundaries.ps

Plate boundaries plotted using GMT5’s psxy and fronts specified on line header segments


The file can be downloaded here (please make sure you cite Peter Bird’s paper as original source of the data!). The file is released under the same license as the original data.

Here’s the relevant snippet from the psxy man page for the use of -Sf in segment headers:

-Sf front. -Sfgap/size[+l|+r][+b+c+f+s+t][+ooffset]. Supply distance gap between symbols and symbol size.
If gap is negative, it is interpreted to mean the number of symbols along the front instead. Append +l
or BD+r) to plot symbols on the left or right side of the front [Default is centered]. Append +type to
specify which symbol to plot: box, circle, fault, slip, or triangle. [Default is fault]. Slip means
left-lateral or right-lateral strike-slip arrows (centered is not an option). Append +ooffset to offset
the first symbol from the beginning of the front by that amount [0]. Note: By placing -Sf options in the
segment header you can change the front types on a segment-by-segment basis.

ogr2ogr in the 3rd Dimension

I had to convert shapefile data from 2D lines/points to files consisting of 3 fields (x,y,z) for further processing using the GMT5. I was about to write some Python code to do that myself when I realised a new (GDAL >1.8) option in the ogr2ogr tool:

-zvalue Uses the specified field to fill the Z coordinate of geometries.

Turning an attribute from a shapefile into a z-Value for GMT files ogr2ogr and this flag is easy and helps to avoid ArcGIS’ 3D Analyst’s “Feature Attribute to Z-Value” function.

Simple usage:
ogr2ogr -F"GMT" OutFileWithZValues.gmt InFileWithZAttribute.shp -zfield"Thickness"

Done. Even works the other way around – from an OGR GMT file with Z-values in the 3rd column to a 2.5D shapefile:

ogr2ogr -F"ESRI Shapefile" OutFileWithZAttribute.shp InFileWithZValues.gmt -nlt LINESTRING25D