2个不稳定版本
0.2.0 | 2023年8月22日 |
---|---|
0.1.0 | 2023年3月12日 |
#188 in 地理空间
每月下载量 48
25KB
511 行
sfconversions
一个最小的Rust库,它使用extendr将R包{sf}中的几何对象转换为geo-types几何原语。
提供了sfg、sfc对象之间的简单转换,这些对象来自sf,以及geo_types中的几何原语,可以与由extendr支持的其它georust库一起使用。
由于孤儿规则,直接从extendr的Lists
到geo_types的转换是不可能的。因此,实现了一个简单的结构体Geom
,它只有一个字段geom
,该字段包含一个geo_types的Geometry
枚举。
示例
使用sfg_to_geom()
执行从sfg对象的基本转换。
use sfconversions::{sfg_to_geom, geom::Geom};
use extendr_api::prelude::*;
#[extendr]
fn extract_sfg(x: Robj) -> String {
sfg_to_geom(x).unwrap().print()
}
Geom
结构体是一个与extendr兼容的结构体,它有一个打印字符串的方法。
sfconversions与sfheaders类似,它返回带有适当类别的正确R对象,而不依赖于sf。如果sf不可用,转换仍然可以工作,但sf的打印方法和其它函数将不可用。
需要注意的是,sfconversions只会创建sfg对象,而不会创建sfc
类对象。这是因为sfc
对象需要一个边界框属性,这只能使用geo
来计算,它是一个更大的依赖项。要创建一个sfc
对象,返回一个List
的sfg
对象,然后在R中使用sf::st_sfc()
来完成转换。使用geos_to_sfc()
可以帮助这个过程。
依赖关系
~12MB
~230K SLoC