用途:为在单台“胖节点”上设计和调试大规模并行地理空间处理提供参考。核心思路是沿天然独立的轴分区,再对分区运行 embarrassingly parallel 进程池;先判断是否存在天然不相交分区(州、县、瓦片、Hilbert 单元、栅格窗口、时间片),有则用 ProcessPool;输出不相交但输入重叠时先建 STRtree 再按输出分区;全局聚合则分解为树形归约。
主要能力与要点:列出大陆级规模下会段错误或静默损坏的操作及修复,如 DuckDB 对 1500 万行做 ST_Touches 自连接会 exit 139,应物化到 Arrow 并用 shapely.STRtree;ST_Union_Agg 分组会崩溃,改为 Python 分组加 ProcessPool 与 shapely.union_all;ST_Buffer 叠加 ST_Transform 会崩溃,改为 DuckDB 重投影后取 WKB 再用 shapely.buffer;ST_Transform 从 EPSG:4326 必须传 always_xy => true,否则坐标变 Infinity;GROUP BY 混用命名键与 ALL 会解析错误;union_all 前应 make_valid;标签用 int64 避免溢出;网络文件系统读取前先暂存到本地 NVMe;FlatGeobuf 写入前过滤空几何;Tippecanoe 超 1 亿要素需分片。
使用方式:给出 parallel_map 与 worker_count(0.95) 的进程池模式、树形归约示例(按 tile_id 分区、envelope、on_edge 过滤、按州分区、STRtree+touches、union-find、union_all),以及输出不相交空间连接示例。默认建议包括锁定 CRS、GeoParquet 1.1 全 PROJJSON、显式 bbox 列、写入前 Hilbert 排序、行组 5 万至 10 万、zstd 压缩、int64、每个边界做几何有效性校验。
适用场景与限制:适合单节点可容纳工作集的大陆级矢量与栅格处理;工作集超过约 512GB 或需跨异构存储时才考虑 Dask、Sedona/Spark 或多节点数组作业。资料未提供安装命令、收费与平台信息。