几种导入osm(openstreetmap)数据的方法
一osm2pgsql+postgresql+postgis
osm2pgsql——是由OpenStreetMap开发的一个命令行工具负责将OSM数据导入到基于PostgresSql的Postgis的数据库中。下载地址:http://customdebug.com/osm/osm2pgsql.zip,其次我们还要指定osm2pgsql的gitHub地址因为我们需要的两个文件在里面可以找到一个是900913.sql一个是default.style,osm2pgsql在github的地址如下:https://github.com/openstreetmap/osm2pgsql
安装
osm2pgsql是一个绿色软件,解压完成后进入到osm2pgsql/x64或者Win32,依你安装的Postgresql而定,osm2pgsql就安装完成了。
postgreSQL,并且要安装好postgis拓展; 注意:postgis安装完成后,会在pgAdmin面板左侧出现自带的模板数据库(如下图)
postgis_22_sample就是自带的模板
创建空间数据库
在这里创建空间数据库的方式有多种:
依据使用工具来分:可以分为使用dos命令行创建、使用SQL语句创建
dos命令行创建:
实例一
创建一个简单的postgreSQL数据库:
createdb nanjing
注意:要在postgresSQL安装目录下进行!
在pgAdmin面板中刷新即可出现创建的数据库nanjing
由于我们所创建的只是一般的数据库,所以还要添加一些空间拓展
添加空间信息
1)添加pl/pgsql语言:createlang plpgsql nanjing
(多数情况下,会自动添加好该语言)
2)加载postgis对象和函数定义(postgis.sql)
存放在C:\Program Files\PostgreSQL\9.4\share\contrib\postgis-2.2
psql -d nanjing -f postgis.sql
加载成功后出现的情况如下图:
3)加载EPSG坐标系统定义(spatial_ref_sys.sql)
存放在C:\Program Files\PostgreSQL\9.4\share\contrib\postgis-2.2
pgsql -d nanjing -d spatial_ref_sys.sql
加载成功后出现的情况如下图:
导入空间数据
准备工作:
下载osm2pgsql软件:http://customdebug.com/osm/osm2pgsql.zip
default.style文件:https://github.com/openstreetmap/osm2pgsql
注意:在下载default文件的时候千万不要直接在网页中点击下载,这样下载后的内容全部都是网页而不是真正的代码,正确的做法是在网页中打开这个文件,并且将代码复制到里面去即可!!!
https://github.com/openstreetmap/osm2pgsql/blob/master/default.style
osm数据导入postgis
1.解压osm2pgsql之后,在dos命令下转到其安装目录:
2.使用osm2pgsql命令将数据导入:
3.导入成功后出现如下结果:
导入成功
实例二
第一步:创建一个Postgresql的数据库
打开命令行输入createdb -U postgres -E UTF8 osm 其中osm是数据库的名称,postgres是数据库的用户名。执行完成后我们打开pgAdmin III客户端刷新,就可以看到刚才创建的数据库。
第二步:安装language plpgsql
createlang -U postgres plpgsql osm
一般这一步都不需要,默认已经安装上去了。
在数据库的【拓展】节点可以看到
第三步:添加PostGIS功能到数据库,执行如下命令:
psql -U postgres -d osm -f “你PostgreSQL安装路径/share/contrib/postgis-2.1/postgis.sql”
控制台会打印如下一些命令。
表示安装完成。
第四步:添加EPSG: 900913支持
上面提到过在osm2pgsql的github上包含900013.sql的文件下载到本地。放到一个好访问的目录中,执行如下命令:
psql -U postgres -d osm -f “本地的文件路径/900913.sql”
第五步:添加OSM数据到数据库
下载github上的osm2pgsql中的default.style文件并拷贝到本地osm2pgsql的x64目录中,把下载的chain.osm.bz2文件解压得到的chain.osm文件也拷贝到osm2pgsql的x64目录中。
新打开一个命令行进入osm2pgsql的x64目录中,执行如下命令:
osm2pgsql -U postgres -d osm -s -S ./default.style ./china.osm
一般情况下会报一个”Error reading style file line 151 (fields=4) flag ‘phstore’ is invalid in non-hstore mode“的错误,如下截图:
这说明确实hstore表示所以我们需要添加这个标识。点击pgAdmin III 工具栏中的SQL标识
在弹出的SQL编辑器中输入:create extension hstore;命令点击顶部工具栏中的
图中画框的按钮。控制台会输出“[QUERY ] create extension hstore “表示hstore扩展已经添加成功,在pgAdmin III的数据库拓展中可以看到。
还需要为命令添加一个“–hstore “选项 完整的执行命令是:“osm2pgsql -U postgres -d osm –hstore -s -S ./default.style ./china.osm “这样就正确了。
导入成功!
补充:导出shp
通过postgis可以将数据重导出为shp文件,方便使用。
二osmosis+postgresql+postgis
安装
osmosis的可以直接下载解压就可以使用了:http://wiki.openstreetmap.org/wiki/Osmosis#Latest_stable_version(osmosis依赖于jvm,要保证电脑上的JAVA_HOME、path设置都弄好了)
使用方法:略
三使用ArcGIS Editor for OSM转换数据
下载地址(官网:http://www.esri.com/software/arcgis/extensions/openstreetmap)
安装成功后可在ArcMAP中的工具箱中找到
直接使用即可
其他版本地址:https://github.com/Esri/arcgis-osm-editor/releases
四使用FME(Feature Manipulate Engine)导入OSM数据。使用FME Data Inspector 工具,选择OSM的格式以及下载的文件便可导入OSM数据进行查看。
几种导入osm(openstreetmap)数据的方法的更多相关文章
- Mysql导入导出大量数据的方法、备份恢复办法
经常使用PHP+Mysql的朋友一般都是通过phpmyadmin来管理数据库的.日常的一些调试开发工作,使用phpmyadmin确实很方便.但是当我们需要导出几百兆甚至几个G的数据库时,phpmyad ...
- 除了GPS外的4种获得用户地理位置数据的方法
纯粹的GPS解决方案以及它所生成的经纬度标签是地理位置数据的公认标准.但是至少还有4种方法可以获得地理位置数据: 1.手机信号塔数据:当移动设备的GPS芯片不能接收到GPS信号时,移动设备就需要与它所 ...
- mysql数据库中导入txt文本数据的方法
安装好MySQL和Navicat 8 for MySQL 通过Navicat 8 for MySQL创建数据库test. 2 在数据库test上创建测试数据表student(主键ID,姓名,年龄,学 ...
- osm(Openstreetmap)数据下载并导入arcgis
https://3nice.cc/2018/07/18/arcgisosm/ https://blog.csdn.net/zimojiang/article/details/80409139 http ...
- OpenCV几种访问cv::Mat数据的方法
一般来说,如果是遍历数据的话用指针ptr比用at要快.特别是在debug版本下.因为debug中,OpenCV会对at中的坐标检查是否有溢出,这是非常耗时的. 代码如下 #include <op ...
- Django—Form两种保留用户提交数据的方法
用户在网页上进行表单填写时,有可能出现某项填写错误.一般情况下,用户在未发觉错误的情况下点击提交,则此表单的内容会清空,用户不得不再重新填写,这样的用户体验是及其糟糕的. 在此,我们有2种方法将用户的 ...
- 一种动态写入apk数据的方法(用于用户关系绑定、添加渠道号等)
背景: 正在开发的APP需要记录业务员与客户的绑定关系.具体应用场景如下: 由流程图可知,并没有用户填写业务人员信息这一步,因此在用户下载的APP中就已经携带了业务人员的信息. 由于业务人员众多,不可 ...
- C#中在WebClient中使用post发送数据实现方法
很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地.Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法 ...
- [原]在GeoServer中为OpenStreetMap数据设置OSM样式
转载请注明作者think8848和出处(http://think8848.cnblogs.com) 在前面几篇文章中,我们讲到了部署Postgresql,部署PostGis,部署GeoServer以及 ...
随机推荐
- Spring中的c3p0配置
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51162560 今天,我们就来详细谈谈Spring中的c3p0配置问题,好了,不耽搁 ...
- BZOJ3632: 外太空旅行
BZOJ1547: 周末晚会 https://lydsy.com/JudgeOnline/problem.php?id=1547 分析: 对于一个串旋转若干次会回到本身,旋转次数即是同构个数,这个东西 ...
- UVA11178 Morley's Theorem
题意 PDF 分析 就按题意模拟即可,注意到对称性,只需要知道如何求其中一个. 注意A.B.C按逆时针排列,利用这个性质可以避免旋转时分类讨论. 时间复杂度\(O(T)\) 代码 #include&l ...
- 对django整个网站搭建文件的总结
1.比方说现在是写一个使用HTTP 2.0的HTTP服务器,在不改变现有程序配置的情况下,需要重新编译HTTP服务器,比方说,用的是Nginx服务器,需要隐藏服务器版本,如果想要小绿锁 也就是网站安全 ...
- 【Swift】- UITextField完成输入后关闭软键盘的几种方法
总结了以下几种方式,欢迎补充 1,为空白区域绑定Touch Up Inside事件 2,重写touchesEnded方法 3,为TextField绑定Did End On Exit事件 1,点击 ...
- 解决Iframe session过期,登录界面无法全页刷新
在登录界面增加如下js代码: <script language=”JavaScript”> if (window != top) top.location.href = location. ...
- file_put_contents(): supplied resource is not a valid stream resource
在项目开发的过程中 自己想把输出和一些想要内容输出到日志文件中,便于查看 但是在输入的过程中报了这样一个错误: file_put_contents(): supplied resource is no ...
- 对DDS的深度认识
我知道,我对与电子有关的所有事情都很着迷,但不论从哪个角度看,今天的现场可编程门阵列(FPGA),都显得“鹤立鸡群”,真是非常棒的器件.如果在这个智能时代,在这个领域,想拥有一技之长的你还没有关注FP ...
- 2017中国大学生程序设计竞赛 - 女生专场 Deleting Edges(思维+最短路)
Deleting Edges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- PHP大小写:函数名和类名不区分,变量名区分
PHP对大小写敏感问题的处理比较乱,写代码时可能偶尔出问题,所以这里总结一下. 但我不是鼓励大家去用这些规则.推荐大家始终坚持“大小写敏感”,遵循统一的代码规范. 1. 变量名区分大小写 <?p ...