Object search#
Vespucci supports a large subset of JOSM search expressions, these can be used for locating and selecting specific objects in the in memory data, and for matching elements against roles in preset member_expression attributes.
As there is essentially no documentation available from JOSM there is no guarantee that the behaviour is the same in all cases, known and deliberate differences are noted below. A reformatted and expanded version of what is available from JOSM is available here JOSM filter documentation.
Overpass API queries#
We support generating Overpass queries from the JOSM search language very similar to how JOSM and Overpass Turbo does the same. The most important deviation is that in and around expressions are treated like normal predicates. In the case of boolean logical "and" combinations this doesn't make a difference
highway=residential type:way in Bergdietikon
will work as expected. However
highway=residential | highway=unclassified in Bergdietikon
will not. To get "normal" behaviour add brackets
(highway=residential | highway=unclassified) in Bergdietikon
Note that we do not automatically restrict the query extent to the current visible extent of the map, you need to explicitly add an inview predicate to do that.
highway=residential type:way
will try to retrieve residential streets for the whole world. However
highway=residential type:way inview
will restrict the query to the current map view.
Supported expressions#
Syntax | Overpass | Vespucci specific notes | |
---|---|---|---|
✅ | Baker Street | ||
✅ | "Baker Street" | ||
✅ | key:valuefragment | ||
✅ | -key:valuefragment | ||
✅ | key: | ✅ | |
✅ | key | ||
✅ | key=value | ✅ | |
✅ | key=* | ✅ | |
✅ | key= | ✅ | |
✅ | __=__value* | ✅ | |
✅ | key>reference | Compares the value associated with key to reference, if possible if will convert to numeric values first | |
✅ | key<reference | dito | |
✅ | expr expr | ✅ | |
✅ | expr AND expr | ✅ | |
✅ | expr | expr | ✅ | |
✅ | expr OR expr | ✅ | |
✅ | expr XOR expr | ✅ | |
✅ | -expr | ✅ | |
✅ | (expr) | ✅ | |
✅ | type:node | ✅ | |
✅ | type:way | ✅ | |
✅ | type:relation | ✅ | |
✅ | closed | ✅ | |
✅ | untagged | ✅ | |
✅ | preset:"__preset item path"__ | Vespucci uses "|" as preset path segment separator and only fixed tags are considered for matching | |
✅ | preset:"__preset group path/*"__ | The asterix is ignored, the relevant criteria is if the path references a preset group | |
user: | ✅ | Vespucci currently doesn't store this information | |
✅ | id: | ✅ | |
✅ | version: | ✅ | |
changeset: | Vespucci currently doesn't store this information | ||
✅ | timestamp: | ||
✅ | nodes:range | All nodes are counted, for closed ways that implies that start and end node are counted separately | |
✅ | ways:range | ||
✅ | tags:range | ✅ | |
✅ | role:role | ||
✅ | areasize:range | ||
✅ | waylength:range | ||
✅ | modified | ||
✅ | new | ||
✅ | selected | ||
✅ | incomplete | Only used for relations | |
✅ | deleted | Selecting degenerate (empty) ways may lead to unexpected and undefined behaviour | |
✅ | child expr | ||
✅ | parent expr | ||
✅ | hasRole:role | ||
nth:number | |||
nth%:number | |||
✅ | inview | ✅ | |
✅ | allinview | ||
✅ | indownloadedarea | ||
✅ | allindownloadedarea | ||
in place | ✅ | ||
around place | ✅ |