下载OpenStreetMap数据


43

是否有直接的方法可以从OpenStreetMap(OSM)下载数据?

以北美为例,我意识到Cloudmade(Cloudmade不再提供OSM的下载)和Geofabrik(http://download.geofabrik.de/osm/north-america/)都提供下载,但是文件很大(0.5 GB-4GB)。我也尝试过使用QGIS-OSM工具栏,但是这样做并不算运气,因为与OSM网站类似,您可以选择的区域很小。我要下载的数据量是城市级别的。

最后,使用OSM数据容易吗?如果选择下载OpenStreetMap XML Data,则无法使用QGIS(甚至使用QGIS-OSM工具栏导入功能)打开osm.xml文件。我想知道我是否缺少一种更明显的数据处理方式。


我只想指出非常有用的StackExchange克隆,以寻求OSM相关问题的帮助!http://help.openstreetmap.org/


1
但是文件很大?(0.5gb-4gb)不在GIS世界中
-5TB

抱歉-我的机器太小了。0.5gb并不是很多,但是4gb对我来说却难以管理!
djq 2011年

对此进行了更多探索,我发现geofabrik提供的数据比cloudmade更全面。
djq 2011年

1
@Nathanus我承认我刚刚注册.....是的,但实际上它的重点是关于OSM的每个小细节,其中许多与编程相关,而并非特定于GIS。尽管如果存在子站点的子站点,那将是完美的。此处的字体非常清晰!
djq 2011年

1
@djq CloudMade下载站点现在返回404-可能已经停产了
斯蒂芬·利德

Answers:


33

乔斯

对于问题的两个部分,最简单的答案也许就是使用JOSM。Java OpenStreetMap编辑器。它很容易下载数据,也很容易“使用”数据。

对于下载,JOSM提供了一个简单的界面,可让您选择要下载的矩形区域,但是它是通过编辑API下载的。这将拒绝任何太大的请求,如果请求太大,则会花费很长时间进行思考。通常,整个城市太大了,但是您可以通过请求几个矩形区域来获取大量数据。

对于“使用”数据,JOSM可让您查看数据并在所有标签中进行适当的戳戳。搜索功能非常强大,可让您选择带有特定标签的元素,但除此之外,它实际上还取决于您所考虑的“使用”类型。您可以配置JOSM在某种程度上显示数据的方式,但是对于漂亮的地图,您可能想要查看设计用于OSM文件的渲染工具。您还可以查看例如到shapefile的转换,但是请记住,数据与您可能习惯的数据是...不同的,因此此转换总是有点损耗。

顺便说一句...尽管它是相当不错的数据查看器,但JOSM的主要目的是成为OpenStreetMap 编辑器。只需单击“上传”将更改发送回OpenStreetMap(您需要创建一个OpenStreetMap帐户)。如果您还没有尝试编辑OpenStreetMap,则应该这样做。任何对地图感兴趣的人都应该尝试一下。在地图上添加您当地的餐馆或类似的东西。这是正确理解OpenStreetMap的唯一方法,这很有趣!

更大的文件

如果一个城市太大而无法载入JOSM怎么办?还有其他一些选择(如下所示),但是当您处理如此大量的数据时,将不可避免地会出现“使用”会有些困难的事实。您实际上已经脱离了有趣的小型GUI工具的领域,而进入了大数据GIS。最简单的方法(并非那么简单)可能是使用osm2pgsql将大型.osm文件加载到PostGIS数据库中,然后使用GIS桌面工具进行查看。

城市精华

该download.bbbike.org服务可为某些世界城市提供现成的下载。

渗透作用

如果您需要不同的城市或不同的边界框,则需要获取您提到的大量下载文件之一(要么是国家摘录,要么是整个星球),然后从中提取一部分。

渗透是最广泛使用的工具。这是一个Java命令行工具,可让您在UNIX命令行上使用以下内容提取边界框:

bzcat downloaded.osm.bz2 | osmosis\
  --read-xml enableDateParsing=no file=-\
  --bounding-box top=49.5138 left=10.9351 bottom=49.3866 right=11.201 --write-xml file=-\
  | bzip2 > extracted.osm.bz2

这显示了通常如何通过解压缩.bz2文件,将输出传递到渗透中,然后将生成的XML再次传递到bzip压缩文件中来避免用膨胀的XML数据填充磁盘。

因此,这可能不符合您对“ easy”的定义,但是如果您有兴趣处理大型.osm文件,则渗透是一个值得一试的工具。您只需要找出正确的命令即可!(我猜是另一个问题的好话题)


我用过JOSM-很好。但是,我对大量数据感兴趣,通常是整个城市,而我无法在其中做任何事情。
djq 2011年

我已经通过回答扩展到一些用于处理较大文件的选项。不幸的是,这并不容易,但希望能有所帮助。
哈里·伍德

谢谢@哈里。我最终osmosis在Linux 上使用了,并且工作正常。我目前想在Win 7上使用此设置,很高兴看到.exebzcat的存在。上次我检查没有。不幸的是,osm2pgsql在Windows上似乎没有一种简单的使用方法,否则这将是我的理想选择。
djq 2012年

24

2
+1哇,这是有先见之明的!您在这个问题出现甚至16个月前就回答了这个问题:-)。
ub


对此,请注意-它在我正在使用的最新版本的QGIS(1.7)上有效,但是仅允许下载很小的区域。
djq 2011年

来自Mapperz博客的报价“数据已直接从Open Street Map Servers下载[最新数据]。** OpenStreetMap Servers控制区域限制,如果需要,插件会警告您此问题”
Mapperz

@celenius:之所以有大小限制,是因为此OSM Web服务旨在用于映射(例如,下载小区域,对其进行编辑并上传回去)。通常,仅出于只读目的使用它是不受欢迎的,因为它负担了已经过度使用的OSM基础架构的负担。
伊戈尔·布雷耶

15

简单的答案是没有,没有快速简便的方法可以做到这一点。如果您想要整个北美的城市级数据,它将是一个巨大的文件。如果您想要较小的区域,则CloudMade会按状态文件进行状态显示。您可以在http://ian01.geog.psu.edu/geoserver_docs/data/openstreetmap/osm.html上看到有关该过程的注释,但是我没有什么好玩的。我开始研究渗透(http://wiki.openstreetmap.org/wiki/Osmosis),但在我做很多事情之前就没时间了,但这可能是解决您的问题的方法。

至于使用OSM数据,您可以采用非标准/新地理方法,并使用mapnik等,也可以将数据导入PostGIS并使其在某些适当的GIS工具中工作。


6

与@iant的建议相呼应,如果您仅在寻找美国数据,为什么不考虑只从Cloudmade下载您感兴趣的特定区域的州与州层呢?如果您感兴趣的区域可能只是几个州的数据,那么使用数据的最简单方法就是下载shapefile摘录(俄勒冈州的示例),您几乎可以在任何通用GIS程序中使用该文件。


更新:Cloudmade已不复存在,但如今,geofabrik下载服务可在此处提供美国的州级下载:download.geofabrik.de/north-america.html
哈里·伍德

4

为任意地图区域下载OSM数据的最简单,最干净的方法可能是使用OSMXAPI服务器之一。OSMXAPI API旨在用于对地理位置的只读访问。数据(不同于面向编辑的主要OSM API )。它还允许下载比主要API更大的区域。

访问OSMXAPI的一种方法是使用http://www.openstreetmap.org/上Export选项卡(选择“ OpenStreetMap XML数据”单选按钮)。


您有推荐的服务器吗?我尝试了几次,但出现超时错误(我认为)。从那以后,我一直在本地计算机上处​​理整个地球的副本。
djq 2011年


1
OSMXAPI总是有点怪异,如今这些地方不再作为运行服务存在。最接近的等效项是更强大的Overpass_API,但也有其他一些网站也这样做过extract.bbbike.orgexport.hotosm.org
哈里·伍德

3

WeoGeo公司现在可以免费下载OpenStreetMap数据。您可以绘制想要数据区域的轮廓,并生成文件。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.