# 1.pg数据库安装扩展
- 执行 create extension postgis; 命令,安装postgis 扩展
- 执行 create extension hstore; 命令,安装hstore 扩展;若失败,可先通过 yum install postgresql-contrib 安装 postgresql-contrib,再安装hstore
# 2.安装osmosis
- 访问Releases · openstreetmap/osmosis (github.com) (opens new window),下载安装包
- 下载完成后,访问 osmosis-0.48.3\script 目录,对pg数据库执行 pgsnapshot_schema_0.6.sql 脚本,该脚本主要创建osm数据存储所需要的表,执行 pgsnapshot_schema_0.6.sql 脚本后,会生成如下7个表
# 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 数据库的长期演变兼容,但仅查询数据而不更新它们的应用程序可能会忽略此信息属性)。 |