chore: align package namespace with publishing account
English package overview
MoonMVT 是纯 MoonBit 实现的 Mapbox Vector Tile 2.1 双向编解码与构建库。它让地图服务、离线地图工具和浏览器/WASM 程序在不引入 JavaScript 运行时或原生 GIS 库的情况下创建、读取、筛选和规范化 MVT 数据。
项目核心处理“瓦片局部整数坐标”。经纬度投影、Web Mercator 瓦片选择、地图下载、渲染和样式均不属于本项目,以避免把格式库变成职责混杂的 GIS 平台。
Tile
Layer
Feature
Value
LayerBuilder
发布后可使用 moon add yyyt0807/moonmvt@0.1.0。本地仓库执行:
moon add yyyt0807/moonmvt@0.1.0
moon check --target all --deny-warn moon test --target all --deny-warn moon run examples/build_tile moon run examples/filter_tile
let places = @builder.LayerBuilder::new("places") places.add_points( [@model.Point::new(1200, 900)], id=Some(1UL), properties=[ @builder.property("name", @model.MvtValue::StringValue("Moon Harbor")), @builder.property("capital", @model.MvtValue::BoolValue(true)), ], ) let tile = @builder.TileBuilder::new() tile.add_built_layer(places) let bytes = @codec.encode_tile(tile.finish()) let decoded = @codec.decode_tile(bytes)
完整程序见 examples/build_tile。
examples/build_tile
add_points 的一个要素可包含一个或多个点。add_lines 接收多条路径,每条至少两个点。add_polygons 接收开放环,即结尾不能重复首点;闭合由 ClosePath 命令表达。
add_points
add_lines
add_polygons
ClosePath
瓦片坐标 y 轴通常向下,外环必须为屏幕视觉上的顺时针,洞必须为逆时针。MoonMVT 不会静默反转错误方向的环,因为自动修复会掩盖上游几何错误。
land.add_polygons([ [ @model.Point::new(100, 100), @model.Point::new(3900, 100), @model.Point::new(3900, 3900), @model.Point::new(100, 3900), ], ])
let capitals = @query.filter_property_equals( layer, "capital", @model.MvtValue::BoolValue(true), ) let eastern = @query.filter_intersects( capitals, { min_x: 2048, min_y: 0, max_x: 4096, max_y: 4096 }, )
筛选结果会重建属性字典,删除未引用条目。完整程序见 examples/filter_tile。
examples/filter_tile
默认限制适合网络传递的常见瓦片。内存受限环境可使用 DecodeLimits::constrained()。限制覆盖文档大小、子消息大小、图层/要素/键/值数量、标签数量、几何字数量、字符串字节数和未知字段数。遇到错误时可使用 MvtError::code() 获得稳定分类。
DecodeLimits::constrained()
MvtError::code()
encode_tile 固定采用升序字段号、原图层/要素顺序以及字典首次出现顺序。canonicalize 会解码并重新编码外部瓦片,删除未知字段并规范字段顺序。
encode_tile
canonicalize
确定性承诺限定为“相同 MoonMVT 模型产生相同字节”,不声称所有符合 MVT 的第三方编码器都会产生相同字节。
error
limits
wire
model
geometry
codec
builder
query
更多信息见 架构、规范符合性、安全模型、测试策略 和 生态查重。
MoonMVT 0.1 明确不做:
源码采用 Apache License 2.0。实现根据公开的 Mapbox Vector Tile 2.1 Specification 独立编写,未复制其他语言 MVT 库源码。详见 THIRD_PARTY_NOTICES.md。
贡献约定见 CONTRIBUTING.md。远程推送与 mooncakes.io 发布是显式的项目所有者操作,清单见 docs/release-checklist.md。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MoonMVT
English package overview
MoonMVT 是纯 MoonBit 实现的 Mapbox Vector Tile 2.1 双向编解码与构建库。它让地图服务、离线地图工具和浏览器/WASM 程序在不引入 JavaScript 运行时或原生 GIS 库的情况下创建、读取、筛选和规范化 MVT 数据。
项目核心处理“瓦片局部整数坐标”。经纬度投影、Web Mercator 瓦片选择、地图下载、渲染和样式均不属于本项目,以避免把格式库变成职责混杂的 GIS 平台。
主要能力
Tile、Layer、Feature、Value完整类型模型;LayerBuilder,自动维护属性键和值字典;安装与验证
发布后可使用
moon add yyyt0807/moonmvt@0.1.0。本地仓库执行:构建瓦片
完整程序见
examples/build_tile。几何约定
add_points的一个要素可包含一个或多个点。add_lines接收多条路径,每条至少两个点。add_polygons接收开放环,即结尾不能重复首点;闭合由ClosePath命令表达。瓦片坐标 y 轴通常向下,外环必须为屏幕视觉上的顺时针,洞必须为逆时针。MoonMVT 不会静默反转错误方向的环,因为自动修复会掩盖上游几何错误。
属性查询和筛选
筛选结果会重建属性字典,删除未引用条目。完整程序见
examples/filter_tile。解码不可信输入
默认限制适合网络传递的常见瓦片。内存受限环境可使用
DecodeLimits::constrained()。限制覆盖文档大小、子消息大小、图层/要素/键/值数量、标签数量、几何字数量、字符串字节数和未知字段数。遇到错误时可使用MvtError::code()获得稳定分类。确定性和规范化
encode_tile固定采用升序字段号、原图层/要素顺序以及字典首次出现顺序。canonicalize会解码并重新编码外部瓦片,删除未知字段并规范字段顺序。确定性承诺限定为“相同 MoonMVT 模型产生相同字节”,不声称所有符合 MVT 的第三方编码器都会产生相同字节。
包结构
errorlimitswiremodelgeometrycodecbuilderquery更多信息见 架构、规范符合性、安全模型、测试策略 和 生态查重。
功能边界
MoonMVT 0.1 明确不做:
许可证与来源
源码采用 Apache License 2.0。实现根据公开的 Mapbox Vector Tile 2.1 Specification 独立编写,未复制其他语言 MVT 库源码。详见 THIRD_PARTY_NOTICES.md。
贡献约定见 CONTRIBUTING.md。远程推送与 mooncakes.io 发布是显式的项目所有者操作,清单见 docs/release-checklist.md。