GeoMaster 地理空间科学技能库完全指南:从遥感影像处理到空间机器学习的 8 语言实战手册
【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000+ scientists worldwide. 165 ready-to-use validated skills plus 100+ scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills
GeoMaster 是本仓库中一个覆盖 GIS、遥感、空间分析与地球观测机器学习的综合型 Agent 技能,横跨 70+ 科学主题,内置 500+ 代码示例与 8 种编程语言(Python、R、Julia、JavaScript、C++、Java、Go、Rust)支持。本篇指南以技能主文档 SKILL.md 为核心骨架,结合其 references 参考文档目录 与配套说明 README.md,系统讲解环境搭建、三大快速上手工作流、坐标系与 OGC 标准、光谱指数/地形/网络分析、机器学习影像分类、STAC/COG 云原生处理、性能优化与最佳实践,并深入其源码级实现原理,帮助你从零构建一套可复制、可运行的遥感与 GIS 分析管线。
技能定位与覆盖范围
GeoMaster 是 skills 技能库 中体量最大的地理空间科学技能之一。从 SKILL.md 的 frontmatter 元数据可以看到,它被设计为面向 "Comprehensive geospatial science" 的一站式能力:
- 70+ 科学主题:覆盖遥感、GIS、空间统计、地球观测机器学习等方向;
- 500+ 代码示例:横跨 8 种编程语言;
- 300+ 地理空间库与工具:从 Python 生态的 GDAL/Rasterio/GeoPandas,到 R 的 sf/terra、Julia 的 ArchGDAL/GeoStats.jl、JavaScript 的 Turf.js/Leaflet、C++ 的 GDAL API、Java 的 GeoTools、Go 的 Simple Features Go 与 Rust 的 GeoRust;
- 典型应用场景:遥感工作流、GIS 分析、空间机器学习、地球观测数据处理、地形分析、水文建模、海洋空间分析、大气科学等。
技能遵循 MIT License,作者为 K-Dense Inc.。技能由一份主文档 SKILL.md 与 14 份专题参考文档组成,主文档承担"安装 + 快速上手 + 核心概念 + 常用操作 + 分类 + 云原生 + 性能 + 最佳实践"的主线,参考文档则逐层展开坐标系、核心库、遥感、机器学习、GIS 软件、科学领域、大数据、数据源与排错等纵深细节。阅读顺序建议:先通读本文,再按需进入对应 references 文档。
环境安装与依赖体系
GeoMaster 建议使用 conda 管理底层二进制依赖(GDAL 等 C 库绑定),用 uv 管理纯 Python 包。完整安装命令如下:
# 核心 Python 栈(推荐 conda 管理二进制依赖) conda install -c conda-forge gdal rasterio fiona shapely pyproj geopandas # 遥感与机器学习 uv pip install rsgislib torchgeo earthengine-api uv pip install scikit-learn xgboost torch-geometric # 网络分析与可视化 uv pip install osmnx networkx folium keplergl uv pip install cartopy contextily mapclassify # 大数据与云原生 uv pip install xarray rioxarray dask-geopandas uv pip install pystac-client planetary-computer # 点云处理 uv pip install laspy pylas open3d pdal # 数据库 conda install -c conda-forge postgis spatialite这套安装命令按职责分成六个层次,对应技能覆盖的六大能力域:
| 层次 | 关键包 | 用途 |
|---|---|---|
| 核心栅格/矢量 | gdal、rasterio、fiona、shapely、pyproj、geopandas | 数据 I/O、几何运算、坐标转换 |
| 遥感与空间 ML | rsgislib、torchgeo、earthengine-api、scikit-learn、xgboost、torch-geometric | 影像处理、深度学习、GNN |
| 网络与可视化 | osmnx、networkx、folium、keplergl、cartopy、contextily、mapclassify | 路网分析、制图 |
| 大数据与云 | xarray、rioxarray、dask-geopandas、pystac-client、planetary-computer | 分块计算、STAC 数据访问 |
| 点云 | laspy、pylas、open3d、pdal | LAS/LAZ 点云读写与处理 |
| 空间数据库 | postgis、spatialite | 空间 SQL 存储 |
为什么用 conda 安装 GDAL/Rasterio 系?troubleshooting 排错文档 给出了明确解释:gdal-config not found、Windows 的DLL load failed、macOS 的Symbol not found等安装失败,本质都是 GDAL 这类 C/C++ 绑定库的二进制链接问题。conda-forge 预编译了完整依赖树,是官方推荐的方案;若必须用 pip 系,可先sudo apt-get install gdal-bin libgdal-dev(Ubuntu/Debian)并导出CPLUS_INCLUDE_PATH、C_INCLUDE_PATH,再uv pip install rasterio。装好后可用下面的命令验证:
python -c "from osgeo import gdal; print(gdal.__version__)" python -c "import rasterio; print(rasterio.__version__)"快速上手:三条必会工作流
工作流一:从 Sentinel-2 计算 NDVI
归一化植被指数(NDVI)是遥感入门的第一课。技能给出的 Sentinel-2 版本直接使用栅格波段算术,并通过1e-8防止除零、np.nan_to_num处理无效值:
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)需要特别注意 Sentinel-2 的波段编号陷阱。remote-sensing 遥感参考文档 与 troubleshooting 排错文档 都强调:波段索引取决于数据是否已重采样。以 10m 重采样后的栈为例,B02=1, B03=2, B04=3, B05=4, B06=5, B07=6, B08=7, B8A=8, B11=9, B12=10;若只含 10m 波段,则蓝/绿/红/近红外依次是 1/2/3/4。因此上例中read(4)是红 B04、read(8)是近红外 B08 的前提是输入为"10m 波段重采样栈"。写回时复用源profile并仅更新count与dtype,可保证地理配准信息(transform、crs)完全一致。
工作流二:GeoPandas 空间连接与统计
矢量数据最常见的需求是按行政区划汇总点位统计。技能示例演示了先统一 CRS、再空间连接、最后聚合统计的标准三步:
import geopandas as gpd # 加载数据并确保 CRS 一致 zones = gpd.read_file('zones.geojson') points = gpd.read_file('points.geojson') if zones.crs != points.crs: points = points.to_crs(zones.crs) # 空间连接与统计 joined = gpd.sjoin(points, zones, how='inner', predicate='within') stats = joined.groupby('zone_id').agg({ 'value': ['count', 'mean', 'std', 'min', 'max'] }).round(2)predicate='within'相比默认的'intersects'在点-面连接时更快、语义更精确。core-libraries 核心库文档 中还补充了sjoin_nearest(最近邻连接,可设max_distance)、gpd.overlay(面叠加:intersection/union/difference)、gpd.clip(裁剪)、gdf.dissolve(融合)等高频操作,并指出gdf.sindex由 GeoPandas 自动创建的空间索引可将查询提速 10-100 倍。
工作流三:Google Earth Engine 时间序列提取
对于"不下载数据、在云端计算"的场景,技能示例演示了用 Earth Engine 拉取 2020-2023 年旧金山湾区的 Sentinel-2 云量小于 20% 的 NDVI 时间序列:
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'])ee.normalizedDifference(['B8','B4'])是(B8-B4)/(B8+B4)的云端矢量实现;reduceRegion以scale=10(对应 Sentinel-2 10m 分辨率)在缓冲区质心做均值归约。big-data 大数据文档 进一步展示了在 GEE 上构造逐年无云合成影像(位运算 QA60 云掩膜 +median()合成)并通过ee.batch.Export.image.toDrive导出到 Google Drive 的完整流程。
核心概念:数据类型、坐标系与 OGC 标准
三类空间数据类型
技能把空间数据抽象为三类,对应不同的库与操作方式:
| 类型 | 格式示例 | 常用库 |
|---|---|---|
| 矢量(Vector) | Shapefile、GeoJSON、GeoPackage | GeoPandas、Fiona、GDAL |
| 栅格(Raster) | GeoTIFF、NetCDF、COG | Rasterio、Xarray、GDAL |
| 点云(Point Cloud) | LAS、LAZ | Laspy、PDAL、Open3D |
core-libraries 核心库文档 给出了这一层级的源码级对应关系:GDAL 是底层 I/O 引擎,Rasterio 提供更 Pythonic 的栅格接口(src.read(1)、src.profile、rasterio.windows分窗读取、rasterio.mask.mask按多边形裁剪),Fiona 负责矢量流式读写(schema/crs元数据),Shapely 承载几何运算(buffer/simplify/centroid/intersection与within/intersects/contains关系谓词),PyProj 处理坐标系变换,GeoPandas 将 pandas 与上述能力融合为GeoDataFrame。
坐标系(CRS)选择决策
坐标系是空间分析出错率最高的环节。技能主文档给出三条硬规则:
- EPSG:4326(WGS 84):经纬度地理坐标系,用于存储、全球数据集、GeoJSON/KML 等 Web API;
- EPSG:3857(Web Mercator):只用于 Web 地图可视化,禁止用于面积/距离计算;
- EPSG:326xx / 327xx(UTM):米制计算,每带内形变 <1%,局部分析首选。
# 操作前务必检查 CRS 是否一致 assert gdf1.crs == gdf2.crs, "CRS mismatch!" # 面积/距离计算必须使用投影坐标系 gdf_metric = gdf.to_crs(gdf.estimate_utm_crs()) area_sqm = gdf_metric.geometry.areacoordinate-systems 坐标系文档 把 UTM 机制讲得更细:地球被划分为 60 个 6° 经度带,北半球用 32601-32660,南半球用 32701-32760,可用floor((lon+180)/6)+1手算,或直接依赖 GeoPandas 的gdf.estimate_utm_crs()自动探测最优带。该文档还给出了pyproj.Transformer的坐标转换模板(务必使用always_xy=True保证输入是 x=经度、y=纬度),以及按研究尺度选投影的建议:局部(<500km 范围)用 UTM,美国全国用 EPSG:5070、欧洲用 EPSG:3035,Web 可视化才用 EPSG:3857。
OGC 互操作标准
当涉及服务化数据访问时,技能总结了四类 OGC 标准:
- WMS(Web Map Service):栅格底图服务;
- WFS(Web Feature Service):矢量要素服务;
- WCS(Web Coverage Service):栅格覆盖服务;
- STAC(SpatioTemporal Asset Catalog):现代时空数据目录标准,按 collection / item / asset 组织,配合 GeoJSON 描述时空范围与云量等属性。
其中 STAC 是云原生工作流(见下文第七节)的数据发现基石,data-sources 数据源文档 展示了通过pystac_client同时对接 Microsoft Planetary Computer 与 Element 84 的earth-search两个目录的用法。
常用操作工具箱
光谱指数族
技能将常用光谱指数封装为一个函数族,覆盖植被、土壤、水体与火烧迹地监测:
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}remote-sensing 遥感文档 扩充了完整指数族:NDVI(植被绿度)、EVI(抗大气/土壤)、SAVI(土壤调节,L 默认 0.5)、NDWI(水体)、MNDWI(开阔水面,用 SWIR 替换 NIR)、NBR(归一化燃烧比,火灾评估)、NDBI(不透水面/建成区),并指出 EVI 系数2.5*(NIR-Red)/(NIR+6*Red-7.5*Blue+1)中 6 与 7.5 是气溶胶阻力系数。此外还覆盖了 SAR 后向散射分贝转换、Lee 斑点滤波与比值指数(RVI 雷达植被指数、SMI 土壤湿度指数),以及高光谱的红边位置(REP,680-750nm 一阶导数最大值)计算。
矢量几何操作
# Buffer(务必使用投影坐标系!) gdf_proj = gdf.to_crs(gdf.estimate_utm_crs()) gdf['buffer_1km'] = gdf_proj.geometry.buffer(1000) # 空间关系 intersects = gdf[gdf.geometry.intersects(other_geometry)] contains = gdf[gdf.geometry.contains(point_geometry)] # 几何运算 gdf['centroid'] = gdf.geometry.centroid gdf['simplified'] = gdf.geometry.simplify(tolerance=0.001) # 叠加运算 intersection = gpd.overlay(gdf1, gdf2, how='intersection') union = gpd.overlay(gdf1, gdf2, how='union')其中buffer(1000)在 UTM 投影下表示 1000 米缓冲。若在 EPSG:4326 下执行,参数单位是"度",结果毫无意义——这是 troubleshooting 排错文档 列出的头号错误:"Buffer of 1000 degrees"。正确做法永远是先to_crs投影,再执行缓冲与面积计算。
地形分析(DEM)
技能用纯 NumPy 实现了一套 DEM 地形指标:
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, hillshadeslope由梯度幅度反正切得到,aspect是坡向角,hillshade采用默认光源方位角 315°、高度角 45° 的山体阴影公式。若想直接调用成熟 GIS 引擎,gis-software 文档 给出了 ArcPy 的Slope/Aspect/Hillshade/Viewshed/CostDistance/FlowDirection/FlowAccumulation以及 GRASS 的r.slope.aspect等价实现。
路网分析与路径规划
OSMnx + NetworkX 组合可以完成从"下载真实路网"到"最短路径规划"的完整链路:
import osmnx as ox import networkx as nx # 下载并构建街道网络 G = ox.graph_from_place('San Francisco, CA', network_type='drive') G = ox.add_edge_speeds(G).add_edge_travel_times(G) # 最短路径(以行驶时间为权重) 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')advanced-gis 高级 GIS 文档 把网络分析进一步扩展为多准则路由(对 length 与 travel_time 归一化后加权组合)、等时圈(isochrone,nx.ego_graph+ 凸包)、介数中心性、服务区分析与基于 K-Means 的设施选址(p-median 启发式),并给出了移动对象轨迹分析(MovingPandas 的停靠点检测、道格拉斯-普克泛化)与时空立方体/新兴热点(Getis-Ord Gi*)等进阶方法。
遥感影像分类实战:从训练样本到全图预测
技能主文档给出的随机森林分类器是一个端到端的完整范例——它展示了如何把矢量训练样本栅格化、抽取像元光谱特征、训练模型并对整幅影像做像素级预测:
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 # 从训练多边形提取像元样本 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)) # 训练与预测 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关键点:rasterize将训练面要素按影像 transform 栅格化为掩膜,image[:, mask > 0]抽取落入样本区域的逐波段像元构成特征矩阵X_train,类别标签取row['class_id'];预测时将(bands, H, W)重塑为(H*W, bands)逐像元预测再还原二维;输出 profile 更新为uint8单波段。
machine-learning 机器学习文档 将该流程升级为工业级版本:
- 更稳健的训练管线:
train_test_split(test_size=0.2, stratify=y)分层划分、class_weight='balanced'处理类别不平衡、min_samples_split=10与min_samples_leaf=4防过拟合,并输出classification_report与feature_importances_; - SVM 替代方案:
StandardScaler标准化 + RBF 核SVC(C=100, gamma='scale'),多分类用OneVsRestClassifier; - 深度学习方法:TorchGeo 数据生态下的编码器-解码器 CNN、带跳跃连接的 U-Net 语义分割、双时相 Siamese 网络变化检测;
- 图神经网络:用 k-NN 构建空间邻接图后接
GCNConv做空间预测; - 可解释性(XAI):SHAP 解释器生成特征归因图,并可做空间聚合(邻域 SHAP 均值),或对 CNN 用 Grad-CAM 生成注意力热图。
现代云原生工作流:STAC 与 COG
STAC + Planetary Computer 检索并加载
云原生范式是"元数据进目录、数据按需取",技能示例完整演示了 STAC 检索到 xarray 加载的链路:
import pystac_client import planetary_computer import odc.stac # 通过 STAC 检索 Sentinel-2 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}}, ) # 云原生方式加载为 xarray(延迟计算) data = odc.stac.load( list(search.get_items())[:5], bands=["B02", "B03", "B04", "B08"], crs="EPSG:32610", resolution=10, ) # 直接在 xarray 上计算 NDVI ndvi = (data.B08 - data.B04) / (data.B08 + data.B04)planetary_computer.sign_inplace负责给检索到的 asset 签署临时 SAS 凭证;odc.stac.load将 STAC items 转换为带坐标维度的 xarray DataArray,crs="EPSG:32610"、resolution=10指定重投影目标,此时计算仍是惰性的。big-data 大数据文档 补充了将 100 个 items 分块加载(chunkx=1024, chunky=1024)、惰性统计(data.mean().compute())以及通过 rioxarray 导出压缩 GeoTIFF 的用法。
COG:云优化 GeoTIFF 的读写与校验
import rasterio from rasterio.session import AWSSession # 从云端直接读取 COG(支持局部读取) session = AWSSession(aws_access_key_id=..., aws_secret_access_key=...) with rasterio.open('s3://bucket/path.tif', session=session) as src: # 只读取感兴趣窗口 window = ((1000, 2000), (1000, 2000)) subset = src.read(1, window=window) # 写出 COG with rasterio.open('output.tif', 'w', **profile, tiled=True, blockxsize=256, blockysize=256, compress='DEFLATE', predictor=2) as dst: dst.write(data) # 校验 COG from rio_cogeo.cogeo import cog_validate cog_validate('output.tif')COG 的三个核心特性在参数中直接体现:tiled=True分块存储(256×256 块)、compress='DEFLATE'+predictor=2水平差分压缩、内部 overviews。它们共同保证 HTTP Range 请求只需拉取所需瓦片。若要生产级转换,big-data 文档 推荐直接用rio_cogeo.cog_translate(可设overview_level=5、overview_resampling='average'),或手动src.build_overviews([2,4,8,16])。该文档还覆盖了 Google Cloud Storage 直读(GSSession)、Zarr 多维数据立方体存储与带空间索引的 GeoParquet 矢量格式。
性能优化清单
技能主文档给出 6 条立即可用的性能手段,并附赠底层解释:
# 1. 空间索引(查询提速 10-100 倍) gdf.sindex # GeoPandas 自动创建 # 2. 大栅格分块处理 with rasterio.open('large.tif') as src: for i, window in src.block_windows(1): block = src.read(1, window=window) # 3. Dask 处理超大数据 import dask.array as da dask_array = da.from_rasterio('large.tif', chunks=(1, 1024, 1024)) # 4. 用 Arrow 加速 I/O gdf.to_file('output.gpkg', use_arrow=True) # 5. GDAL 缓存 from osgeo import gdal gdal.SetCacheMax(2**30) # 1GB 缓存 # 6. 并行计算 rf = RandomForestClassifier(n_jobs=-1) # 使用全部核big-data 文档 将性能话题升级到分布式与异构计算:dask_geopandas.read_file(..., npartitions=10)惰性分块读入后执行空间操作再.compute();dask.distributed.LocalCluster可开多 worker 多线程;GPU 侧可用 CuPy 完成 NDVI 等逐像元运算、RAPIDScuspatial在 GPU 上直接做空间连接,PyTorchDataLoader(pin_memory=True)+autocast/GradScaler混合精度训练则显著加速深度模型。troubleshooting 排错文档 针对MemoryError给出分窗读取、逐块block_windows、Dask 化三级降级方案,并指出慢重投影可先simplify几何或用geometry_precision降精度。
最佳实践清单
技能主文档以 8 条最佳实践收束全篇,这也是任何空间分析项目应固化为流水线检查项的经验:
- 始终检查 CRS:空间操作前
assert gdf1.crs == gdf2.crs; - 面积/距离用投影坐标系:
estimate_utm_crs()自动选 UTM 带; - 校验几何有效性:
gdf = gdf[gdf.is_valid],无效几何用make_valid()或buffer(0)修复; - 处理缺失几何:
gdf['geometry'] = gdf['geometry'].fillna(None); - 使用高效格式:GeoPackage 优于 Shapefile,大数据用 Parquet;
- 光学影像必须做云掩膜:优先利用 SCL 场景分类层(云类 8/9/10、云影 3、饱和 1 需掩除);
- 保留数据谱系(lineage)以保证研究可复现;
- 分辨率与研究尺度匹配:避免用超出分析尺度的过采样数据。
针对数据质量问题,troubleshooting 文档 提供了一个可直接复用的check_geodataframe健康检查函数——一次性输出 Shape/CRS/Bounds/无效几何数/空几何数/重复几何数/几何类型分布与坐标值域,并把"坐标顺序颠倒(lon/lat 与 lat/lon)""CRS 为 None 时按经纬度值域推断 EPSG:4326"等高频坑整理成了错误速查表(CRS mismatch、TopologyException、MemoryError、Invalid projection、Empty geometry等常见错误的成因与解法)。
延伸学习:参考文档导航
技能将全部纵深知识沉淀在 14 份参考文档中,按主题可划分为五条学习路线:
- 数据与坐标系:coordinate-systems.md(CRS 原理、UTM 分区、pyproj 变换)、core-libraries.md(GDAL/Rasterio/Fiona/Shapely/PyProj/GeoPandas 逐库 API)、data-sources.md(哨兵/陆地卫星/商业卫星、SRTM 高程、ESA WorldCover、ERA5 再分析、OSM 与 Natural Earth 的获取方式);
- 遥感与 ML:remote-sensing.md(卫星任务、光谱指数、SAR、高光谱、大气校正 6S、云掩膜、全色锐化)、machine-learning.md(RF/SVM、CNN/U-Net/Siamese、GNN、SHAP 与 Grad-CAM);
- 高级分析与工程:advanced-gis.md(3D GIS、体素体积、视域分析、时空立方体、拓扑校验、网络分析)、big-data.md(Dask、GEE、Planetary Computer、GPU 加速、COG/Zarr/Parquet);
- 软件与多语言:gis-software.md(QGIS/PyQGIS、ArcPy、GRASS、SAGA 集成)、programming-languages.md(R/Julia/JavaScript/C++/Java/Go/Rust 的等价实现);
- 应用与运维:scientific-domains.md(海洋、水文、农业、林业等科学领域应用)、specialized-topics.md(地统计学变异函数、优化、伦理与最佳实践)、industry-applications.md(城市规划、灾害管理等行业应用)、troubleshooting.md(安装排错、运行时错误、性能与调试策略)、code-examples.md(500+ 全语言代码示例索引)。
结语
从单幅 Sentinel-2 的 NDVI 计算,到 STAC 云目录检索、COG 局部读取、随机森林全图分类,再到 Dask 分布式与 GPU 加速,GeoMaster 技能用一个主文档串起了地理空间科学的完整技术栈,并用 14 份参考文档把每一个环节打磨到可直接落地。无论你是在做遥感变化监测、路网可达性分析、流域水文建模,还是面向地球观测的深度学习,都可以以此技能为起点,按"安装 → 快速上手 → 核心概念 → 分类与云原生 → 性能与排错"的路径循序渐进,最终沉淀出一套可复现、可扩展的空间分析流水线。
【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000+ scientists worldwide. 165 ready-to-use validated skills plus 100+ scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考