[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KJB7BCYAFATK12QR8SF3XZ":3,"skill-same:01M6KJB7BCYAFATK12QR8SF3XZ":65},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":48,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M6KJB7BCYAFATK12QR8SF3XZ","geopandas-coordinate-projections",null,"Master coordinate systems and projections in GeoPandas for accurate spatial calculations. Handle WGS84 to projected coordinate system conversions, select appropriate projections for regions, and perform distance\u002Farea calculations correctly. Use this skill when working with latitude\u002Flongitude data that needs to be converted to metric distances, or when performing spatial calculations that require specific coordinate systems.","cxcscmu\u002FSkillLearnBench","cxcscmu","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F142838272?v=4","01M6KCQDFQWPDSN0MKZY96MSQP","01M6KCQDM7G70TKJ28NTSQC0RZ",93,"MIT","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb4-skill-creator-claude-haiku-4-5\u002Fearthquake-plate-calculation\u002Fgeopandas-coordinate-projections\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"geopandas","coordinate","projections","geopandas coordinate projections","data","system","select","use","Spatial","master","systems","with","for","performing","metric","2026-11-10 10:12:30",false,"---\nname: geopandas-coordinate-projections\ndescription: Master coordinate systems and projections in GeoPandas for accurate spatial calculations. Handle WGS84 to projected coordinate system conversions, select appropriate projections for regions, and perform distance\u002Farea calculations correctly. Use this skill when working with latitude\u002Flongitude data that needs to be converted to metric distances, or when performing spatial calculations that require specific coordinate systems.\n---\n\n# GeoPandas Coordinate Projections and Transformations\n\n## Understanding Coordinate Systems\n\n### Geographic vs Projected Coordinates\n\n**Geographic Coordinates (Latitude\u002FLongitude)**\n- WGS84 (EPSG:4326) is the standard for earthquake and plate boundary data\n- Degrees, not meters - distances between degrees vary by latitude\n- Cannot be used directly for distance calculations\n- Must be projected to a planar system for accurate metric distances\n\n**Projected Coordinates**\n- Flat 2D coordinate systems with units in meters or feet\n- Preserve either distance, area, direction, or shape (no projection preserves all)\n- Must match your analysis goal\n\n### Projection Types for Plate Tectonics\n\n| Projection | Purpose | Use Case |\n|-----------|---------|----------|\n| Azimuthal Equidistant | Preserves distances from center point | Distance from a specific location |\n| Equal Area (Mollweide, Albers) | Preserves area relationships | Accurate area measurements |\n| Mercator | Conformal (angle preserving) | Navigation, but distorts poles |\n| UTM | Zone-based, good local accuracy | Local\u002Fregional analysis |\n\n## Workflow\n\n### 1. Check and Set CRS\n\n```python\nimport geopandas as gpd\n\n# Check current CRS\nprint(gdf.crs)  # Should print 'EPSG:4326' for WGS84\n\n# Ensure WGS84 if needed\nif gdf.crs != 'EPSG:4326':\n    gdf = gdf.to_crs('EPSG:4326')\n```\n\n### 2. Select Appropriate Projection\n\nFor Pacific plate analysis, use an azimuthal equidistant projection centered on the Pacific:\n\n```python\n# Pacific-centered azimuthal equidistant (approximately)\n# Center: ~180°E (or -180°), 0°N (Equator)\npacific_projection = 'EPSG:3832'  # Azimuthal Equidistant from Pacific\n# Or use custom projection string\n\n# Alternative: Use pyproj directly for custom projections\nfrom pyproj import CRS\ncustom_crs = CRS.from_proj4('+proj=aeqd +lat_0=0 +lon_0=180 +x_0=0 +y_0=0 +datum=WGS84 +units=m')\n```\n\n### 3. Transform for Distance Calculations\n\n```python\n# Transform to projected CRS\ngdf_projected = gdf.to_crs(pacific_projection)\n\n# Now distances are in meters\n# Calculate distance (example)\nfor idx, row in gdf_projected.iterrows():\n    dist_meters = row.geometry.distance(other_geometry)\n    dist_km = dist_meters \u002F 1000\n```\n\n### 4. Transform Back to WGS84 for Output\n\n```python\n# If you need to output in geographic coordinates\ngdf_result = gdf_projected.to_crs('EPSG:4326')\n```\n\n## Common Patterns\n\n### Calculate Distance Between Points\n\n```python\nfrom shapely.geometry import Point\n\n# Points in WGS84\np1 = Point(139.7, 35.6)  # Tokyo\np2 = Point(-118.2, 34.0)  # Los Angeles\n\n# Create GeoDataFrame\ngdf = gpd.GeoDataFrame([{'geometry': p1}, {'geometry': p2}], crs='EPSG:4326')\n\n# Project and calculate\ngdf_proj = gdf.to_crs('EPSG:3832')\ndistance_meters = gdf_proj.geometry[0].distance(gdf_proj.geometry[1])\ndistance_km = distance_meters \u002F 1000\n```\n\n### Calculate Minimum Distance from Points to LineStrings\n\n```python\n# For each point in earthquakes_gdf, find minimum distance to any boundary line\ndef min_distance_to_features(point_geom, feature_geometries):\n    \"\"\"Calculate minimum distance from a point to any feature.\"\"\"\n    min_dist = float('inf')\n    for feature in feature_geometries:\n        dist = point_geom.distance(feature)\n        min_dist = min(min_dist, dist)\n    return min_dist\n\n# Apply across all earthquakes\ndistances = []\nfor idx, row in earthquakes_projected.iterrows():\n    dist = min_distance_to_features(row.geometry, boundaries_projected.geometry)\n    distances.append(dist \u002F 1000)  # Convert to km\n```\n\n## Projection Reference\n\n### Common EPSG Codes for Ocean\u002FGlobal Analysis\n\n- **EPSG:3832**: Azimuthal Equidistant (Pacific-centered)\n- **EPSG:4326**: WGS84 (lat\u002Flon, DO NOT use for distances)\n- **EPSG:3857**: Web Mercator (DO NOT use for scientific analysis)\n- **EPSG:54034**: Equal Earth (global, area-preserving)\n\n### Custom Projection String\n\n```python\n# Azimuthal Equidistant centered on specific location\nproj_string = '+proj=aeqd +lon_0=180 +lat_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m'\n```\n\n## Troubleshooting\n\n**Problem**: Distances come out as tiny decimals (e.g., 0.0001)\n- **Cause**: Calculating in geographic coordinates (degrees)\n- **Solution**: Project to a metric CRS before distance calculation\n\n**Problem**: All distances are the same\u002Fequal area distortion\n- **Cause**: Using wrong projection type\n- **Solution**: Use azimuthal equidistant for distance preservation\n\n**Problem**: CRS mismatch error\n- **Cause**: Trying to combine layers with different CRS\n- **Solution**: Use `.to_crs()` to harmonize CRS before spatial operations\n","# GeoPandas Coordinate Projections and Transformations\n\n## Understanding Coordinate Systems\n\n### Geographic vs Projected Coordinates\n\n**Geographic Coordinates (Latitude\u002FLongitude)**\n- WGS84 (EPSG:4326) is the standard for earthquake and plate boundary data\n- Degrees, not meters - distances between degrees vary by latitude\n- Cannot be used directly for distance calculations\n- Must be projected to a planar system for accurate metric distances\n\n**Projected Coordinates**\n- Flat 2D coordinate systems with units in meters or feet\n- Preserve either distance, area, direction, or shape (no projection preserves all)\n- Must match your analysis goal\n\n### Projection Types for Plate Tectonics\n\n| Projection | Purpose | Use Case |\n|-----------|---------|----------|\n| Azimuthal Equidistant | Preserves distances from center point | Distance from a specific location |\n| Equal Area (Mollweide, Albers) | Preserves area relationships | Accurate area measurements |\n| Mercator | Conformal (angle preserving) | Navigation, but distorts poles |\n| UTM | Zone-based, good local accuracy | Local\u002Fregional analysis |\n\n## Workflow\n\n### 1. Check and Set CRS\n\n```python\nimport geopandas as gpd\n\n# Check current CRS\nprint(gdf.crs)  # Should print 'EPSG:4326' for WGS84\n\n# Ensure WGS84 if needed\nif gdf.crs != 'EPSG:4326':\n    gdf = gdf.to_crs('EPSG:4326')\n```\n\n### 2. Select Appropriate Projection\n\nFor Pacific plate analysis, use an azimuthal equidistant projection centered on the Pacific:\n\n```python\n# Pacific-centered azimuthal equidistant (approximately)\n# Center: ~180°E (or -180°), 0°N (Equator)\npacific_projection = 'EPSG:3832'  # Azimuthal Equidistant from Pacific\n# Or use custom projection string\n\n# Alternative: Use pyproj directly for custom projections\nfrom pyproj import CRS\ncustom_crs = CRS.from_proj4('+proj=aeqd +lat_0=0 +lon_0=180 +x_0=0 +y_0=0 +datum=WGS84 +units=m')\n```\n\n### 3. Transform for Distance Calculations\n\n```python\n# Transform to projected CRS\ngdf_projected = gdf.to_crs(pacific_projection)\n\n# Now distances are in meters\n# Calculate distance (example)\nfor idx, row in gdf_projected.iterrows():\n    dist_meters = row.geometry.distance(other_geometry)\n    dist_km = dist_meters \u002F 1000\n```\n\n### 4. Transform Back to WGS84 for Output\n\n```python\n# If you need to output in geographic coordinates\ngdf_result = gdf_projected.to_crs('EPSG:4326')\n```\n\n## Common Patterns\n\n### Calculate Distance Between Points\n\n```python\nfrom shapely.geometry import Point\n\n# Points in WGS84\np1 = Point(139.7, 35.6)  # Tokyo\np2 = Point(-118.2, 34.0)  # Los Angeles\n\n# Create GeoDataFrame\ngdf = gpd.GeoDataFrame([{'geometry': p1}, {'geometry': p2}], crs='EPSG:4326')\n\n# Project and calculate\ngdf_proj = gdf.to_crs('EPSG:3832')\ndistance_meters = gdf_proj.geometry[0].distance(gdf_proj.geometry[1])\ndistance_km = distance_meters \u002F 1000\n```\n\n### Calculate Minimum Distance from Points to LineStrings\n\n```python\n# For each point in earthquakes_gdf, find minimum distance to any boundary line\ndef min_distance_to_features(point_geom, feature_geometries):\n    \"\"\"Calculate minimum distance from a point to any feature.\"\"\"\n    min_dist = float('inf')\n    for feature in feature_geometries:\n        dist = point_geom.distance(feature)\n        min_dist = min(min_dist, dist)\n    return min_dist\n\n# Apply across all earthquakes\ndistances = []\nfor idx, row in earthquakes_projected.iterrows():\n    dist = min_distance_to_features(row.geometry, boundaries_projected.geometry)\n    distances.append(dist \u002F 1000)  # Convert to km\n```\n\n## Projection Reference\n\n### Common EPSG Codes for Ocean\u002FGlobal Analysis\n\n- **EPSG:3832**: Azimuthal Equidistant (Pacific-centered)\n- **EPSG:4326**: WGS84 (lat\u002Flon, DO NOT use for distances)\n- **EPSG:3857**: Web Mercator (DO NOT use for scientific analysis)\n- **EPSG:54034**: Equal Earth (global, area-preserving)\n\n### Custom Projection String\n\n```python\n# Azimuthal Equidistant centered on specific location\nproj_string = '+proj=aeqd +lon_0=180 +lat_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m'\n```\n\n## Troubleshooting\n\n**Problem**: Distances come out as tiny decimals (e.g., 0.0001)\n- **Cause**: Calculating in geographic coordinates (degrees)\n- **Solution**: Project to a metric CRS before distance calculation\n\n**Problem**: All distances are the same\u002Fequal area distortion\n- **Cause**: Using wrong projection type\n- **Solution**: Use azimuthal equidistant for distance preservation\n\n**Problem**: CRS mismatch error\n- **Cause**: Trying to combine layers with different CRS\n- **Solution**: Use `.to_crs()` to harmonize CRS before spatial operations\n",{"name":5,"description":7},"main","726e1f79b96b0cb3d729d0e55a1c847e0b5353ae","skills\u002Fb4-skill-creator-claude-haiku-4-5\u002Fearthquake-plate-calculation\u002Fgeopandas-coordinate-projections",7,"https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench","https:\u002F\u002Fcxcscmu.github.io\u002FSkillLearnBench","https:\u002F\u002Fgithub.com\u002Fcxcscmu","2026-10-02 22:55:36",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add cxcscmu\u002FSkillLearnBench --skill geopandas-coordinate-projections",{"tool":57,"command":58},"bunx","bunx skills add cxcscmu\u002FSkillLearnBench --skill geopandas-coordinate-projections",{"tool":60,"command":61},"pnpm","pnpm dlx skills add cxcscmu\u002FSkillLearnBench --skill geopandas-coordinate-projections","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb4-skill-creator-claude-haiku-4-5\u002Fearthquake-plate-calculation\u002Fgeopandas-coordinate-projections\u002FSKILL.md",true,[],[66,82,103,121,141,152],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":75,"publishedAt":38},"01M6KM5KH175P5ABP5JMX2SBDQ","object_counter","Count occurrences of an object in the image using computer vision algorithm.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Fvideo-object-counting\u002Fobject_counter\u002FSKILL.md",[72],{"categoryNo":73,"categoryName":74,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",[76,77,78,79,80,81],"object counter","object","vision","computer","Computer Vision","image",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":89,"publishedAt":38},"01M6KM51TMVXG79MMPCS6Y8G86","travel-planning-workflow","Invoke this skill when performing travel planning. It defines a structured workflow for generating itineraries. Following this workflow is essential to ensure the final plan satisfies user requirements.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftravel-planning\u002Ftravel-planning-workflow\u002FSKILL.md",[88],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[90,91,92,93,94,95,96,36,97,35,98,99,100,101,102],"workflow","planning","planning workflow","travel","travel planning","travel planning workflow","structured","plan","user","it","requirements","essential","itineraries",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":38},"01M6KM4DY820XHS9YTSK5QP5HD","bundled-dataset-search-tool","invoke this skill when you need to perform database search for travel planning. This skill provides some useful pre-packaged tools to look up accommodations, attractions, cities, driving distance, flights, and restaurants from the bundled dataset.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftravel-planning\u002Fbundled-dataset-search-tool\u002FSKILL.md",[],[110,111,112,113,114,115,116,93,117,118,94,119,35,120,91],"search","tool","dataset","bundled dataset search tool","restaurants","Tools","up","look","flights","you","database",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":38},"01M6KM465BB9PQ0B548HQSVAWZ","glm-output","Output-processing guidance for GLM tasks. Especially useful after glm-basics and glm-calibration when you need verifier-matching metrics from output.nc and a final \u002Froot\u002Fmetrics.json.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-output\u002FSKILL.md",[],[128,129,130,35,131,132,133,134,135,136,137,138,119,139,140],"glm output","output","glm","tasks","metrics","json","basics","guidance","matching","verifier","processing","root","calibration",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":148,"publishedAt":38},"01M6KM40KY3QWDW5W97S39R2BC","glm-calibration","Calibration guidance for GLM tasks. Often most effective after glm-basics has clarified the setup; glm-output is the companion skill for exact final metric computation.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-calibration\u002FSKILL.md",[147],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[149,140,130,129,135,134,131,150,151,35,37],"glm calibration","setup","companion",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":38},"01M6KM3VHHVSGMGHJQB3PPT6YG","glm-basics","A good starting point for GLM calibration tasks. Use to inspect glm3.nml, confirm how GLM runs, and identify the relevant files before moving on to calibration and output evaluation.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-basics\u002FSKILL.md",[],[159,130,134,160,149,140,35,129,161,162,163,30,164,165,131],"glm basics","inspect","relevant","files","good","how","Evaluation"]