evo-geospatial-antimeridian-plates
SkillDev toolsLoad and process PB2002 tectonic plate boundaries and polygons with antimeridian-safe coordinate normalization (0-360 longitude shift) using Shapely 2.0 transform and GeoPandas 1.0 APIs.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the evo-geospatial-antimeridian-plates skill
What this skill tells your AI
The instructions your AI receives, as published by openlair/openskill in tasks-evolved/earthquake-plate-calculation/environment/skills/evo-geospatial-antimeridian-plates/SKILL.md and read by ahel’s review.
Handles loading PB2002 tectonic plate polygon and boundary GeoJSON files, filtering by plate code, and normalizing coordinates across the antimeridian to 0-360 range.
Key Concepts
Antimeridian Problem
The Pacific plate spans the 180°/-180° antimeridian. Standard WGS84 coordinates wrap at this boundary, causing catastrophic topological artifacts when projecting. Solution: shift all negative longitudes by +360 to create a continuous 0°-360° space.
PB2002 Data Model
- Plates file (
PB2002_plates.json): Contains Polygon/MultiPolygon geometries. Pacific plate identified byCode == 'PA'. - Boundaries file (
PB2002_boundaries.json): Contains LineString geometries. Each segment hasPlateAandPlateBproperties. Pacific boundaries are wherePlateA == 'PA'ORPlateB == 'PA'.
Coordinate Handling
- Use
shapely.transform(geometry, func)(Shapely 2.0 array interface) - NOTshapely.ops.transform - Use
unary_union()- NOT deprecatedcascaded_union - After shifting, use
set_crs(epsg=4326, allow_override=True)to assign CRS metadata - Use
to_crs(epsg=3832)for Pacific-centric metric projection (PDC Mercator, central meridian 150°E)
Functions
shift_antimeridian_coords(coords)
Shapely 2.0 transform callback. Takes (N,2) or (N,3) ndarray, shifts longitude < 0 by +360.
load_plate_polygon(plates_geojson_path, target_plate_code='PA')
Loads PB2002 plates, filters by code, shifts to 0-360, returns GeoDataFrame with CRS=EPSG:4326.
load_plate_boundaries(boundaries_geojson_path, target_plate_code='PA')
Loads PB2002 boundaries, filters by PlateA/PlateB, shifts to 0-360, returns unified MultiLineString geometry.
Usage
import sys
sys.path.insert(0, '/app/environment/skills/evo-geospatial-antimeridian-plates/scripts')
from utils import shift_antimeridian_coords, load_plate_polygon, load_plate_boundaries
# Load Pacific plate polygon (shifted to 0-360)
pacific_plate_gdf = load_plate_polygon('/root/PB2002_plates.json', 'PA')
# Load Pacific plate boundary as unified geometry (shifted to 0-360)
pacific_boundary = load_plate_boundaries('/root/PB2002_boundaries.json', 'PA')
Signals
- GitHub stars
- 89
- Forks
- 4
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
evo-geospatial-antimeridian-plates- Source
- github.com/openlair/openskill