10 个版本 (6 个重大更新)
0.13.0 | 2024年4月6日 |
---|---|
0.12.0 | 2024年1月2日 |
0.11.1 | 2023年11月23日 |
0.10.0 | 2023年6月7日 |
0.3.0 |
|
#9 in 地理空间
564 每月下载量
在 6 个 包中使用 6 次(直接使用4次)
1MB
11K SLoC
Geodesy
摘要
Rust 大地测量学 - 毫不意外地 - 是用 Rust 编程语言编写的大地测量学库。
Rust 大地测量学提供了一些 特性 来支持一系列 目标。
最重要的 特性 包括
- 一套超过20个的大地测量 变换原语
- 一套超过40个的椭球体 操作原语
- 一种方法将原语组合成更复杂的操作。
最重要的 目标 是
- 支持新的、希望更好的抽象,
- 使用这些抽象构建更好、更简单、更易于处理的地理空间 标准、变换和软件。
如果您对上述内容有所共鸣,请阅读此最小使用示例之后的内容...
用法
使用 Geodesy 初始化一个新项目
$ cargo new foo
Created binary (application) `foo` package
$ cd foo
$ cargo add geodesy
然后将以下内容复制到 foo/src/main.rs
文件:一个最小示例,计算某些斯堪的纳维亚首都的 UTM 坐标
use geodesy::prelude::*;
fn main() -> Result<(), Box<Error>> {
let mut context = Minimal::new();
let utm33 = context.op("utm zone=33")?;
let cph = Coor2D::geo(55., 12.); // Copenhagen
let sth = Coor2D::geo(59., 18.); // Stockholm
let mut data = [cph, sth];
context.apply(utm33, Fwd, &mut data)?;
println!("{:?}", data);
Ok(())
}
并尝试运行它
$ cargo r
Finished dev [unoptimized + debuginfo] target(s) in 0.11s
Running `C:\FLOW\AD\RG\foo\target\debug\foo.exe`
[Coor2D([308124.36786033923, 6098907.825005002]), Coor2D([672319.9640879404, 6543920.334127973])]
具体
Rust 大地测量学 (RG) 是一个进行大地测量软件、变换和标准实验的平台。 RG 稍微类似于 PROJ 变换系统,并部分基于对 PROJ 的替代数据流模型的实验构建。 RG 的基本 变换 功能相当完整(即与 PROJ 的数据转换/参考系变换能力相当),而支持的投影数量远远少于 PROJ 的巨大范围。然而,它确实支持最重要的几个
- 横墨卡托
- 通用横墨卡托 (UTM)
- 网络墨卡托
- 墨卡托
- 斜墨卡托
- 拉梅特圆锥等面积
- 拉梅特方位等面积
但从本质上讲,RG 作为一个大地测量库而诞生,而不是一个制图库。虽然 PROJ 从四十年的现实强化中受益,但作为实验平台的 RG,并不以操作稳健性为主要关注点。因此,将 RG 视为另一个 PROJ,或者称为 PROJ RiiR,会导致失望。最多,你只能捕捉到 PROJ 内部数据流的 潜在 未来爵士乐形状 的微弱幻影。
话虽如此,由于用 Rust 编写,且 Rust 提供了所有内存安全保证,RG 通过设计避免了 PROJ 代码库中明确解决的问题的许多陷阱。因此,与 PROJ 相比,RG 体积微小并不仅仅是功能修剪的问题。它也是使用非常适合手头任务的工具进行开发的问题。
此外,由于可以从 PROJ 的经验中学习,无论是从用户还是开发者的角度来看,RG 被设计成比 PROJ 具有更大的可扩展性。因此,对于许多应用程序来说,尽管有其局限性,RG 可能足够用,甚至可能有用。
目标
数据流实验只是 RG 的一个方面。总的来说,目标至少有四个
- 支持地测标准的演变实验。
- 支持地测变换的开发。
- 因此,提供对许多基本地测操作的便捷访问,不仅限于坐标操作。
- 支持数据流和替代抽象的实验。主要作为实现目标(1、2、3)的工具
所有四个目标都受到修正现有地测系统领域中明确识别的不足的愿望的指导。
文档
目前文档有限,但请参阅
- 坐标算子 文档
- 关于
kp
的描述,即 Rust 地测 坐标处理程序 - 这篇论文式的 沉思,概述了 Rust 地测 的整体哲学和架构,以及 与 PROJ 和 RG 相关的比较
- 在 Docs.rs 上的 API 文档
examples
- 源代码中嵌入的测试 源代码
- 这篇相当具体的和 这篇更具哲学性的关于大地测量和地测学之间主要差异的描述,RG 尝试阐明和修正。
许可证
Rust 地测:版权所有 2020、2021、2022、2023,由 Thomas Knudsen 持有 [email protected]。
根据您的要求,许可以下之一
- Apache 许可证 2.0(《LICENSE-APACHE》或此处)
- MIT 许可证(《LICENSE-MIT》或此处)
任选其一。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在本工作中的任何贡献,应双重许可,如上所述,不附加任何额外条款或条件。
依赖项
~0.7–11MB
~74K SLoC