#osm #openstreetmap #area #map #way

osm-is-area

Is this OpenStreetMap element an area or not?

6 releases (1 stable)

1.0.0 Apr 8, 2021
0.1.4 Mar 2, 2021
0.1.3 Oct 24, 2020

#112 in Geospatial

Download history 13/week @ 2023-10-21 25/week @ 2023-10-28 14/week @ 2023-11-04 14/week @ 2023-11-11 21/week @ 2023-11-18 28/week @ 2023-11-25 17/week @ 2023-12-02 11/week @ 2023-12-09 18/week @ 2023-12-16 22/week @ 2023-12-23 12/week @ 2023-12-30 12/week @ 2024-01-06 18/week @ 2024-01-13 18/week @ 2024-01-20 19/week @ 2024-01-27 10/week @ 2024-02-03

67 downloads per month
Used in 2 crates

MIT/Apache

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

  1. It forms a closed loop
  2. It is not tagged area=no
  3. 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);

No runtime deps