Sport pitches: NODES or WAYS?

Hi everybody,
I was trying to execute a query on a map to get all the volleyball fields… but I found that some of them are represented as NODES (i.e. points), others as WAYS (i.e. closed areas, such as a polygon).

Is this correct?
Shouldn’t all the sport fields be marked either as nodes, or as ways?

Tx a lot.

Hi and welcome to the forum

Normaly it should be an area, but a node is also valid. With old aerial images with low resoluition sometimes it wasn’t possible to determin the exact area, so a node was the best solution.

(see http://wiki.openstreetmap.org/wiki/Tag:leisure%3Dpitch)

Thank you for your quick reply!

Yes, I had read the wiki, that’s why I posted here the question.
I thought all sport pitchs could either be all nodes, or all ways.

Instead, since this is not case, to find all volleyball and beachvolleyball pitches I have to run the following query then.
Please correct me if I’m wrong!


<osm-script output="json">
  <union>
    <query type="way">
      <has-kv k="sport" v="volleyball"/>
      <bbox-query {{bbox}}/>
    </query>
        <query type="way">
      <has-kv k="sport" v="beachvolleyball"/>
      <bbox-query {{bbox}}/>
    </query>
        <query type="node">
      <has-kv k="sport" v="volleyball"/>
      <bbox-query {{bbox}}/>
    </query>
        <query type="node">
      <has-kv k="sport" v="beachvolleyball"/>
      <bbox-query {{bbox}}/>
    </query>
  </union>
  <print mode="meta"/>
  <recurse type="down"/>
  <print mode="meta"/>
</osm-script>

Here you can find a sample map resulting from the query above:
http://overpass-turbo.eu/s/bl

Another point to consider is that a node can be indexed (searched) whereas a polygon can’t unless you use area2poi=true.

Thanks, I did not know this.

I finished my script and it seems to be working.

Here is the input GPX file (exported from the openstreetmap of my previous post).

<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" version="1.1" creator="overpass-turbo">
   <metadata>
      <copyright>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</copyright>
      <desc>Filtered OSM data converted to GPX by overpass turbo</desc>
      <time>2013-05-17T10:21:04Z</time>
   </metadata>
   <wpt lat="46.0175605" lon="11.1050988">
      <link href="http://osm.org/browse/node/279578864" />
      <name>node 279578864</name>
   </wpt>
   <wpt lat="46.0949906" lon="11.1181303">
      <link href="http://osm.org/browse/node/1404110926" />
      <name>node 1404110926</name>
   </wpt>
   <wpt lat="46.0198794" lon="11.0422148">
      <link href="http://osm.org/browse/node/1848898571" />
      <name>node 1848898571</name>
   </wpt>
   <trk>
      <link href="http://osm.org/browse/way/151527792" />
      <name>way 151527792</name>
      <trkseg>
         <trkpt lat="46.0570556" lon="11.1367906" />
         <trkpt lat="46.0568935" lon="11.1367927" />
         <trkpt lat="46.0568943" lon="11.1369187" />
         <trkpt lat="46.0570564" lon="11.1369165" />
         <trkpt lat="46.0570556" lon="11.1367906" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/44063226" />
      <name>way 44063226</name>
      <trkseg>
         <trkpt lat="46.0520006" lon="11.1445192" />
         <trkpt lat="46.0520979" lon="11.1446197" />
         <trkpt lat="46.0519798" lon="11.1448573" />
         <trkpt lat="46.0518825" lon="11.1447568" />
         <trkpt lat="46.0520006" lon="11.1445192" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/75356286" />
      <name>way 75356286</name>
      <trkseg>
         <trkpt lat="46.0683234" lon="11.1287503" />
         <trkpt lat="46.0681867" lon="11.1287446" />
         <trkpt lat="46.0681845" lon="11.1288559" />
         <trkpt lat="46.0683212" lon="11.1288616" />
         <trkpt lat="46.0683234" lon="11.1287503" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/75414528" />
      <name>way 75414528</name>
      <trkseg>
         <trkpt lat="46.0661657" lon="11.1247468" />
         <trkpt lat="46.066063" lon="11.1247635" />
         <trkpt lat="46.0660709" lon="11.1248633" />
         <trkpt lat="46.0661735" lon="11.1248466" />
         <trkpt lat="46.0661657" lon="11.1247468" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/75689902" />
      <name>way 75689902</name>
      <trkseg>
         <trkpt lat="46.055584" lon="11.1271918" />
         <trkpt lat="46.0556168" lon="11.1273733" />
         <trkpt lat="46.0555521" lon="11.1273975" />
         <trkpt lat="46.0555194" lon="11.127216" />
         <trkpt lat="46.055584" lon="11.1271918" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/75689907" />
      <name>way 75689907</name>
      <trkseg>
         <trkpt lat="46.0570914" lon="11.1259289" />
         <trkpt lat="46.0571822" lon="11.1260272" />
         <trkpt lat="46.0571416" lon="11.1261052" />
         <trkpt lat="46.0570507" lon="11.1260069" />
         <trkpt lat="46.0570914" lon="11.1259289" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/82078000" />
      <name>way 82078000</name>
      <trkseg>
         <trkpt lat="46.0901187" lon="11.118852" />
         <trkpt lat="46.0900159" lon="11.118852" />
         <trkpt lat="46.0900159" lon="11.1189392" />
         <trkpt lat="46.0901187" lon="11.1189392" />
         <trkpt lat="46.0901187" lon="11.118852" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/109578357" />
      <name>way 109578357</name>
      <trkseg>
         <trkpt lat="46.0254467" lon="11.2304638" />
         <trkpt lat="46.0253126" lon="11.2304745" />
         <trkpt lat="46.0253153" lon="11.2305799" />
         <trkpt lat="46.0254498" lon="11.2305684" />
         <trkpt lat="46.0254467" lon="11.2304638" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/133399564" />
      <name>way 133399564</name>
      <trkseg>
         <trkpt lat="46.0749179" lon="11.1426166" />
         <trkpt lat="46.0749014" lon="11.1427617" />
         <trkpt lat="46.0747176" lon="11.1427181" />
         <trkpt lat="46.0747342" lon="11.142573" />
         <trkpt lat="46.0749179" lon="11.1426166" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/170735434" />
      <name>way 170735434</name>
      <trkseg>
         <trkpt lat="46.0410342" lon="11.057953" />
         <trkpt lat="46.0408907" lon="11.058104" />
         <trkpt lat="46.0409647" lon="11.0582499" />
         <trkpt lat="46.0411081" lon="11.0580989" />
         <trkpt lat="46.0410342" lon="11.057953" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/170735435" />
      <name>way 170735435</name>
      <trkseg>
         <trkpt lat="46.041145" lon="11.0581441" />
         <trkpt lat="46.041303" lon="11.0585463" />
         <trkpt lat="46.0411409" lon="11.0586784" />
         <trkpt lat="46.0409829" lon="11.0582762" />
         <trkpt lat="46.041145" lon="11.0581441" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/217019045" />
      <name>way 217019045</name>
      <trkseg>
         <trkpt lat="46.0391761" lon="11.0584289" />
         <trkpt lat="46.0391142" lon="11.0587273" />
         <trkpt lat="46.0389824" lon="11.0586706" />
         <trkpt lat="46.0390442" lon="11.0583722" />
         <trkpt lat="46.0391761" lon="11.0584289" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/217019046" />
      <name>way 217019046</name>
      <trkseg>
         <trkpt lat="46.0391169" lon="11.058774" />
         <trkpt lat="46.0389864" lon="11.0587747" />
         <trkpt lat="46.0389872" lon="11.0590768" />
         <trkpt lat="46.0391176" lon="11.0590761" />
         <trkpt lat="46.0391169" lon="11.058774" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/217042083" />
      <name>way 217042083</name>
      <trkseg>
         <trkpt lat="46.006981" lon="11.1295178" />
         <trkpt lat="46.0068012" lon="11.1294589" />
         <trkpt lat="46.0068278" lon="11.1292906" />
         <trkpt lat="46.0070076" lon="11.1293495" />
         <trkpt lat="46.006981" lon="11.1295178" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/221382168" />
      <name>way 221382168</name>
      <trkseg>
         <trkpt lat="46.1390071" lon="11.1101498" />
         <trkpt lat="46.138922" lon="11.1101555" />
         <trkpt lat="46.1389295" lon="11.1103906" />
         <trkpt lat="46.1390146" lon="11.110385" />
         <trkpt lat="46.1390071" lon="11.1101498" />
      </trkseg>
   </trk>
   <trk>
      <link href="http://osm.org/browse/way/221509483" />
      <name>way 221509483</name>
      <trkseg>
         <trkpt lat="46.0758884" lon="11.1420714" />
         <trkpt lat="46.075737" lon="11.1420269" />
         <trkpt lat="46.0757525" lon="11.1419168" />
         <trkpt lat="46.075904" lon="11.1419613" />
         <trkpt lat="46.0758884" lon="11.1420714" />
      </trkseg>
   </trk>
</gpx>

And here is the resulting GPX file (after running my script) that can be imported into google maps:

<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" version="1.1" creator="overpass-turbo">
   <metadata>
      <copyright>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</copyright>
      <desc>Filtered OSM data converted to GPX by overpass turbo</desc>
      <time>2013-05-17T10:21:04Z</time>
   </metadata>
   <wpt lat="46.0175605" lon="11.1050988">
      <link href="http://osm.org/browse/node/279578864" />
      <name>node 279578864</name>
   </wpt>
   <wpt lat="46.0949906" lon="11.1181303">
      <link href="http://osm.org/browse/node/1404110926" />
      <name>node 1404110926</name>
   </wpt>
   <wpt lat="46.0198794" lon="11.0422148">
      <link href="http://osm.org/browse/node/1848898571" />
      <name>node 1848898571</name>
   </wpt>
   <wpt lat="46.0569749" lon="11.1368546">
      <link href="http://osm.org/browse/way/151527792" />
      <name>way 151527792</name>
   </wpt>
   <wpt lat="46.0519902" lon="11.1446882">
      <link href="http://osm.org/browse/way/44063226" />
      <name>way 44063226</name>
   </wpt>
   <wpt lat="46.0682539" lon="11.1288031">
      <link href="http://osm.org/browse/way/75356286" />
      <name>way 75356286</name>
   </wpt>
   <wpt lat="46.0661183" lon="11.1248050">
      <link href="http://osm.org/browse/way/75414528" />
      <name>way 75414528</name>
   </wpt>
   <wpt lat="46.0555681" lon="11.1272946">
      <link href="http://osm.org/browse/way/75689902" />
      <name>way 75689902</name>
   </wpt>
   <wpt lat="46.0571165" lon="11.1260170">
      <link href="http://osm.org/browse/way/75689907" />
      <name>way 75689907</name>
   </wpt>
   <wpt lat="46.0900673" lon="11.1188956">
      <link href="http://osm.org/browse/way/82078000" />
      <name>way 82078000</name>
   </wpt>
   <wpt lat="46.0253811" lon="11.2305217">
      <link href="http://osm.org/browse/way/109578357" />
      <name>way 109578357</name>
   </wpt>
   <wpt lat="46.0748178" lon="11.1426673">
      <link href="http://osm.org/browse/way/133399564" />
      <name>way 133399564</name>
   </wpt>
   <wpt lat="46.0409994" lon="11.0581014">
      <link href="http://osm.org/browse/way/170735434" />
      <name>way 170735434</name>
   </wpt>
   <wpt lat="46.0411430" lon="11.0584113">
      <link href="http://osm.org/browse/way/170735435" />
      <name>way 170735435</name>
   </wpt>
   <wpt lat="46.0390792" lon="11.0585497">
      <link href="http://osm.org/browse/way/217019045" />
      <name>way 217019045</name>
   </wpt>
   <wpt lat="46.0390520" lon="11.0589254">
      <link href="http://osm.org/browse/way/217019046" />
      <name>way 217019046</name>
   </wpt>
   <wpt lat="46.0069044" lon="11.1294042">
      <link href="http://osm.org/browse/way/217042083" />
      <name>way 217042083</name>
   </wpt>
   <wpt lat="46.1389683" lon="11.1102702">
      <link href="http://osm.org/browse/way/221382168" />
      <name>way 221382168</name>
   </wpt>
   <wpt lat="46.0758205" lon="11.1419941">
      <link href="http://osm.org/browse/way/221509483" />
      <name>way 221509483</name>
   </wpt>
</gpx>

If you have any idea how to improve the process please let me know!

Here is my script.

# USAGE: awk -f thisscript.awk inputfile.gpx > outfile.gpx
# Example: awk -f convert_gpx.awk export.gpx > test.gpx
BEGIN {
# List of variables
	trackbegin="<trk>";
	trackend="</trk>";
	trackflag=0;
	tracksegment="<trkseg>";
	trackpoint="<trkpt";
    tracksegmentend = "</trkseg>";
	linkstart = "<link";
	namestart = "<name>";
	trkcounter = 0;
	trkpointcounter = 0;
	newlatindex = 0;
	newlat[newlatindex]="";
	newlonindex = 0;
	newlon[newlonindex]="";
	myline = "";
	mylink = "";
	myname = "";
	latpoint="lat=\"";
	#myregexp="\"([^\"]*)\""; 
	myregexp  ="\"([^\"]*)\".*=\"([^\"]*)\"";
	# espressione regolare: "([^"]*)" ovvero: raggruppa (parentesi tonde), classe (parentesi quadre), qualsiasi carattere tranne virgolette (^"), N volte (*), che compare tra virgolette (" blablabla ") di cui ho fatto escape (\ davanti a ")
	# awk function substr(s,c,n) returns the substring from string s starting from character position c up to a maximum length of n characters. If n is not supplied, the rest of the string from c is returned. 
}

{	
	# myline is equal to the input read line
	myline = $0;
	
	# find <trk> tag in input XML
    if (match($0,trackbegin)) {
			# count the number of <trk> points found
			trkcounter++;
			# myline set to NULL because we do not print anything
			myline = "";
			# trackflag set to 1, meaning we are inside a <trk>
			trackflag = 1;
    }
	
	# find </trk> tag in XML
    if (match($0,trackend)) {
			# change </trk> to </wpt> and print it later
			myline = "   </wpt>";
			# we reached the end of the <trk> tag
			trackflag = 0;
    }
	
	# find link tag in XML and we are inside a <trk> tag	
    if (match($0,linkstart) && trackflag == 1) {
			mylink = $0;
			myline = "";
    }
	
	# find <name> tag in XML and we are inside a <trk> tag	
    if (match($0,namestart) && trackflag == 1) {
			myname = $0;
			myline = "";
    }
	
	
	# find <trkseg> in XML
	if (match($0,tracksegment)) {	
			myline = "";
	}
	
	# find </trkseg> in XML
	if (match($0,tracksegmentend)) {	
			myline = "";
	}		

	# read first 4 coordinates of the waypoint and average them
	# we skip the 5th point because it is an area, defined with 5 points as follows
	# Waypoint: A (Xa, Ya), B (Xb, Yb), C(Xc, Yc), D(Xd, Yd), A (Xa, Ya)
	if (match($0,trackpoint)) {
		if (match($0, myregexp, mycoordinates) AND trkpointcounter<4) {
				newlat[newlatindex]=mycoordinates[1];
				newlatindex++;
				newlon[newlonindex]=mycoordinates[2];
				newlonindex++;
		}
		trkpointcounter++;
		
		# skip 5th point coordinates and print the new WAYPOINT with the average of the read coordinates
		if (trkpointcounter==5) {
			printf ("   <wpt lat=\"%.7f\" lon=\"%.7f\">\n", (newlat[0]+newlat[1]+newlat[2]+newlat[3])/4, (newlon[0]+newlon[1]+newlon[2]+newlon[3])/4);
			# print link address and name of the new WAYPOINT
			print mylink;
			print myname;		
			# reset counters to 0 for the next waypoint
			trkpointcounter = 0;
			newlatindex = 0;
			newlonindex = 0;
		}
		myline = "";
	}

	# if we are not inside a <trk> node and we have something to print
	if (myline!="" && trackflag == 0) {
		print myline;
	}
}

END {
	#print "Trovati", trkcounter, "waypoints da convertire!";
}

I copy here http://wiki.openstreetmap.org/wiki/Mkgmap/help/options for reference.