layout: post

title: postgres与osm初步使用

date: 2016-9-20

categories: blog

tags: [地图开发]

description:地图开发

本文主要包括以下内容

  • postgreSQL数据库,用来存放地图原始数据
  • osm2pgsql 用来将osm地图数据导入到postgreSQL



    OSM数据

OpenStreetMap(简称OSM)是一个网上地图众筹(crowd sourcing)项目,目标是创造一个内容自由且能让所有人编辑的世界地图

osm数据特点

  • 数据来源多样,海量数据但数据质量参差不齐(错误、不一致),需要大量的后续数据处理
  • 按照数据的类别,用不同的标签标示数据类别
  • 将数据进行汇编,按进行全球(Planet OSM, OSM)或区域发布
  • 文件大:XML variant over 600+GB uncompressed, 50+ GB bz2 compressed and 30+GB for PBF

OpenStreetMap包括空间数据以及属性数据。其中空间数据主要包括三种:点(Nodes)、路(Ways)和关系(Relations),这三种原始构成了整个地图画面。其中,Nodes定义了空间中点的位置;Ways定义了线或区域;Relations(可选的)定义了元素间的关系, 属性数据Tags用于描述上述矢量数据基元

node通过经纬度定义了一个地理坐标点。同时,还可以height=标示物体所海拔;通过layer= 和 level=,可以标示物体所在的地图层面与所在建筑物内的层数;通过place= and name=*来表示对象的名称。同时,way也是通过多个点(node)连接成线(面)来构成的。

通过2-2000个点(nodes)构成了way。way可表示如下3种图形事物(非闭合线(Open polyline )、闭合线(Closed polyline)、区域(Area ))。对于超过2000 nodes的way,可以通过分割来处理。

OSM分类Features和标签(Tag)

各feature都通过tag来记录数据信息,通过‘key’ and a ‘value’来对数据进行记录。例如,可以通过highway=residential来定义居住区道路;同时,可以使用附加的命名空间来添加附加信息,例如:maxspeed:winter=*就表示冬天的最高限速

postgressql数据库安装

开源免费数据库:PostgreSQL下载安装教程_百度经验

OSM数据提取

下载osm:http://dev.openstreetmap.org/~bretth/osmosis-build/osmosis-latest.zip



下载中国地图数据

http://download.geofabrik.de/asia/china.html

数据裁剪

区域裁减,把中国地图裁剪成武汉地图:

osmosis --read-pbf file="china-latest.osm.pbf" --used-node --bounding-box left=113.9502 right=114.4762 top=30.7643 bottom=30.4291 clipIncompleteEntities="true" --write-pbf Wuhan.pbf

提取武汉地图的高速公路数据

osmosis --read-pbf file="wuhan.pbf" --tf accept-ways highway=* clipIncompleteEntities="true" --write-pbf Wuhan_highway.pbf

将数据导入postgres数据库

  • create extension hstore;
  • create extension postgis;
  • create extension pgrouting;
  • 运行数据库ddl: pgsnapshot_schema_0.6.sql
  • 导入数据:osmosis –read-pbf file=”wuhan_highway.pbf” –wp host=localhost database=osm user=postgres password=postgres

    1. 首先在postgres中添加3个扩展
    2. 再运行osmosis-latest\script文件夹下的 pgsnapshot_schema_0.6.sql脚本
    3. 运行导入指令即可

安装QGIS并连接postgres可以在地图上看到导入的数据

postgres与osm初步使用的更多相关文章

  1. 几种导入osm(openstreetmap)数据的方法

    一osm2pgsql+postgresql+postgis osm2pgsql­——是由OpenStreetMap开发的一个命令行工具负责将OSM数据导入到基于PostgresSql的Postgis的 ...

  2. [原]在GeoServer中为OpenStreetMap数据设置OSM样式

    转载请注明作者think8848和出处(http://think8848.cnblogs.com) 在前面几篇文章中,我们讲到了部署Postgresql,部署PostGis,部署GeoServer以及 ...

  3. 利用OpenStreetMap(OSM)数据搭建一个地图服务

     http://www.cnblogs.com/LBSer/p/4451471.html 图 利用OSM数据简单发布的北京地图服务   一.OSM是什么 开放街道图(OpenStreetMap,简称O ...

  4. OSM自建服务

    1.  安装PostgreSQL. 2.  安装PostGis(安装目录为PostgreSQL目录). 3.  安装osm2pgsql. osm2pgsql下载地址:http://customdebu ...

  5. PostgreSQL的hook机制初步学习

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面:PostgreSQL内部结构与源代码研究索引页    回到顶级页面:PostgreSQL索引页 本文的目的一是为了备忘,二是为了抛砖引玉,希望 ...

  6. 移动端之Android开发的几种方式的初步体验

    目前越来越多的移动端混合开发方式,下面列举的大多数我都略微的尝试过,就初步的认识写个简单的心得: 开发方式 开发环境 是否需要AndroidSDK 支持跨平台 开发语言&技能 MUI Win+ ...

  7. CSharpGL(29)初步封装Texture和Framebuffer

    +BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(29)初步封装Texture和Framebuffer +BIT祝威+悄悄在此留下版了个权的信息说: Texture和Framebuffe ...

  8. Android自定义View初步

    经过上一篇的介绍,大家对于自定义View一定有了一定的认识,接下来我们就以实现一个图片下显示文字的自定义View来练习一下.废话不多说,下面进入我们的正题,首先看一下我们的思路,1.我们需要通过在va ...

  9. 初步认识Node 之Node为何物

    很多人即便是在使用了Node之后也不知道它到底是什么,阅读完本文你应该会有一个初步的.具体的概念了.    Node的目标 提供一种简单的构建可伸缩网络程序的方法.那么,什么是可伸缩网络程序呢?可伸缩 ...

随机推荐

  1. 设计模式(15)-Facade Pattern

    http://www.cnblogs.com/zhenyulu/articles/55992.html 一. 门面(Facade)模式 外部与一个子系统的通信必须通过一个统一的门面(Facade)对象 ...

  2. Html中各种空格的显示

    一.使用全角空格 全角空格被解释为汉字,所以不会被被解释为HTML分隔符,可以按照实际的空格数显示. 二.使用空格的替代符号 替代符号就是在需要显示空格的地方加入替代符号,这些符号会被浏览器解释为空格 ...

  3. DICOM医学图像窗口变换的加速算法

    详见:http://pan.baidu.com/s/1gfFLbJ9 DICOM医学图像窗口变换的加速算法* 张尤赛 ,陈福民 ( 同济大学计算中心, 上海 200092 ) (华东船舶工业学院电子与 ...

  4. Python 学习笔记二

    笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...

  5. Qt 官方一键动态发布技能

    苦找了好几天动态库,程序可以运行了,结果没有图标还是少了运行库很苦恼,发现Qt 官方有一键动态发布功能感觉自己萌萌的,来自qt吧亲测可用. 集成开发环境 QtCreator 目前生成图形界面程序 ex ...

  6. echarts

    ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9/10/11 ...

  7. Java 数据库操作之Dao类

    package Dao; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; imp ...

  8. 【GoLang】GoLang 错误处理 -- 使用 error is value 的思路处理,检查并处理error

    吐血推荐: https://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully 参考资料: https:/ ...

  9. mysql grant ,User,revoke

    mysql的权限一直都都是很关心的重点,我知道的也只是很少的一部分,对于每个数据库我习惯创建一个一个用户,该用户只对自己从属的数据库产生进行操作,在一部分的程度上可以保护自己的数据库, 比如我有一个数 ...

  10. java.lang.UnsatisfiedLinkError: Couldn't load hyphenate_av from loader dalvik.system.PathClassLoader

    android studio引入第三方库时报如下异常. 06-15 16:50:24.477 9497-9497/easemobim.test.com.easemobim E/AndroidRunti ...