6 releases (1 stable)
1.0.0 | Apr 8, 2021 |
---|---|
0.1.4 | Mar 2, 2021 |
0.1.3 | Oct 24, 2020 |
#138 in Geospatial
40 downloads per month
Used in 2 crates
11KB
169 lines
osm-is-area
An OpenSreetMap area must be a way or a relation. But not just any way or relation.
If you are not so fortunate that all your elements are nodes, look further...
API
osm_is_area::way
According to Overpass turbo, a way is considered an area if
- It forms a closed loop
- It is not tagged
area=no
- It conforms to one of the conditions for polygon tags.
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::relation
A relation is an area when it has a tag "type" with value "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);
License
MIT
lib.rs
:
Returns true if the given way is an area according to Overpass turbo
Examples
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);
A relation is an area when it has a tag "type" with value "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);