# 1.pg数据库安装扩展

  • 执行 create extension postgis; 命令,安装postgis 扩展
  • 执行 create extension hstore; 命令,安装hstore 扩展;若失败,可先通过 yum install postgresql-contrib 安装 postgresql-contrib,再安装hstore

# 2.安装osmosis

数据表

# 3.利用osmosis操作数据库和osm文件数据

  • 导入osm数据到pg数据库

执行如下命令

osmosis --read-xml C:\Users\Admin\Desktop\test.osm --write-pgsql host="192.168.77.200:36001" database="test" user="test" password="test"
1
  • 从pg数据库导出osm文件

执行如下命令

osmosis --read-pgsql host="192.168.77.200:36001" database="test" user="test"  password="test" --dataset-bounding-box-0.6 left="114.4923"  top="30.5265"  right="114.5661"  bottom="30.4963" --write-xml C:\Users\Admin\Desktop\out.osm
1

# 4.OSM相关的一些概念

地图数据的存储方式是xml结构,后缀名可以是xml或osm。

地图的数据结构,即地图要素包括Node、 Way、 Relation、Tag、Common attributes

这些地图要素,与普通的地图或导航要素概念相同

  • Node是空间点,包括经纬坐标,或高度信息。其他一些可选信息,如name等,在tag子数据中表示。类似于shape point 或attribution point

  • way表示线或区域,能包含2-2000个node点信息。它道路与区域描述的主要形式。类似于link、edge的概念

  • relation表示不同的元素间的关系,将不同元素间的关系描述出来。类似于connection的概念

  • tag表示一个元素中包含的一个特征,或者说是包含的一小块数据,如highway=residential,住宅区内的道路。类似于attribution的概念,不过tag的作用远不止attribution的描述。

  • Common attributes就是node、way、relation的共同属性,包括id, usr, version, timestamp等meta的信息。

Elements - OpenStreetMap Wiki (opens new window)

在OSM数据库中,我们为节点,路径,关联储存了这些属性,你的应用程序不一定需要全部使用,一些提取OSM数据的第三方软件也不一定给予全部的重现。

属性名 数据类型 描述
id 整型(64位 (opens new window)) 用来识别元素。每种元素类型有独立的ID空间,所以可能同时有节点和路径拥有相同的ID,但是他们之间不太可能有逻辑上或是物理上的联系。
user 字符串 最后修改元素的用户的显示名(仅供参考,可能为空)。用户可以随时更改其显示名(现有元素将反映新用户名,而无需更改任何版本)。
uid 整型 用来显示最后更改的用户的用户ID,用户ID是固定值。
timestamp W3C标准日期与时间格式 (opens new window) 最后修改时间(例如「2016-12-31T23:59:59.999Z」)。
visible "true" "false" 用来标记元素是否被数据库删除, 如果 visible="false" 那么这个元素仅应该被历史记录所返回。
version 整型 元素的编辑版本。新创建的元素从版本1开始,当客户端上传元素的新版本时,该值由服务器递增。如果客户端发送的版本与数据库中元素的当前版本不匹配,服务器将拒绝元素的新版本。
changeset 整型 在其中创建或更新元素的变更集 (opens new window)编号(建议在应用程序中支持 64 位以与 OSM 数据库的长期演变兼容,但仅查询数据而不更新它们的应用程序可能会忽略此信息属性)。