#gis #map #rendering

galileo-types

基于特质的地理几何和算法

3个版本

0.1.1 2024年2月14日
0.1.0 2024年2月14日
0.1.0-alpha.02024年1月13日

#1084 in 算法


用于 2 crate

MIT/Apache

105KB
2.5K SLoC

Galileo on Crates.io Documentation

Galileo 是一个通用的跨平台地理渲染库。

Web示例

Raster tile layer Lambert projection Feature layers Many points

  • 栅格瓦片图层(OSM)
  • 矢量瓦片图层(Maplibre)
    • 使用顶部按钮更改地图样式
    • 点击任何对象以获取有关信息
  • 要素图层
    • 注意!包含大型数据集(约16MB),可能需要一些时间来加载
    • 绘制250个国家边界,由约4000个多边形和约500K个顶点组成,加上40K个城市点
    • 将鼠标指针移到任何国家上以突出显示它,单击国家将其名称写入控制台
  • 拉贝尔等面积投影地图
    • 将墨卡托投影的(国家边界)数据集绘制到地图上的LAEA投影
  • 非常多的点
    • 享受3.6百万点用GPU加热你的房间。

概述

通用性

Galileo 的架构专门设计,允许不同的使用模式

  • 客户端GUI地图应用程序
  • 服务器模块
  • CLI工具

这确实带来了一些挑战,增加了复杂性。例如,服务器和客户端应用程序中加载和渲染对象的缓存工作方式完全不同。Galileo 的设计允许库的用户做出所有相关决策,而不是强制一种方式。

它也不对瓦片图层模式、CRS和地平线做出任何假设。要素图层支持透明地重新投影到地图CRS(计划支持投影瓦片图层,但尚未实现)。

跨平台

目前,Galileo 使用 wgpu 后端来渲染地图。这意味着它可以在任何支持 wgpu 的平台上使用

  • 所有主要桌面平台:Linux,MacOS,Windows
  • 移动平台:Android,iOS
  • 通过编译为WASM(并使用WebGL或更新的WebGPU)进行Web

尽管如此,后端不是Galileo设计的一部分,所以我们可能会尝试其他有前途的后端(如 vello)。

Android

FFI

在此阶段,您只能使用Rust在Galileo上开发应用程序。但我们有一个POC示例,展示了我们如何设想在其它平台上的未来开发:wasm_examples/raster_tiles。当Galileo的所有主要功能都相对稳定(或者当有需求时),我们将使用wasm-bindgenuniffi添加FFI绑定到其它语言。这将允许您使用通用API在JSKotlinSwiftPython中创建您的应用程序。

特性

Galileo是一个活跃的WIP,以下列出了已经存在的特性

  • 栅格瓦片层
  • 带样式的矢量瓦片层
  • 带样式的矢量地理数据层(要素层)
  • 3D视图和3D对象渲染
  • 处理层上的用户输入(目前仅支持鼠标,触摸功能正在开发中)
  • 支持不同的投影和瓦片方案
  • 高性能

路线图

我们对地图引擎有许多期望,但不可能同时完成所有这些。以下是我们的当前计划和优先级

v0.1 - 易用性改进

  • 库的架构和基本构建块
  • 基本样式,以便能够使用Galileo进行简单但有用的应用程序
  • 支持主要源类型(TMS瓦片、2D几何形状、MVT)
  • 基本投影支持

v0.2 - 优化

  • 高级特性和矢量瓦片的样式(图像点、渐变等)
  • 支持更多源和样式格式
  • 文本标签渲染
  • 高级要素层(聚合、热图等)

v0.3 - 3D化

  • 3D地球、大气和星星,让您的夜晚更加明亮
  • 地形渲染,绘制您爬过的每一座山
  • 3D模型,将您的房子放在这些山上
  • 高级投影和CRS支持

运行示例

Rust示例位于galileo/examples,可以在此处找到。有关列表、描述和运行说明,请参阅readme

Web

wasm_examples文件夹中也有在Web浏览器中运行Galileo的示例。这些示例被排除在工作区之外(因为Cargo不喜欢跨平台工作区)。要运行这些示例,您需要安装wasm-pack

wasm-pack build wasm_examples/countries --target no-modules --release

之后,在您的浏览器中打开index.html(必须从localhost提供服务,使用您喜欢的开发者服务器)。

Android

查看此示例,了解如何在Android上运行Galileo。

从Linux交叉编译到Windows

安装目标

rustup target add x86_64-px-window-gnu

安装交叉链接器。对于Debian/Ubuntu

sudo apt-get install mingw-w64

然后构建它

cargo build --target x86_64-px-windows-gnu

赞助

要使Galileo功能完善、适用于生产并有益于许多人,还有很多工作要做。我们愿意全职工作,尽快将其带给您。因此,我们正在寻找赞助商来实现这一目标。

赞助资金将帮助支持维护者的专注工作,并最终资助自由职业者贡献者。

如果您认为这个库对您或您所爱的人有用,请考虑支持其开发。赞助将带来额外的优势

  • 提高开发速度。
  • 把您的需求作为我们的优先事项。
  • 在项目页面上看到您的标志。

许可证

您可以使用这个库,无需担忧,因为它受以下任一许可证的许可:

任选其一。

贡献

欢迎功能请求、pull请求、错误报告、评论、问题和讨论。请在贡献时遵循行为准则。

注意,由于该库仍在开发的早期阶段,任何部分都可能随时更改。因此,在开始使用它或在其中进行任何重大工作之前,请先开启讨论,以同步您的想法与其他人的想法。

依赖项

~6MB
~116K SLoC