readosm
1.1.0
|
Open Street Map aka OSM [http://www.openstreetmap.org/] is a very popular community project aimed to produced a map of the world; this map is absolutely free and is released under the ODbL license terms [http://opendatacommons.org/licenses/odbl/].
Selected portions [by Country / Region] of the OSM map are available on the following download sites:
The best known format used to ship OSM datasets is based on XML; we'll shortly examine the XML general layout so to explain the objects used by the OSM data model and their mutual relationships.
A Node simply corresponds to a 2D POINT Geometry; the geographic coordinates are always expressed as Longitude and Latitude (corresponding to SRID 4326).
A Node doesn't simply have a geometry; it's usually characterized by several data attributes:
The following is the XML general layout used to represent a Node object:
<node id="12345" lat="6.66666" lon="7.77777" version="1" changeset="54321" user="some-user" uid="66" timestamp="2005-02-28T17:45:15Z"> <tag key="created_by" value="JOSM" /> <tag key="tourism" value="camp_site" /> </node>
A Way corresponds to a 2D LINESTRING Geometry: anyway the vertices never are directly defined within the Way itself; a list of indirectly referenced Nodes (<nd ref> items) is required instead.
The data attributes characterizing a Way are more or less the same used for Nodes, and with identical meaning; and for Ways too an arbitrary collection of Tags (key:value pairs) is supported.
The following is the XML general layout used to represent a Way object:
<way id="12345" version="1" changeset="54321" user="some-user" uid="66" timestamp="2005-02-28T17:45:15Z"> <nd ref="12345" /> <nd ref="12346" /> <nd ref="12347" /> <tag key="created_by" value="JOSM" /> <tag key="tourism" value="camp_site" /> </way>
A Relation is a complex object: it can correspond to a 2D POLYGON, or to a 2D MULTILINESTRING, or even to a 2D GEOMETRYCOLLECTION.
A Relation object can reference any other kind of OSM objects: each <member> item can address a Node object, a Way object or another Relation object; the type attribute will always specify the nature of the referenced object, and the optional role attribute may eventually better specify the intended scope.
The data attributes characterizing a Relation are exactly the same used for Ways, and with identical meaning; and for Relations too an arbitrary collection of Tags (key:value pairs) is supported.
The following is the XML general layout used to represent a Relation object:
<relation id="12345" version="1" changeset="54321" user="some-user" uid="66" timestamp="2005-02-28T17:45:15Z"> <member type="way" ref="12345" role="outer" /> <member type="way" ref="12346" role="inner" /> <tag key="created_by" value="JOSM" /> <tag key="tourism" value="camp_site" /> </relation>