#polygon #primitive #skeleton #buffer #geometric #straight #ecosystem

geo-buffer

此包提供通过直线骨架在GeoRust生态系统中对某些原始几何类型进行缓冲(膨胀或收缩)的方法。

3个不稳定版本

0.2.0 2023年6月2日
0.1.1 2023年5月23日
0.1.0 2023年5月23日

#2177 in 算法

33 每月下载量

Apache-2.0

88KB
1K SLoC

geo-buffer

geo-buffer on crates.io Rust 1.68+ Cargo 1.68+ Documentation

geo-buffer 包提供通过直线骨架在 GeoRust 生态系统中对某些原始几何类型进行缓冲(扩大或缩小)的方法。

此包可以正确处理简单多边形以及非凸多边形、(有效)多边形集合以及具有一个或多个孔的多边形。请注意,每个方法都假设参数为有效原始类型,但 Polygon/MultiPolygon 模块 自动强制此有效性,该包也不强制。有关更多信息,请参阅 Polygon/MultiPolygonOGC标准 中的“有效性”。

此包使用直线骨架对(多)多边形进行缓冲。您还可以通过适当的方法单独计算直线骨架。

目前,唯一可行的几何原始类型是 PolygonMultiPolygon(其他原始类型也将添加)。

您可以选择凸角的样式,有两种选择;miter-joined 或 round-joined。(有关更多详细信息,请参阅文档。)

快速指南

buffer_polygon()函数(或buffer_multi_polygon()函数)在将缓冲操作应用于给定的Polygon(或MultiPolygon)后,生成一个MultiPolygon。传递的参数的绝对值决定了结果多边形的每条边与原始输入之间的距离。符号决定了结果扩展的方向。正值表示向外扩展(即膨胀),而负值表示向内收缩(即收缩)。

下方的代码片段是对使用此crate的简要指南。点击“结果”以展开可视化结果。(红色多边形表示输入,橙色多边形表示结果。)

示例

use geo_buffer::buffer_polygon;
use geo::{Polygon, MultiPolygon, LineString};

let p1 = Polygon::new(
    LineString::from(vec![(0., 0.), (1., 0.), (1., 1.), (0., 1.)]), vec![],
);
let p2: MultiPolygon = buffer_polygon(&p1, -0.2);

let expected_exterior = LineString::from(vec![(0.2, 0.2), (0.8, 0.2), (0.8, 0.8), (0.2, 0.8), (0.2, 0.2)]);
assert_eq!(&expected_exterior, p2.0[0].exterior())

结果

用法

[dependencies]
geo-buffer = "0.1.0"

依赖项

[dependencies]
geo-types = "0.7.9"
geo = "0.24.1"

主要贡献者

许可证

geo-buffer crate遵循Apache许可证(版本2.0)

联系方式

依赖项

~3.5MB
~65K SLoC