Geospatial plate analysis
Analyze tectonic plate geometries using GeoPandas with proper coordinate projections. Use this skill whenever working with PB2002 plate boundary/plate polygon data, filtering points by plate membership, or extracting plate-specific boundaries. Triggers on: plate tectonics, tectonic plates, plate boundaries, PB2002 dataset.From its SKILL.md
npx -y skills add cxcscmu/SkillLearnBench --skill geospatial-plate-analysisAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
2.5 KB, 595 tokens by cl100k_base, as published. Nobody here has run it
Geospatial Plate Analysis
Purpose
Load and process PB2002 tectonic plate data (boundaries and plate polygons) using GeoPandas, then perform spatial operations like point-in-polygon tests and boundary extraction.
Data Format
PB2002_plates.json
- GeoJSON FeatureCollection with plate polygons
- Properties:
Code(e.g., "PA"),PlateName(e.g., "Pacific") - Geometry: Polygon or MultiPolygon (lon/lat, EPSG:4326)
- The Pacific plate ("PA") is a MultiPolygon that crosses the antimeridian (±180°)
PB2002_boundaries.json
- GeoJSON FeatureCollection with plate boundary LineStrings
- Properties:
PlateA,PlateB(two-letter plate codes),Name,Type - To get all boundaries of a plate (e.g., "PA"), filter where
PlateA == "PA"ORPlateB == "PA"
Earthquake GeoJSON (USGS format)
- Features with Point geometry:
[longitude, latitude, depth] - Properties include:
mag,place,time(Unix ms),type - Feature
idfield contains the earthquake ID
Workflow
1. Load data
import geopandas as gpd
plates = gpd.read_file("PB2002_plates.json")
boundaries = gpd.read_file("PB2002_boundaries.json")
earthquakes = gpd.read_file("earthquakes_2024.json")
All data loads in EPSG:4326 (WGS84 lon/lat).
2. Extract a specific plate polygon
pacific_plate = plates[plates["Code"] == "PA"]
3. Filter points inside a plate
Use a spatial join or within test:
quakes_in_plate = gpd.sjoin(earthquakes, pacific_plate, predicate="within")
4. Extract plate boundaries
Filter boundaries where the plate code appears in either PlateA or PlateB:
pa_boundaries = boundaries[
(boundaries["PlateA"] == "PA") | (boundaries["PlateB"] == "PA")
]
Antimeridian Handling
The Pacific plate crosses the ±180° meridian. GeoPandas handles MultiPolygon geometries
natively, so sjoin with predicate="within" works correctly for point-in-polygon tests
as long as the plate polygon is properly defined (which PB2002 data is).
Key Libraries
geopandas— spatial data frames, spatial joinsshapely— geometry operations (union, distance, nearest_points)pyproj— CRS transformations
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.