#geojson #json

geojson-antimeridian-cut

根据RFC 7946 § 3.1.9裁剪GeoJSON对象

1个不稳定版本

0.1.0-alpha.12019年11月19日

#9#geojson

MIT 许可证

32KB
821

Geojson 反子午线切割

Crates.io Gitlab pipeline status

GeoJSON

GeoJSON 是一种用于在JSON文件中表示地理数据的标准。 FeaturesFeatureCollections 由不同的几何对象组成,包括

  • LineString
  • MultiLineString
  • Polygon
  • MultiPolygon
  • GeometryCollection

一些地理数据可能跨越反子午线(东经180°或西经180°)。 RFC 7946第3.1.9节 规定,此类对象应拆分为两个或更多对象,其中没有任何对象跨越反子午线,且组合起来等效。此包实现了这种拆分。

此包中的类型从 geojson 中导出,函数实现了每种类型的相应拆分算法。如果 GeoJSON 对象不跨越反子午线,则返回 None,否则返回包含相关拆分的对象副本。

示例

let given: Geometry = json!({
  "type": "LineString",
  "coordinates": [[170, 0], [-170, 0]],
})
.try_into()
.unwrap();

let expected: Geometry = json!({
  "type": "MultiLineString",
  "coordinates": [
      [[170, 0], [180, 0]],
      [[-180, 0], [-170, 0]],
  ],
})
.try_into()
.unwrap();

let result = split_geometry(&given);
assert_eq!(Some(expected), result);

依赖项

~0.7–1.1MB
~23K SLoC