Skip to content

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 ✅