MoonBit port of TopoJSON Client: shared arcs, features, meshes, merges and quantization
moon add chenliyi-cly/moontopo@0.1.0import { "chenliyi-cly/moontopo" @topo }let topology = @topo.read(
#|{"type":"Topology","arcs":[[[0,0],[1,0]]],"objects":{"road":{"type":"LineString","arcs":[0]}}}
)
println(topology.feature("road").stringify())moon run examples/map --target wasm-gcmoon run examples/regions --target wasm-gcmoon run examples/offline --target wasm-gc| 检查 | 可复现结果 |
|---|---|
| 上游差分 | 37 个固定用例 + 32 种网格各 6 个用例,共 229 个,JS 结果全部一致 |
| MoonBit 单元测试 | 30 个,覆盖错误输入、反向弧、额外坐标维度、孔洞、元数据和资源边界 |
| 量化不变量 | 64 组曲线 × 4 种网格,256 组检查逐轴半网格误差与解量化一致性 |
| 128 区网格 | 280 条存储弧、512 次引用;232 条内部弧被消去,合并后保留 48 条边界弧 |
| 1001 点曲线,101 级量化 | 存储点降到 399;最大 X 误差约 0.05,最大 Y 误差 0.009998565,均在半网格预算加浮点容差内 |
moon fmt --check
moon check --target wasm-gc --deny-warn
moon test --target wasm-gc
moon test --target js
moon test --target native
node tools/differential.mjs
node tools/measure.mjsInstall
Download zipMoonBit port of TopoJSON Client: shared arcs, features, meshes, merges and quantization