SuperAPI AI 工具集

pmtiles-pipeline

数据与分析

查看项目

更新于 10-16 09:57

技能介绍

用途:在单台多核大内存节点上,从栅格预测结果或大型矢量数据集构建单一全球 PMTiles 归档。流程为 raster.zarr → GeoParquet 分片 → FlatGeobuf 批次 → 分片 tippecanoe → tile-join → pmtiles。

主要能力:

  1. 栅格转多边形:用 contourrs.shapes_arrow 把分类 uint8 栅格直接矢量化为 Arrow;按类用 scipy.ndimage.binary_opening 预过滤噪点;经 geopandas 以 zstd 压缩写 GeoParquet,每个超级瓦片一个分片,字段含 class、area_deg2、geometry。
  2. 字段面积分析:抽样约100个分片,读取 class 与 area_deg2,换算平方米并查看分位数与累计阈值,用于确定面积过滤与简化容差。
  3. GeoParquet 转 FlatGeobuf:按物理核数轮询分批,每批合并分片、按面积阈值过滤、shapely.simplify 简化、剔除 NULL/空/无效几何,再用 pyogrio.write_dataframe 以 FlatGeobuf 写出。tippecanoe 通过 FGB 原生并行,GeoJSON-seq 会退化为单线程。
  4. 分片构建:把 FGB 从网络存储暂存到本地 NVMe,运行 N 个 TIPPECANOE_MAX_THREADS=1 的 tippecanoe,再用 tile-join 合并为最终 pmtiles,最后拷回网络存储。单进程 tippecanoe 在亿级要素规模难以扩展。
  5. 重复构建加速:按 z=3 地理分片为64格,分别构建瓦片互不重叠的子 pmtiles,再用 go-pmtiles merge 做字节级拼接,比 tile-join 快。

使用方式:文中给出 tippecanoe 参数示例,如 -l、--minimum-zoom=3、--maximum-zoom=14、--base-zoom=14、--full-detail=14、--simplification=1、--buffer=8、--drop-rate=1、--maximum-tile-bytes=2000000、--maximum-tile-features=1000000、-y class、--coalesce-smallest-as-needed、--drop-densest-as-needed、--detect-shared-borders;并强调不要使用 --no-feature-limit 与 --no-tile-size-limit。

适用场景:全球变化图层一类的大规模多边形栅格预测入库,一次性或偶尔重建;重复年度构建可考虑地理分片加 pmtiles merge。

限制:tippecanoe 不能直接读 GeoParquet,必须经 FlatGeobuf;tile-join 不支持 --maximum-tile-bytes 与 --drop-densest-as-needed;分片模式中 --detect-shared-borders 作用有限;地理分片需处理边界裁剪;需本地 NVMe 暂存且各阶段应可续跑,避免自动传 --force。具体版本与费用信息暂未提供。