OpenStreetMap网页界面介绍与OSM数据多种下载渠道及方式对比

  本文对OpenStreetMapOSM)网页与各类OSM数据的多种下载方式加以详细介绍,并对不同数据下载方式加以对比。OSM数据包含道路与铁路路网、建筑、水体、土地利用、兴趣点、行政区边界等各类数据,同时具有.shp.pbf.osm.csv等多种类型,方便大家不同的使用需求。在这里有一点需要注意:OSM数据在国家边界数据方面非常不准确,如有相关需求,大家可以从其它网站获取对应边界数据。

  接下来进入本文正题——OSM数据的下载。首先,进入OSM官网:https://www.openstreetmap.org/。此时可以看到屏幕中均为地图显示区域,需要点击左上角的“Export”按钮打开数据下载窗口。

在这里插入图片描述

  数据下载窗口如下所示,其中上半部分为研究区域选择界面,下半部分则为多种数据下载方式的选择界面

在这里插入图片描述

  我们先对研究区域选择界面加以介绍。其中,我们可以通过拉动屏幕所显示的地图范围或直接在下图所示框内修改经、纬度的方式,对研究区域加以选择。

在这里插入图片描述

  此外,还可以点击经、纬度框下方的蓝色字符,通过手动划定矩形区域的方式选择研究区域范围。

在这里插入图片描述

  选择好研究区域后,就可以开始OSM数据的下载了。

1 Export

  首先,我们可以直接点击屏幕左侧的“Export”按钮导出数据;但需要注意,在研究区域过大时,这一方法将会失效。

在这里插入图片描述

  这种方法导出的数据格式为.osm

在这里插入图片描述

  上述.osm格式的数据需要进行转换。其中,利用ArcGIS Editor for OSM工具集实现转换是比较常用的一种方式,这一工具集的下载与安装方法可以参考这篇博客(https://blog.csdn.net/zhebushibiaoshifu/article/details/119300663)。

  综上,可知这一下载方法的适用场景为数据量比较少,且具有ArcGIS Editor for OSM等可以转换.osm格式文件的工具时。

2 Overpass API

  Overpass APIOSM数据库的一个镜像,当研究区域较大导致前述“Export”方法不能下载时,可以用这一方法进行下载。

在这里插入图片描述

  这种方法导出的数据格式为空,即不含有文件后缀。个人认为这种数据可能比较适合于编写其它软件或程序时,需要调用地图接口时使用。

在这里插入图片描述

  综上,可知这一下载方法的适用场景为数据量较大,且主要面向于开发需求时。

3 Planet OSM

  Planet OSM是一个定期更新的全球OSM数据集。

在这里插入图片描述

  其实,Planet OSM和我们前面选好的研究区域就没有多大关系了——因为刚刚也提到,其数据是全球的OSM数据整合(所以叫做Planet);也就是说,不管我们的研究区域是北京的一个区,还是整个上海市,再或者是一个河南省,Planet OSM都是一个全球的、完整的数据集,都需要我们下载后自行裁剪。因为是全球的数据,因此其数据量非常大,由下图可知.xml格式文件就达到了106 GB.pbf格式文件也有59 GB之大。

在这里插入图片描述

  在这里,我们可以关注Planet OSM网页中最右侧的一栏。其向我们说明了,如果研究区域比较小,可以不用下全球的数据,而可以通过两个第三方网站获取小研究区域对应的OSM数据。这两个第三方网站我们马上会提到,这里暂且不细讲。

在这里插入图片描述

  综上,可知这一下载方法的适用场景为研究区域非常大,甚至达到全球范围,且网速与电脑配置较好时。

4 Geofabrik Downloads

  Geofabrik Downloads便是前述Planet OSM中提到的第三方网站之一,其也是一个定期更新的OSM数据集。

在这里插入图片描述

  和Planet OSM相比,其优势在于可以按照国家或地区进行更小范围研究区域数据的下载,而不用下载整个地球的数据了。

在这里插入图片描述

  不过说实话,Geofabrik DownloadsPlanet OSM相比也并没有好到哪去——其虽然可以不用下载全球数据,但它的子区域无非也就是精细到国家范围。例如以我国数据为例,若我们需要省、市乃至区范围的数据,都需要下载全国的数据后自行裁剪。

在这里插入图片描述

  综上,可知这一下载方法的适用场景为研究区域相对较大,尤其是主要做全国范围的研究时。

5 Other Sources

  Other SourcesOSM官网提供的数据下载其它方法的合集。

在这里插入图片描述

  由于Other Sources所对应的方法相对比较多且小众,因此官网也是直接将Other Sources方法整合在Wiki中,大家如果有需要可以自行查阅。

在这里插入图片描述

  综上,可知这一下载方法的适用场景为研究需求比较独立或小众,或本文所介绍的其它全部数据下载方法都不适合时。

6 BBBike(最为推荐的方法)

  BBBike也是前述Planet OSM中提到的第三方网站之一,其也是一个定期更新的OSM数据集。

在这里插入图片描述

  BBBike的网站也非常简单,数据下载方式非常清晰。

在这里插入图片描述

  BBBike的主要优点就是下图中我标注出来的部分:首先,可以单独下载全球200多个主要城市的独立数据,这对于做某一个单独城市(例如北京市、上海市等等)的研究而言,非常方便;其次,具有.shp格式的文件,方便我们后期直接用ArcMap等软件处理数据;再次,其还支持手动划定城市,例如假如我们要做洛阳这样一个三线城市的研究,其肯定不属于全球200多个主要城市的范围内,那么就可以我们手动划定多边形区域从而下载数据;最后,就是BBBikeOSM数据是每周更新的,完全不用担心数据时效性滞后。

  所以真的,BBBike简直太适合OSM数据的下载了。

在这里插入图片描述

  我们就以北京数据为例。在BBBike城市列表中找到Beijing

在这里插入图片描述

  点进去,就可以看到不同格式数据的下载;我们就下载一个.shp格式来试试看。

在这里插入图片描述

  下载后的数据解压完毕,可以在README.txt中看到数据的更新时间。

在这里插入图片描述

  数据非常齐全,包括道路与铁路路网、水体、兴趣点、建筑、土地利用等等。

在这里插入图片描述

  在ArcMap中打开,也是非常方便。

在这里插入图片描述

  综上,可知这一下载方法的适用场景非常广泛,几乎所有时候我们都可以借助这种方法进行OSM数据的下载。

7 ArcGIS Editor for OSM

  ArcGIS Editor for OpenStreetMapArcMap软件中的一个工具集,通过其可以实现基于ArcGIS相关软件直接下载OSM数据,并基于下载后的数据进行数据编辑、空间分析、数据修改与回传至OSM服务器等多项功能。

在这里插入图片描述

  ArcGIS Editor for OSM需要我们自行下载与安装,具体方法大家可以参考这篇博客(https://blog.csdn.net/zhebushibiaoshifu/article/details/119300663)。

在这里插入图片描述

  不过基于ArcGIS Editor for OSM下载OSM数据也是需要根据经、纬度来的,并且还没有可视化界面,个人感觉也并不是很方便。

  综上,可知这一下载方法的适用场景为研究区域比较固定,且只需要经、纬度就可以确定研究区域时。

欢迎关注公众号/CSDN/知乎/微博:疯狂学习GIS

<think>好的,我现在需要回答用户关于如何通过Python调用谷歌离线地图API的问题。首先,我需要了解用户的具体需求。他们提到“离线地图”,可能是指在没有网络连接的情况下使用地图数据,或者下载地图数据后本地使用。 根据用户提供的引用内容,引用[2]提到了使用Python脚本下载谷歌卫星影像并加载到GlobalMapper中。这可能涉及下载地图瓦片(tiles)并存储本地,然后通过某种方式加载这些瓦片。不过用户希望的是调用Google的离线地图API,而通常Google地图的API需要在线使用,离线使用可能涉及法律和数据使用条款的问题。因此,我需要先提醒用户注意遵守相关法律法规。 接下来,我需要考虑技术实现。通常,离线地图的使用需要预先下载地图瓦片,并搭建本地服务器或使用本地文件系统来加载这些瓦片。引用[3]中提到了使用Qt和JavaScript交互调用百度离线地图,这可能涉及到将地图瓦片存储在本地,并通过Web视图加载。类似的思路可能适用于谷歌地图,但需要确保数据的获取是合法的。 步骤可能包括: 1. 获取谷歌地图的瓦片数据,这可能需要使用下载工具,但需注意合规性。 2. 存储瓦片到本地目录结构中,保持正确的层级和坐标命名。 3. 使用Python搭建一个简单的Web服务器或使用现有的库(如Flask)来提供这些瓦片。 4. 使用Web视图组件(如PyQt5的QWebEngineView)加载包含地图库(如Leaflet或OpenLayers)的HTML页面,配置该页面使用本地的瓦片服务。 示例代码可能包括下载瓦片的脚本(但需要注意法律问题,因此可能不提供具体下载代码),以及使用Flask提供本地瓦片服务的代码,然后结合HTML/JavaScript显示地图。需要引用用户提供的引用内容中的相关部分,例如引用[2]提到下载卫星影像的方法,但可能涉及不同的工具。 需要注意的是,直接使用谷歌地图的瓦片可能违反其服务条款,特别是未经授权的情况下。因此,建议用户考虑使用开放数据源,如OpenStreetMap,引用[1]中提到的PyQGIS加载OSM离线地图的方法可能更合法且可行。 总结回答结构: 1. 法律和使用条款的注意事项。 2. 技术实现步骤:下载瓦片(需合法)、搭建本地服务、前端显示。 3. 示例代码框架,可能使用Flask和Leaflet。 4. 替代方案建议,如使用OpenStreetMap数据。 5. 相关问题。 需要确保回答中的LaTeX格式正确,行内公式用$...$,独立公式用$$...$$。同时生成相关问题。</think>由于Google地图服务条款明确禁止未经授权的离线使用和地图数据缓存[^2],直接通过Python调用Google离线地图存在法律风险。建议优先考虑合法替代方案(如OpenStreetMap)。若需实现类似功能,可采用本地瓦片服务+Web前端结合的方案: ### 技术实现步骤 1. **地图瓦片获取** 需通过合法渠道获取地图数据(例如购买授权或使用开放数据源)。假设已获得授权,瓦片存储路径通常遵循$z/x/y.png$格式,其中$z$为缩放级别,$x,y$为瓦片坐标。 2. **搭建本地瓦片服务器** 使用Python Flask提供本地瓦片访问服务: ```python from flask import Flask, send_from_directory import os app = Flask(__name__) TILES_DIR = os.path.abspath('tiles') @app.route('/tiles/<int:z>/<int:x>/<int:y>.png') def get_tile(z, x, y): return send_from_directory(os.path.join(TILES_DIR, str(z), str(x)), f'{y}.png') if __name__ == '__main__': app.run(port=5000) ``` 3. **前端地图渲染** 创建HTML页面使用Leaflet库加载本地瓦片: ```html <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css"/> <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script> </head> <body> <div id="map" style="height: 600px;"></div> <script> var map = L.map('map').setView([39.9042, 116.4074], 12); // 北京坐标 L.tileLayer('http://localhost:5000/tiles/{z}/{x}/{y}.png', { maxZoom: 18, attribution: 'Local Tiles' }).addTo(map); </script> </body> </html> ``` ### 替代方案建议 - **使用OpenStreetMap数据**:通过PyQGIS加载OSM离线地图(如引用[1]所述),合法且无版权风险 - **百度/高德离线地图**:部分国内地图服务提供商业授权(引用[3]展示了百度离线地图的调用方法)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂学习GIS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值