Skills Plugins MCP Prompt Model 博客 我的中心
开发编程 #python #javascript #data #image

geomaster

Comprehensive geospatial science skill covering remote sensing, GIS, spatial analysis, machine learning for earth observation, and 30+ scientific domains. Supports satellite imagery processing (Sentinel, Landsat, MODIS, SAR, hyperspectral), vector and raster data operations, spatial statistics, point cloud processing, network analysis, cloud-native workflows (STAC, COG, Planetary Computer), and 8 programming languages (Python, R, Julia, JavaScript, C++, Java, Go, Rust) with 500+ code examples. Use for remote sensing workflows, GIS analysis, spatial ML, Earth observation data processing, terrain analysis, hydrological modeling, marine spatial analysis, atmospheric science, and any geospatial computation task.

DeepseekModel 官方收录技能 质量 优秀 · 90 v1.0.0

获取

https://deepseekmodel.com/api/download.php?id=k-dense-ai-scientific-agent-skills-skills-geomaster-skill-md&format=skill
下载 .skill 标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用
.skill 文件中 system_prompt 字段的实际内容。
name geomaster description Comprehensive geospatial science skill covering remote sensing, GIS, spatial analysis, machine learning for earth observation, and 30+ scientific domains. Supports satellite imagery processing (Sentinel, Landsat, MODIS, SAR, hyperspectral), vector and raster data operations, spatial statistics, point cloud processing, network analysis, cloud-native workflows (STAC, COG, Planetary Computer), and 8 programming languages (Python, R, Julia, JavaScript, C++, Java, Go, Rust) with 500+ code examples. Use for remote sensing workflows, GIS analysis, spatial ML, Earth observation data processing, terrain analysis, hydrological modeling, marine spatial analysis, atmospheric science, and any geospatial computation task. license MIT License metadata {"version":"1.2","skill-author":"K-Dense Inc."} GeoMaster Comprehensive geospatial science skill covering GIS, remote sensing, spatial analysis, and ML for Earth observation across 70+ topics with 500+ code examples in 8 programming languages. Installation # Core Python stack (conda recommended) conda install -c conda-forge gdal rasterio fiona shapely pyproj geopandas # Remote sensing & ML uv pip install rsgislib torchgeo earthengine-api uv pip install scikit-learn xgboost torch-geometric # Network & visualization uv pip install osmnx networkx folium keplergl uv pip install cartopy contextily mapclassify # Big data & cloud uv pip install xarray rioxarray dask-geopandas uv pip install pystac-client planetary-computer # Point clouds uv pip install laspy pylas open3d pdal # Databases conda install -c conda-forge postgis spatialite Quick Start NDVI from Sentinel-2 import rasterio import numpy as np with rasterio. open ( 'sentinel2.tif' ) as src: red = src.read( 4 ).astype( float ) # B04 nir = src.read( 8 ).astype( float ) # B08 ndvi = (nir - red) / (nir + red + 1e-8 ) ndvi = np.nan_to_num(ndvi, nan= 0 ) profile = src.profile profile.update(count= 1 , dtype=rasterio.float32) with rasterio. open ( 'ndvi.tif' , 'w' , **profile) as dst: dst.write(ndvi.astype(rasterio.float32), 1 ) Spatial Analysis with GeoPandas import geopandas as gpd # Load and ensure same CRS zones = gpd.read_file( 'zones.geojson' ) points = gpd.read_file( 'points.geojson' ) if zones.crs != points.crs: points = points.to_crs(zones.crs) # Spatial join and statistics joined = gpd.sjoin(points, zones, how= 'inner' , predicate= 'within' ) stats = joined.groupby( 'zone_id' ).agg({ 'value' : [ 'count' , 'mean' , 'std' , 'min' , 'max' ] }). round ( 2 ) Google Earth Engine Time Series import ee import pandas as pd ee.Initialize(project= 'your-project' ) roi = ee.Geometry.Point([- 122.4 , 37.7 ]).buffer( 10000 ) s2 = (ee.ImageCollection( 'COPERNICUS/S2_SR_HARMONIZED' ) .filterBounds(roi) .filterDate( '2020-01-01' , '2023-12-31' ) . filter (ee.Filter.lt( 'CLOUDY_PIXEL_PERCENTAGE' , 20 ))) def add_ndvi ( img ): return img.addBands(img.normalizedDifference([ 'B8' , 'B4' ]).rename( 'NDVI' )) s2_ndvi = s2. map (add_ndvi) def extract_series ( image ): stats = image.reduceRegion(ee.Reducer.mean(), roi.centroid(), scale= 10 , maxPixels= 1e9 ) return ee.Feature( None , { 'date' : image.date(). format ( 'YYYY-MM-dd' ), 'ndvi' : stats.get( 'NDVI' )}) series = s2_ndvi. map (extract_series).getInfo() df = pd.DataFrame([f[ 'properties' ] for f in series[ 'features' ]]) df[ 'date' ] = pd.to_datetime(df[ 'date' ]) Core Concepts Data Types Type Examples Libraries Vector Shapefile, GeoJSON, GeoPackage GeoPandas, Fiona, GDAL Raster GeoTIFF, NetCDF, COG Rasterio, Xarray, GDAL Point Cloud LAS, LAZ Laspy, PDAL, Open3D Coordinate Systems EPSG:4326 (WGS 84) - Geographic, lat/lon, use for storage EPSG:3857 (Web Mercator) - Web maps only (don't use for area/distance!) EPSG:326xx/327xx (UTM) - Metric calculations, <1% distortion per zone Use gdf.estimate_utm_crs() for automatic UTM detection # Always check CRS before operations assert gdf1.crs == gdf2.crs, "CRS mismatch!" # For area/distance calculations, use projected CRS gdf_metric = gdf.to_crs(gdf.estimate_utm_crs()) area_sqm = gdf_metric.geometry.area OGC Standards WMS : Web Map Service - raster maps WFS : Web Feature Service - vector data WCS : Web Coverage Service - raster coverage STAC : Spatiotemporal Asset Catalog - modern metadata Common Operations Spectral Indices def calculate_indices ( image_path ): """NDVI, EVI, SAVI, NDWI from Sentinel-2.""" with rasterio. open (image_path) as src: B02, B03, B04, B08, B11 = [src.read(i).astype( float ) for i in [ 1 , 2 , 3 , 4 , 5 ]] ndvi = (B08 - B04) / (B08 + B04 + 1e-8 ) evi = 2.5 * (B08 - B04) / (B08 + 6 *B04 - 7.5 *B02 + 1 ) savi = ((B08 - B04) / (B08 + B04 + 0.5 )) * 1.5 ndwi = (B03 - B08) / (B03 + B08 + 1e-8 ) return { 'NDVI' : ndvi, 'EVI' : evi, 'SAVI' : savi, 'NDWI' : ndwi} Vector Operations # Buffer (use projected CRS!) gdf_proj = gdf.to_crs(gdf.estimate_utm_crs()) gdf[ 'buffer_1km' ] = gdf_proj.geometry.buffer( 1000 ) # Spatial relationships intersects = gdf[gdf.geometry.intersects(other_geometry)] contains = gdf[gdf.geometry.contains(point_geometry)] # Geometric operations gdf[ 'centroid' ] = gdf.geometry.centroid gdf[ 'simplified' ] = gdf.geometry.simplify(tolerance= 0.001 ) # Overlay operations intersection = gpd.overlay(gdf1, gdf2, how= 'intersection' ) union = gpd.overlay(gdf1, gdf2, how= 'union' ) Terrain Analysis def terrain_metrics ( dem_path ): """Calculate slope, aspect, hillshade from DEM.""" with rasterio. open (dem_path) as src: dem = src.read( 1 ) dy, dx = np.gradient(dem) slope = np.arctan(np.sqrt(dx** 2 + dy** 2 )) * 180 / np.pi aspect = ( 90 - np.arctan2(-dy, dx) * 180 / np.pi) % 360 # Hillshade az_rad, alt_rad = np.radians( 315 ), np.radians( 45 ) hillshade = (np.sin(alt_rad) * np.sin(np.radians(slope)) + np.cos(alt_rad) * np.cos(np.radians(slope)) * np.cos(np.radians(aspect) - az_rad)) return slope, aspect, hillshade Network Analysis import osmnx as ox import networkx as nx # Download and analyze street network G = ox.graph_from_place( 'San Francisco, CA' , network_type= 'drive' ) G = ox.add_edge_speeds(G).add_edge_travel_times(G) # Shortest path orig = ox.distance.nearest_nodes(G, - 122.4 , 37.7 ) dest = ox.distance.nearest_nodes(G, - 122.3 , 37.8 ) route = nx.shortest_path(G, orig, dest, weight= 'travel_time' ) Image Classification from sklearn.ensemble import RandomForestClassifier import rasterio from rasterio.features import rasterize def classify_imagery ( raster_path, training_gdf, output_path ): """Train RF and classify imagery.""" with rasterio. open (raster_path) as src: image = src.read() profile = src.profile transform = src.transform # Extract training data X_train, y_train = [], [] for _, row in training_gdf.iterrows(): mask = rasterize([(row.geometry, 1 )], out_shape=(profile[ 'height' ], profile[ 'width' ]), transform=transform, fill= 0 , dtype=np.uint8) pixels = image[:, mask > 0 ].T X_train.extend(pixels) y_train.extend([row[ 'class_id' ]] * len (pixels)) # Train and predict rf = RandomForestClassifier(n_estimators= 100 , max_depth= 20 , n_jobs=- 1 ) rf.fit(X_train, y_train) prediction = rf.predict(image.reshape(image.shape[ 0 ], - 1 ).T) prediction = prediction.reshape(profile[ 'height' ], profile[ 'width' ]) profile.update(dtype=rasterio.uint8, count= 1 ) with rasterio. open (output_path, 'w' , **profile) as dst: dst.write(prediction.astype(rasterio.uint8), 1 ) return rf Modern Cloud-Native Workflows STAC + Planetary Computer import pystac_client import planetary_computer import odc.stac # Search Sentinel-2 via STAC catalog = pystac_client.Client. open ( "https://planetarycomputer.microsoft.com/api/stac/v1" , modifier=planetary_computer.sign_inplace, ) search = catalog.search( collections=[ "sentinel-2-l2a" ], bbox=[- 122.5 , 37.7 , - 122.3 , 37.9 ], datetime= "2023-01-01/2023-12-31" , query={ "eo:cloud_cover" : { "lt" : 20 }}, ) # Load as xarray (cloud-native!) data = odc.stac.load( list (search.get_items())[: 5 ], bands=[ "B02" , "B03" , "B04" , "B08" ], crs= "EPSG:32610" , resolution= 10 , ) # Calculate NDVI on xarray ndvi = (data.B08 - data.B04) / (data.B08 + data.B04) Cloud-Optimized GeoTIFF (COG) import rasterio from rasterio.session import AWSSession # Read COG directly from cloud (partial reads) session = AWSSession(aws_access_key_id=..., aws_secret_access_key=...) with rasterio. open ( 's3://bucket/path.tif' , session=session) as src: # Read only window of interest window = (( 1000 , 2000 ), ( 1000 , 2000 )) subset = src.read( 1 , window=window) # Write COG with rasterio. open ( 'output.tif' , 'w' , **profile, tiled= True , blockxsize= 256 , blockysize= 256 , compress= 'DEFLATE' , predictor= 2 ) as dst: dst.write(data) # Validate COG from rio_cogeo.cogeo import cog_validate cog_validate( 'output.tif' ) Performance Tips # 1. Spatial indexing (10-100x faster queries) gdf.sindex # Auto-created by GeoPandas # 2. Chunk large rasters with rasterio. open ( 'large.tif' ) as src: for i, window in src.block_windows( 1 ): block = src.read( 1 , window=window) # 3. Dask for big data import dask.array as da dask_array = da.from_rasterio( 'large.tif' , chunks=( 1 , 1024 , 1024 )) # 4. Use Arrow for I/O gdf.to_file( 'output.gpkg' , use_arrow= True ) # 5. GDAL caching from osgeo import gdal gdal.SetCacheMax( 2 ** 30 ) # 1GB cache # 6. Parallel processing rf = RandomForestClassifier(n_jobs=- 1 ) # All cores Best Practices Always check CRS before spatial operations Use projected CRS for area/distance calculations Validate geometries : gdf = gdf[gdf.is_valid] Handle missing data : gdf['geometry'] = gdf['geometry'].fillna(None) Use efficient formats : GeoPackage > Shapefile, Parquet for large data Apply cloud masking to optical imagery Preserve lineage for reproducible research Use appropriate resolution for your analysis scale Detailed Documentation Coordinate Systems - CRS fundamentals, UTM, transformations Core Libraries - GDAL, Rasterio, GeoPandas, Shapely Remote Sensing - Satellite missions, spectral indices, SAR Machine Learning - Deep learning, CNNs, GNNs for RS GIS Software - QGIS, ArcGIS, GRASS integration Scientific Domains - Marine, hydrology, agriculture, forestry Advanced GIS - 3D GIS, spatiotemporal, topology
Agent 识别该技能的关键词,点击任意一个即可复制。

该技能未提供触发词。

下载的 .skill 包内含以下字段。
字段 说明
format格式标识(skill/v1)
skill_id技能唯一 ID
name技能名称
version版本号
description技能描述
category所属分类(数组)
trigger_words触发词列表
tags标签列表
source来源标识
source_url来源链接(本页地址)
exported_at导出时间(每次下载生成)
system_prompt系统提示词正文
model_config模型参数:provider / model / temperature / max_tokens / top_p
examples示例
install_guide各平台导入说明(Coze / Dify / Claude / 自定义框架)
同一份技能可按不同平台格式导出。
.skill 标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用 下载
.skillpro 增强格式,额外含脚本 / 工具 / 依赖 / 钩子占位 下载
.json 纯 JSON 导出,只含 system_prompt 与模型参数 下载
Coze 带 frontmatter 的 Markdown,Coze 平台导入用 下载
Dify Dify DSL,创建应用后直接导入 下载

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。