[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EC7HJ5KXHMKDVEMGENCG2F":3,"skill-same:01M6EC7HJ5KXHMKDVEMGENCG2F":117},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":20,"frontMatter":21,"refName":22,"commitSha":23,"skillDirectory":24,"forksCount":25,"repositoryHtmlUrl":26,"repositoryHomepageUrl":27,"ownerHtmlUrl":28,"ownerBlogUrl":6,"ownerDescription":29,"updatedAt":30,"install":31,"resources":44},"01M6EC7HJ5KXHMKDVEMGENCG2F","geopandas",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FK-Dense-AI\u002Fclaude-scientific-skills\u002Fgeopandas\u002FSKILL.md",[],[5],"2026-11-10 10:12:30",false,"# GeoPandas\n\nGeoPandas extends pandas to enable spatial operations on geometric types. It combines the capabilities of pandas and shapely for geospatial data analysis.\n\n## Installation\n\n```bash\nuv pip install geopandas\n```\n\n### Optional Dependencies\n\n```bash\n# For interactive maps\nuv pip install folium\n\n# For classification schemes in mapping\nuv pip install mapclassify\n\n# For faster I\u002FO operations (2-4x speedup)\nuv pip install pyarrow\n\n# For PostGIS database support\nuv pip install psycopg2\nuv pip install geoalchemy2\n\n# For basemaps\nuv pip install contextily\n\n# For cartographic projections\nuv pip install cartopy\n```\n\n## Quick Start\n\n```python\nimport geopandas as gpd\n\n# Read spatial data\ngdf = gpd.read_file(\"data.geojson\")\n\n# Basic exploration\nprint(gdf.head())\nprint(gdf.crs)\nprint(gdf.geometry.geom_type)\n\n# Simple plot\ngdf.plot()\n\n# Reproject to different CRS\ngdf_projected = gdf.to_crs(\"EPSG:3857\")\n\n# Calculate area (use projected CRS for accuracy)\ngdf_projected['area'] = gdf_projected.geometry.area\n\n# Save to file\ngdf.to_file(\"output.gpkg\")\n```\n\n## Core Concepts\n\n### Data Structures\n\n- **GeoSeries**: Vector of geometries with spatial operations\n- **GeoDataFrame**: Tabular data structure with geometry column\n\nSee [data-structures.md](references\u002Fdata-structures.md) for details.\n\n### Reading and Writing Data\n\nGeoPandas reads\u002Fwrites multiple formats: Shapefile, GeoJSON, GeoPackage, PostGIS, Parquet.\n\n```python\n# Read with filtering\ngdf = gpd.read_file(\"data.gpkg\", bbox=(xmin, ymin, xmax, ymax))\n\n# Write with Arrow acceleration\ngdf.to_file(\"output.gpkg\", use_arrow=True)\n```\n\nSee [data-io.md](references\u002Fdata-io.md) for comprehensive I\u002FO operations.\n\n### Coordinate Reference Systems\n\nAlways check and manage CRS for accurate spatial operations:\n\n```python\n# Check CRS\nprint(gdf.crs)\n\n# Reproject (transforms coordinates)\ngdf_projected = gdf.to_crs(\"EPSG:3857\")\n\n# Set CRS (only when metadata missing)\ngdf = gdf.set_crs(\"EPSG:4326\")\n```\n\nSee [crs-management.md](references\u002Fcrs-management.md) for CRS operations.\n\n## Common Operations\n\n### Geometric Operations\n\nBuffer, simplify, centroid, convex hull, affine transformations:\n\n```python\n# Buffer by 10 units\nbuffered = gdf.geometry.buffer(10)\n\n# Simplify with tolerance\nsimplified = gdf.geometry.simplify(tolerance=5, preserve_topology=True)\n\n# Get centroids\ncentroids = gdf.geometry.centroid\n```\n\nSee [geometric-operations.md](references\u002Fgeometric-operations.md) for all operations.\n\n### Spatial Analysis\n\nSpatial joins, overlay operations, dissolve:\n\n```python\n# Spatial join (intersects)\njoined = gpd.sjoin(gdf1, gdf2, predicate='intersects')\n\n# Nearest neighbor join\nnearest = gpd.sjoin_nearest(gdf1, gdf2, max_distance=1000)\n\n# Overlay intersection\nintersection = gpd.overlay(gdf1, gdf2, how='intersection')\n\n# Dissolve by attribute\ndissolved = gdf.dissolve(by='region', aggfunc='sum')\n```\n\nSee [spatial-analysis.md](references\u002Fspatial-analysis.md) for analysis operations.\n\n### Visualization\n\nCreate static and interactive maps:\n\n```python\n# Choropleth map\ngdf.plot(column='population', cmap='YlOrRd', legend=True)\n\n# Interactive map\ngdf.explore(column='population', legend=True).save('map.html')\n\n# Multi-layer map\nimport matplotlib.pyplot as plt\nfig, ax = plt.subplots()\ngdf1.plot(ax=ax, color='blue')\ngdf2.plot(ax=ax, color='red')\n```\n\nSee [visualization.md](references\u002Fvisualization.md) for mapping techniques.\n\n## Detailed Documentation\n\n- **[Data Structures](references\u002Fdata-structures.md)** - GeoSeries and GeoDataFrame fundamentals\n- **[Data I\u002FO](references\u002Fdata-io.md)** - Reading\u002Fwriting files, PostGIS, Parquet\n- **[Geometric Operations](references\u002Fgeometric-operations.md)** - Buffer, simplify, affine transforms\n- **[Spatial Analysis](references\u002Fspatial-analysis.md)** - Joins, overlay, dissolve, clipping\n- **[Visualization](references\u002Fvisualization.md)** - Plotting, choropleth maps, interactive maps\n- **[CRS Management](references\u002Fcrs-management.md)** - Coordinate reference systems and projections\n\n## Common Workflows\n\n### Load, Transform, Analyze, Export\n\n```python\n# 1. Load data\ngdf = gpd.read_file(\"data.shp\")\n\n# 2. Check and transform CRS\nprint(gdf.crs)\ngdf = gdf.to_crs(\"EPSG:3857\")\n\n# 3. Perform analysis\ngdf['area'] = gdf.geometry.area\nbuffered = gdf.copy()\nbuffered['geometry'] = gdf.geometry.buffer(100)\n\n# 4. Export results\ngdf.to_file(\"results.gpkg\", layer='original')\nbuffered.to_file(\"results.gpkg\", layer='buffered')\n```\n\n### Spatial Join and Aggregate\n\n```python\n# Join points to polygons\npoints_in_polygons = gpd.sjoin(points_gdf, polygons_gdf, predicate='within')\n\n# Aggregate by polygon\naggregated = points_in_polygons.groupby('index_right').agg({\n    'value': 'sum',\n    'count': 'size'\n})\n\n# Merge back to polygons\nresult = polygons_gdf.merge(aggregated, left_index=True, right_index=True)\n```\n\n### Multi-Source Data Integration\n\n```python\n# Read from different sources\nroads = gpd.read_file(\"roads.shp\")\nbuildings = gpd.read_file(\"buildings.geojson\")\nparcels = gpd.read_postgis(\"SELECT * FROM parcels\", con=engine, geom_col='geom')\n\n# Ensure matching CRS\nbuildings = buildings.to_crs(roads.crs)\nparcels = parcels.to_crs(roads.crs)\n\n# Perform spatial operations\nbuildings_near_roads = buildings[buildings.geometry.distance(roads.union_all()) \u003C 50]\n```\n\n## Performance Tips\n\n1. **Use spatial indexing**: GeoPandas creates spatial indexes automatically for most operations\n2. **Filter during read**: Use `bbox`, `mask`, or `where` parameters to load only needed data\n3. **Use Arrow for I\u002FO**: Add `use_arrow=True` for 2-4x faster reading\u002Fwriting\n4. **Simplify geometries**: Use `.simplify()` to reduce complexity when precision isn't critical\n5. **Batch operations**: Vectorized operations are much faster than iterating rows\n6. **Use appropriate CRS**: Projected CRS for area\u002Fdistance, geographic for visualization\n\n## Best Practices\n\n1. **Always check CRS** before spatial operations\n2. **Use projected CRS** for area and distance calculations\n3. **Match CRS** before spatial joins or overlays\n4. **Validate geometries** with `.is_valid` before operations\n5. **Use `.copy()`** when modifying geometry columns to avoid side effects\n6. **Preserve topology** when simplifying for analysis\n7. **Use GeoPackage** format for modern workflows (better than Shapefile)\n8. **Set max_distance** in sjoin_nearest for better performance\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FK-Dense-AI\u002Fclaude-scientific-skills\u002Fgeopandas",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill geopandas",{"tool":37,"command":38},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill geopandas",{"tool":40,"command":41},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill geopandas","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FK-Dense-AI\u002Fclaude-scientific-skills\u002Fgeopandas\u002FSKILL.md",true,[45,51,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"customize.toml","OTHER","其他",1642,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fcustomize.toml",{"path":52,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":55,"sourceHtmlUrl":56},"steps\u002Fstep-01-init.md","REFERENCE","参考文档",5785,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-01-init.md",{"path":58,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":59,"sourceHtmlUrl":60},"steps\u002Fstep-01b-continue.md",4862,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-01b-continue.md",{"path":62,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":63,"sourceHtmlUrl":64},"steps\u002Fstep-02-discovery.md",6761,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-02-discovery.md",{"path":66,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":67,"sourceHtmlUrl":68},"steps\u002Fstep-03-core-experience.md",8208,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-03-core-experience.md",{"path":70,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":71,"sourceHtmlUrl":72},"steps\u002Fstep-04-emotional-response.md",8247,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-04-emotional-response.md",{"path":74,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":75,"sourceHtmlUrl":76},"steps\u002Fstep-05-inspiration.md",8649,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-05-inspiration.md",{"path":78,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":79,"sourceHtmlUrl":80},"steps\u002Fstep-06-design-system.md",8749,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-06-design-system.md",{"path":82,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":83,"sourceHtmlUrl":84},"steps\u002Fstep-07-defining-experience.md",8751,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-07-defining-experience.md",{"path":86,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":87,"sourceHtmlUrl":88},"steps\u002Fstep-08-visual-foundation.md",8351,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-08-visual-foundation.md",{"path":90,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":91,"sourceHtmlUrl":92},"steps\u002Fstep-09-design-directions.md",8536,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-09-design-directions.md",{"path":94,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":95,"sourceHtmlUrl":96},"steps\u002Fstep-10-user-journeys.md",8367,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-10-user-journeys.md",{"path":98,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":99,"sourceHtmlUrl":100},"steps\u002Fstep-11-component-strategy.md",8660,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-11-component-strategy.md",{"path":102,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":103,"sourceHtmlUrl":104},"steps\u002Fstep-12-ux-patterns.md",7912,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-12-ux-patterns.md",{"path":106,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":107,"sourceHtmlUrl":108},"steps\u002Fstep-13-responsive-accessibility.md",9012,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-13-responsive-accessibility.md",{"path":110,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":111,"sourceHtmlUrl":112},"steps\u002Fstep-14-complete.md",7082,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fsteps\u002Fstep-14-complete.md",{"path":114,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":115,"sourceHtmlUrl":116},"ux-design-template.md",236,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fgds-create-ux-design\u002Fux-design-template.md",[118,132,142,151,157,164],{"skillNo":119,"name":120,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":128,"publishedAt":18},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[123],{"categoryNo":124,"categoryName":125,"taxonomyType":126,"taxonomyTypeDesc":127},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[129,130,131],"model","model hierarchy","model hierarchy skill",{"skillNo":133,"name":134,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":138,"publishedAt":18},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[137],{"categoryNo":124,"categoryName":125,"taxonomyType":126,"taxonomyTypeDesc":127},[139,140,141],"MCP","zoom","zoom mcp",{"skillNo":143,"name":144,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":18},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[148,149,150,140],"sdk","zoom apps sdk","apps",{"skillNo":152,"name":153,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":156,"publishedAt":18},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[153],{"skillNo":158,"name":159,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":163,"publishedAt":18},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[162],{"categoryNo":124,"categoryName":125,"taxonomyType":126,"taxonomyTypeDesc":127},[159],{"skillNo":165,"name":166,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":18},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[166]]