什么是一 .osm 文件?
OpenStreetMap (OSM) 是一个巨大的自愿地理信息集合,存储在不同类型的文件中,使用不同的编码方案将这些数据转换为位和字节。 OSM 是一项旨在创建免费可编辑世界地图的协作努力。这种协作努力的主要输出是地理数据,而不是地图本身。世界大部分地区对地理信息的使用或可用性的限制触发了创建 OSM 的需要。 OSM 提供的数据已准备好取代经典应用程序(Facebook、Craigslist 等)的谷歌地图和 GPS 接收器应用程序的默认数据。^^ ^^尽管世界各地的数据质量各不相同,但 OpenStreetMap 数据可以方便地与专利进行比较数据源。
历史简介 ##
受 Wikipedia 成功的启发,2004 年,英国企业家 Steve Coast 在英国创建了这个以社区为基础的世界地图项目。他最初专注于绘制英国地图。 OpenStreetMap 基金会成立于 2006 年 4 月,旨在支持任何人免费地理空间的发展、扩展和流通。 2006 年 12 月,雅虎通过航空摄影帮助 OpenStreetMap 制作地图。荷兰的完整道路数据以及印度和中国的主干道路数据由汽车导航数据 (AND) 于 2007 年 4 月提供给 OSM。 2007 年 12 月,牛津大学是在其主要网站中集成 OpenStreetMap 数据的最著名组织。从那时起,超过 200 万注册用户使用 GPS 设备、航空摄影和人工调查为该项目提供数据。这个社区贡献的数据是在开放数据库许可下提供的。一个在英格兰注册的非营利组织 OpenStreetMap Foundation 维护着 OSM 站点。
OSM 文件格式
存储地理数据的方式和文件格式有很多,但 OSM 文件格式仅限于 OpenStreetMap。 OSM 是专门设计的标准格式,旨在通过 Internet 轻松传输。以 XML 编码的结构化有序格式构成 .osm 文件。在 OpenStreetMap 中有四个枢轴元素来存储拓扑数据结构:
节点 | 方式 | 关系 | 标签 |
---|---|---|---|
表示存储为纬度和经度对的地理位置。用于表示没有大小的地图特征,例如山峰。 | 节点的排序列表,表示折线或多边形表示道路和河流等线性要素,以及停车场、丛林和公园等区域。 | 节点和方式的排序列表表示它们的关系,如障碍物和道路上的 U 形转弯,高速公路跨越不同的现有方式和有洞的区域。 | 存储有关地图对象的元数据。* 始终附加到任何节点、方式或关系 |
标签用于表征 OpenStreetMap 中的地面物理特征(建筑物和道路等)。每个标签与由该特定节点或关系表示的特征的地理特征相关。在这个免费的标记系统中,为了描述一个特征,地图中可以包含无限数量的属性。注册用户认可的特定键和值组合作为常用标签的非正式标准。但是,只要新方面需要分析以前未映射的特征属性,就可以创建新标签。大多数功能仅使用少量标签进行描述。
OSM 使用三种类型的文件来存储其主要数据。
OSM 处理所有这些文件以及有关其格式详细信息的信息。但是这些文件会产生相同的内部对象。对于数据文件,OSM 对象上的可见标志始终为真,而历史和更改文件则不然。
在常用的 OSM 文件格式中存在多样性。文件格式以位和字节定义磁盘或线路上的内容编码。 OSM 能够读取和写入最多这些格式。
XML
原始 OSM 格式是基于 XML 的。主 OSM 数据库 API 的返回数据为 XML 格式。
PBF
Protocol Buffers 编码基于二进制格式和最紧凑的格式之一。
O5M/O5C
基于二进制格式的更简单的格式,但相对较少使用。 OSM 可以读取但不能写入这种格式。
OPL
建议与标准 UNIX 命令行工具一起使用的简单格式。接近 CSV 文件,允许在一行中使用一个 OSM 实体。
调试
旨在为调试创建的基于文本的格式。 OSM 可以写入这种格式,但不能读取。
黑洞
一种处理所有数据的虚拟格式。 OSM 可以写入这种格式,但不能读取。
OSM 数据存储##
OSM 的主 PostgreSQL 数据库保留带有 PostGIS 扩展名的 OSM 数据的主副本。对于每个数据原语,主数据库维护一个表,其行存储各个对象。所有编辑都会更新这个数据库,所有其他格式都是使用这个数据库形成的。创建了许多可下载的数据库池以将数据从一个地方传输到另一个地方。两种格式,一种使用 XML,另一种使用协议缓冲区二进制格式 (PBF) 定义这些池。完整的数据存储在一个名为 planet.osm 的文件中
OSM 文件中的压缩##
基于文本的格式(XML、OPL 和调试)可选择使用 gzip 或 bzip2 压缩。