#geospatial #conversion #geometry #geo-types #package #sf #primitive

sfconversions

使用extendr支持将R的sf包类型转换为geo_types几何原语。

2个不稳定版本

0.2.0 2023年8月22日
0.1.0 2023年3月12日

#188 in 地理空间

每月下载量 48

MIT 许可证

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对象,返回一个Listsfg对象,然后在R中使用sf::st_sfc()来完成转换。使用geos_to_sfc()可以帮助这个过程。

依赖关系

~12MB
~230K SLoC