Tag:network=Vitaparcours
| Description |
|---|
| Network of fitness trails in Switzerland ("Parcours Vita" in French, "Percorso Vita" in Italian). |
| Group: properties |
| Used on these elements |
| Useful combination |
|
For relations:
|
| Status: in use |
| Tools for this tag |
Tag with key network=* with value "Vitaparcours" for a type of fitness trail in Switzerland. In French, these are generally named "Parcours Vita" or "Piste Vita". There is a final "s" even in singular. In Italian, "Percorso Vita" is used.
The tag is used for trail relations. It could be used for station nodes as well. Trail relations can include ways of the trail, fitness stations, starting point, parking and stop.
Trails are maintained by local organizations, usually the municipality.
The trails are generally signed as "Z ZURICH parcoursvita" in French ("vitaparcours" in German or "percorsovita" in Italian). Signs for trails are provided by "Stiftung VITA Parcours" (for stations, see pdf in German, French or Italian).
See Switzerland/Parcoursvita, DE:Switzerland/Parcoursvita
Tags on relations
- Same tags for all trails
route=fitness_trailtype=routeroundtrip=yesnetwork:wikidata=Q2528631network:wikipedia=de:Vitaparcours(no article in French nor Italian)
- Name
name=*name:fr=Parcours Vita de ..name:de=VitaParcours ..name:it=Percorso Vita ..short_name=*
operator=Commune de ..operator:wikidata=*website=*url=*ref=*opening_hours=*if there is some limitationdog=*depending on what is signed:dog=no,dog=leashed. Should be on ways as well.start_date=*(year the parcours was set up)- Signage
osmc:symbol=blue:blue:white_pointer(generally)symbol=yellow arrow(some have this, paint on trees)signed_direction=yesif it's NOT easily possible to follow the path in the opposite direction (depends on the signs/simplicity of the trail).oneway=*is for something else.
- Metrics
distance=*in kmascent=*in m ordescent=*in mactual_energy_expenditure_length=*(include unit)
- Text/description
description=*text for users of the Mapfixme=start;stations;trail;parkingthings needing fixing on the Map, for oneself or other mappersnote=incomplet? voir https://osm.wiki/wiki/Switzerland/Parcoursvitatext for other mappersmaintenance=*text for the operator of the parcours; such as missing signs, broken equipment. The foundation also accepts reports by email.
More at Switzerland/Parcoursvita or Tag:route=fitness_trail
Roles of members, sample tags for these
A trail relation can link to ways of the paths, fitness stations, starting point, parking and end point (stop).
- This could be a station or a board.
- station
leisure=fitness_stationref=number(number of station)sport=fitness(or other}
- More at Tag:leisure=fitness_station.
- trail/route/path/
- Generally some of the ways on the map need to be cut in two to allow to connect all segments for the full trail.
or
forwardallows to indicate in which direction a way is followed. This depends on the definition of the OSM way, look for the small indicator in ID-editor. When reversing the direction of the way, this needs switching too. The same OSM way can be followed multiple times (sample: 20699006
backward
20699006).highway=pathetc
- parking
- stop
Trails with a node (such as the start) or a way named "Parcours Vita" (French), "Vitaparcours" (German), etc are easier to find.
Ways/nodes possibly missing in relations
Ways named Vita not in relations
Ways named "vita" not included in relations (could be unrelated)

[out:json][timeout:100];
{{geocodeArea:CH}}->.a;
way(area.a)[name~"[vV]ita"]
[!"social_facility"]
[!"healthcare"]
["amenity"!="pharmacy"]
->.vita_ways;
rel(area.a)["route"="fitness_trail"];
way(r)->.vita_routes;
(.vita_ways; - .vita_routes;);
out body;
>;
out skel qt;
Nodes named Vita not in relations
Nodes named "vita" not included in relations (false positives include pharmacies)

[out:json][timeout:100];
{{geocodeArea:CH}}->.a;
node(area.a)[name~"[vV]ita([^l].*)?$"]
["amenity"!="pharmacy"]
["amenity"!="restaurant"]
["shop"!="hairdresser"]
[!"social_facility"]
[!"healthcare"]
["name"!~"Dolce Vita"]
->.vita_nodes;
rel(area.a)["route"="fitness_trail"];
node(r)->.vita_routes;
(.vita_nodes; - .vita_routes;);
out body;
>;
out skel qt;
fitness_station not in relations
Nodes of fitness_station not in a fitness_trail relation (many false positives)
Sample limits to those with ref=*:

[out:json][timeout:100];
{{geocodeArea:CH}}->.a;
node(area.a)[leisure=fitness_station]
[ref] // limit to those with ref
->.vita_nodes;
rel(area.a)["route"="fitness_trail"];
node(r)->.vita_routes;
(.vita_nodes; - .vita_routes;);
out body;
>;
out skel qt;
Untagged relations
operator Vita not in network
Operator vita without network tag:

[out:json][timeout:25];
{{geocodeArea:CH}}->.searchArea;
relation[operator~"[vV]ita([^l].*)?$"]
[!"social_facility"]
[!"healthcare"]
["network"!="Vitaparcours"]
(area.searchArea);
out geom;
fitness_trail vita not in network
Fitness trail named "Vita" without network tag:

[out:json]
[timeout:50];
{{geocodeArea:CH}}->.searchArea;
(
relation["route"="fitness_trail"]
[name~"[vV]ita"]
["network"!="Vitaparcours"]
(area.searchArea);
);
out geom;
Relations named vita not marked as fitness_trail
Relations named "Vita" not marked as fitness trails (none in May 2026):

[out:json]
[timeout:50];
{{geocodeArea:CH}}->.searchArea;
(
relation[name~"[vV]ita([^l].*)?$"]
["route"!="fitness_trail"]
(area.searchArea);
);
out geom;
Above combined

[out:json]
[timeout:50];
{{geocodeArea:CH}}->.searchArea;
(
relation["operator"~"[vV]ita([^l].*)?$"]
["network"!="Vitaparcours"]
[!"social_facility"]
[!"healthcare"]
(area.searchArea);
relation[name~"[vV]ita([^l].*)?$"]
["network"!="Vitaparcours"]
[!"social_facility"]
[!"healthcare"]
(area.searchArea);
);
out geom;
