TERRAFORGE

TerraForge

N 30.20000 S 29.40000 E 102.40000 W 101.60000 贡嘎山 · 0.800° × 0.800°

在地图上框一块,
把它变成能用的数据。

瓦片、高程、3D 地形、等高线 —— 四条管线装在同一个界面里。 框选区域、实时看进度、断了能接着下,产物直接进你的 GIS 工作流。

MIT · Windows / macOS (Apple Silicon) / Linux · 解压即用,不装 Python

TerraForge 界面:贡嘎山一带的三维地形上覆盖着一个带角点手柄的矩形下载选区,左侧是框选、区域、搜索、光照、任务、配置的工具栏

等高线默认分层设色断点 · 逐档可改 贡嘎山选区 · 实拍

四条数据管线

从一个选区,长出四种产物

同一块区域、同一套任务调度、同一份缓存。选完范围之后,剩下的差别只是你要什么格式。

TILES / 地图瓦片

框选下载,拼成带地理配准的 GeoTIFF

从 Google Maps 取瓦片,边下边镜像到产物目录。要瓦片目录、要拼接好的 GeoTIFF、要单文件 MBTiles,勾选框自己组合。

样式
标准 m · 卫星 s · 卫星+标注 y · 道路 h · 地形 t
产物
瓦片目录 · GeoTIFF(按 zoom 一层一张)· MBTiles(建任务时勾选或事后导出,不删原瓦片)
缓存
按「样式 + 坐标」键控,跨任务共享 —— 换个任务重下同一片区,已有的瓦片不会再走一次网络
下载数据对话框:显示选区四至、预计 8,537 块瓦片,可选瓦片 / GeoTIFF / MBTiles 输出与缩放级别 10–15
建任务时先算清要下多少块

DEM / 高程数据

1°×1° 分幅高程,默认源不用注册账号

按你框的范围自动算出需要哪些分幅并逐个取回。默认走 Copernicus 的公开 S3 桶,开箱就能下;需要 ASTER 的话再去配 Earthdata。

默认源
Copernicus GLO-30(30 m,公开 S3 桶,免认证)
可选源
ASTER GDEM v3 ASTGTM.003(30 m,需 NASA Earthdata 账号,在配置页填)
选区
地图框选,或导入 GeoJSON / KML / KMZ / Shapefile,支持多部件与孔洞
跨经线
越过 180° 的区域自动拆成两段处理
任务中心:总任务、已完成、失败数与累计下载量统计,下方是带类型标签和区域四至的任务列表,以及历史区域地图
任务中心 · 历史区域直接叠在地图上

TERRAIN / 3D 地形

切成 Cesium quantized-mesh,自带全球底座

把下载好的 DEM 或本地上传的 GeoTIFF 切成地形瓦片。包里随附一份全球基础地形,切片成果会植入它的输出目录 —— 相机拉远时不会掉进空洞。

格式
quantized-mesh 1.0,CesiumJS 直接消费
底座
随包 167 MB 全球基础地形(GEBCO 2024 Grid 派生,含海底地形、全球无洞),首次运行自动解压
级联
你的高精度切片盖在底座上,缩小时自动接回全球
输入
已下载的 DEM 任务,或本地上传的 GeoTIFF;无切片时也能按需渲染晕渲图预览
喜马拉雅山脊的三维地形渲染:低角度视图,雪线以上的山体起伏与远处地平线清晰可见
喜马拉雅山脊 · 开启地形光照

CONTOUR / 等高线

渲染成标准 XYZ 瓦片,谁都能加载

产物就是普通的 XYZ 瓦片目录,Leaflet、OpenLayers、CesiumJS 拿去直接用,不需要装 TerraForge 才能看。

产物
标准 XYZ 瓦片,Leaflet / OpenLayers / CesiumJS 直接加载
样式
等高距、首曲线与计曲线配色、分层设色断点、地形晕渲,逐项可调并支持预览
数据源
上传 .tif(可多选),或复用已完成的 DEM 任务 —— 源文件零拷贝,删等高线任务不动原 DEM
天山一带的等高线瓦片渲染成果:分层设色的高程色带配合褐色等高线,叠在卫星影像底图上
天山选区 · 等高距 50 m · 分层设色 + 晕渲

插件系统

四类扩展点,加能力不用动宿主

宿主开出四类扩展点,随包带四个首发插件各占一类。全部缺省关闭 —— 不去插件面板开启,这一侧的行为与上一版逐字一致。

PLUGINS / 插件面板

装上就在列表里,开不开由你

面板列出全部插件:名称、版本、来源、声明的能力与开关。每张卡片的「配置」按插件自己声明的 schema 现渲染成表单,凭据类字段永远不回显已保存的值。

数据源
天地图影像 img_w 与注记 cia_w(WMTS RESTful)。token 只存在插件配置里 —— 不进任务行、不进指纹、不进日志
下载管线
MVT 矢量瓦片:给一个 TileJSON 地址与层级范围,下成单个 .mbtiles(metadata.format=pbf),tileserver-gl / QGIS / MapLibre 直接读
导出器
GeoPackage:把已完成任务的 GeoTIFF 导出成 .gpkg,走的是核心那条导出路由,插件只往格式表加一行
任务钩子
产物元数据 sidecar:产物旁写一份 .tfmeta.json —— 形态、格式、字节数、瓦片数、层级范围、有没有缺块
插件面板:四张插件卡片分别是产物元数据 sidecar、GeoPackage 导出、MVT 矢量瓦片下载与天地图数据源,各带版本、来源、能力标签与「启用」按钮,顶部是插件以宿主完整权限运行的提示
插件面板 · 四个首发插件缺省全部关闭

缺省全部关闭

不去面板开启,插件这一侧就不加载、不注册、也不出现在任何下拉里。升级只新建三张空表,存量数据一列不动。

坏插件不打穿宿主

加载失败的插件照样在列表里,带一条失败原因 —— 装了却看不见比报错更难查。进注册表前要过三道闸:API 主版本、ABI 标签、方法签名。

运行期只给一个 TaskContext

进度、日志、配额、URL 闸、缺块记账、产物登记都从 TaskContext 走,插件拿不到 manager、socketio 与数据库连接。但它与宿主同进程、没有沙箱 —— 只启用你信任的插件。

任务混在同一个中心里

插件任务与四条核心管线同处一份列表:同一套状态、同一套缺块决策、同一颗删除按钮。

为什么不是又一个批量下载器

大任务真正的难处不在下载,在出问题之后

几万块瓦片跑一夜,第二天你需要知道的是:到底成了没有、缺了什么、能不能接着跑。这四件事是 TerraForge 花力气最多的地方。

进度是真的

WebSocket 推送下载速度、剩余时间,以及分 zoom 的拼接与复制阶段。进度条不会停在 100% 让你猜后面还在干什么。

缺块不静默

瓦片结果分五类记账:成功、本来无数据、可重试失败、永久失败、缓存写入失败。只有「本来就没数据」才自动完成;出现真失败会停在待决策等你拍板,而接受了缺口的成果永久带缺块标记。

断了能接上

断点续传、跨任务共享缓存、边下边复制、.part 临时文件加 rename 原子落盘。暂停、恢复、重试都不会重下已经拿到的瓦片。

不联网汇报

没有任何遥测、埋点或使用统计。前端第三方库全部本地 vendor,运行期不碰 CDN。除了你自己配置的图源、高程源与代理,它不连接任何服务器。

配置面板:主题与强调色、默认保存路径、并发下载数、请求超时、代理服务器与瓦片服务器列表等分组设置
配置 · 并发与超时 / 代理自动检测 / 缓存 / GDAL 参数 / Earthdata 账号

当前版本 v0.5.0

下载 TerraForge

三个平台的预编译包,解压就能跑,目标机器不需要 Python,也不需要单独装 GDAL。

  • Windows 双击 terraforge.exe,macOS / Linux 跑 ./terraforge,然后浏览器打开 http://localhost:5000。程序另会监听 5001 出瓦片,防火墙不放行也能用。
  • 没有安装包,也没有自动更新。不做 MSI / DMG / DEB,换版本就是重新下一个包。
  • 每个包都含 167 MB 的全球基础地形分卷,所以体积偏大。Release 页面附 SHA-256 清单,可校验你手上这份是不是原版。
  • Intel Mac 不支持 —— macOS 包只有 Apple Silicon (arm64) 一种。
  • 移动位置时整个 terraforge/ 目录一起搬。只挪可执行文件会报 Corrupt bundle: missing GDAL/PROJ data directories。
  • macOS 首次运行前,在解压出来的目录里执行 xattr -cr . 清掉隔离属性。
  • 程序监听 0.0.0.0:5000 且没有任何登录或鉴权机制,其 API 能读写本机磁盘路径并删除目录。只在可信的本机或局域网里用,别直接暴露到公网。

全部版本 ↗ 本版发版说明 ↗ 更新日志 ↗