This example demonstrates how to use your own plate model and reconstruct points.¶
Step 0: Download the test files for this example.¶
Don't worry about the FileDownloader. If you'd like, you may download the zip file manually.
In [1]:
import cartopy.crs as ccrs
from pathlib import Path
import matplotlib.pyplot as plt
import pygplates
from plate_model_manager.utils import download
import gplately
from gplately.auxiliary import get_plate_reconstruction
time = 50
data_dir = Path("gplately-example-data") / "06-LoadPlateModelFromFiles"
data_dir.mkdir(parents=True, exist_ok=True)
downloader = download.FileDownloader(
"https://repo.gplates.org/webdav/gplately-test-data/test_model.zip",
f"{data_dir}/.metadata.json",
f"{data_dir}",
)
# only re-download when necessary
if downloader.check_if_file_need_update():
downloader.download_file_and_update_metadata()
else:
print(f"The local files are still good. No need to download again!")
Step 1: Create PlateReconstruction and PlotTopologies objects with your own plate model¶
In [2]:
model = gplately.PlateReconstruction(
rotation_model=f"{data_dir}/test_model/test_rotations.rot",
topology_features=f"{data_dir}/test_model/test_topology.gpmlz",
static_polygons=f"{data_dir}/test_model/test_static_polygons.gpmlz",
)
gplot = gplately.PlotTopologies(
model,
coastlines=f"{data_dir}/test_model/test_coastlines.gpmlz",
continents=f"{data_dir}/test_model/test_continental_polygons.shp",
COBs=f"{data_dir}/test_model/test_cobs.gpmlz",
time=time,
)
Step 2: Reconstruct points in shapefile¶
In [3]:
points = [
p.get_geometry().to_lat_lon()
for p in pygplates.FeatureCollection( # pyright: ignore[reportAttributeAccessIssue]
f"{data_dir}/test_model/Australia_Points.shp"
)
]
g_points = gplately.Points(
plate_reconstruction=model, lons=[p[1] for p in points], lats=[p[0] for p in points]
)
reconstructed_points = g_points.reconstruct(time=time, return_array=True)
Step 3: Plot the map¶
In [4]:
ax = plt.figure(figsize=(8, 6)).add_subplot(
111, projection=ccrs.Robinson(central_longitude=180)
)
ax.scatter(
reconstructed_points[0], # type: ignore
reconstructed_points[1], # type: ignore
transform=ccrs.PlateCarree(),
marker="o",
color="blue",
)
gplot.plot_coastlines(ax, color="grey")
ax.set_global() # type: ignore
plt.title(f"{time} Ma")
plt.show()