#openstreetmap #area #osm #map #way

osm-is-area

这个OpenStreetMap元素是区域吗?

6个版本 (1个稳定)

1.0.0 2021年4月8日
0.1.4 2021年3月2日
0.1.3 2020年10月24日

#123 in 地理空间


用于 2 crates

MIT/Apache

11KB
169

osm-is-area

OpenSreetMap区域必须是方式或关系。但不仅仅是任何方式或关系。

如果你不幸运,你的所有元素都是节点,那就再看看...

API

osm_is_area::方式

根据 Overpass turbo,如果一个方式

  1. 形成一个闭合环
  2. 没有被标记为 area=no
  3. 符合多边形标记的条件之一。
use osm_is_area;

let tags = vec![
 (r"waterway", r"riverbank")
];
let refs = vec![1, 3, 2, 1];

let is_area = osm_is_area::way(&tags, &refs);
assert_eq!(true, is_area);

osm_is_area::关系

如果一个关系有一个“type”标签,其值为“multipolygon”,则它是一个区域。

use osm_is_area;

let tags = vec![
 (r"type", r"multipolygon")
];
let members = vec![1, 3, 2, 1];

let is_area = osm_is_area::relation(&tags, &members);
assert_eq!(true, is_area);

许可证

MIT


lib.rs:

如果给定的方式根据 Overpass turbo 是一个区域,则返回true

示例

use osm_is_area;

let tags = vec![
 (r"waterway", r"riverbank")
];
let refs = vec![1, 3, 2, 1];

let is_area = osm_is_area::way(&tags, &refs);
assert_eq!(true, is_area);

如果一个关系有一个“type”标签,其值为“multipolygon”,则它是一个区域。

use osm_is_area;

let tags = vec![
    (r"type", r"multipolygon")
];
let members = vec![1, 3, 2, 1];

let is_area = osm_is_area::relation(&tags, &members);
assert_eq!(true, is_area);

无运行时依赖项