Why not GPX?
We have our own OSM XML format for representing OpenStreetMap data. This is supported by various tools and is the format of the planet.osm downloads and the map call supported by our API. Why did we devise this, rather than use GPX? These days this feels like nonsensical question. The OSM XML format is firmly embedded in the way we do things, and the way OpenStreetMap is designed. But back in the early days we considered the following reasons:
GPX has several limitations
- No support for areas. This is considered the most harmful disadvantage.
- No real links to already transfered data possible. Instead, you have to retransfer the data. As example, if two tracks sharing the same track segment, you still have to transfer the whole segment again in the other tracks.
- Support for Key & Values (OpenStreetMap Tags) only through extensions.
- No unique ids provided for all tags without extensions. As example, track segments don't have an id.
- The static tags defined by GPX are against the philosophy of the very agile and free key/value system. (If there is a "philosophy" at all..)
GPX has some good points
- Standard. Non-OSM-code could use GPX to transfer its raw data to the OSM-Server or use the extensionless subset of the server output directly. However, communication could be established by a proxy which converts the xml formats, if someone want this to happen. Also note, that some features in OSM can not be expressed as GPX.
- GPX is more human-readable, at least if you can understand lat/lon pairs.
The advantages are far less and the disadvantages are too serious, so an alternative was invented.