Python 2.7 如何在Matplotlib Basemap上使用OpenStreetMap背景

Python 2.7 如何在Matplotlib Basemap上使用OpenStreetMap背景,python-2.7,gis,openstreetmap,matplotlib-basemap,Python 2.7,Gis,Openstreetmap,Matplotlib Basemap,这应该很简单,但当我查找它时,我只找到web包。我需要的东西比你想象的更好。可能使用.oms文件或形状文件。提供bbox并在Basemapmap上获取OpenStreetMap背景的一些方法 我在Stack上发现了一些类似的问题,但答案指向OpenStreetMap网站上的.png文件,或者使用一些web包。您可以从其中一个网站下载必要的互动程序。OSMwiki解释了背后的技术细节,还包括各种编程和脚本语言的示例 还请阅读有关的内容,并记住,不同的瓷砖服务可能有不同的政策。我建议不要尝试让某些东

这应该很简单,但当我查找它时,我只找到web包。我需要的东西比你想象的更好。可能使用
.oms
文件或形状文件。提供bbox并在
Basemap
map上获取OpenStreetMap背景的一些方法


我在Stack上发现了一些类似的问题,但答案指向OpenStreetMap网站上的
.png
文件,或者使用一些web包。

您可以从其中一个网站下载必要的互动程序。OSMwiki解释了背后的技术细节,还包括各种编程和脚本语言的示例


还请阅读有关的内容,并记住,不同的瓷砖服务可能有不同的政策。

我建议不要尝试让某些东西起作用,因为它们(尚未)一起起作用。 有一个简单的方法可以实现你想要的。 该库允许您在漂亮的交互式openstreetmap上可视化地理数据。自动执行长lat格式数据的地图投影

在windows和ubuntu中安装很容易:

pip install mplleaflet

您可以从提供的示例开始,然后从这里开始。

现在有许多库可以为您完成这项工作,这是我最近使用的三个示例

这些工具中的每一个都从承载OSM或其他(Stamen、Carto等)地图分幅的多个服务器之一获取地图分幅,然后允许您使用matplotlib在这些服务器上显示和打印。Tilemapbase还会在本地缓存磁贴,以便下次不会再次获取它们

但是,根据我最近的经验,似乎还没有一个现成的工具可以使用脱机tilesets(例如压缩的.mbtiles文件)作为matplotlib打印的背景

此链接包含对上述工具的调查以及更多信息-

编辑 我在之前的回答中提到,Tilemapbase在世界上的某些地理位置不起作用,因此明确建议不要使用它。但事实证明我错了,我为此道歉。它真的很棒!在我的例子中,问题非常简单——我在取回瓷砖时颠倒了顺序或lat和lon,因此它总是取回某些地理位置的空白瓷砖,这让我认为它不适用于这些位置

我在github中提出了这个问题,开发人员立即解决了这个问题。看这里-

请注意以下答复:

坐标应按(1)经度,(2)纬度的顺序提供。如果你从谷歌地图上复制它们,它们将按纬度/经度顺序排列,你必须翻转它们。所以你的地图图像不是空的,它只是挪威北部海洋中的一个位置

开发商本人:

是的,当我编写代码时,似乎没有一个通用的订购标准。所以我选择了一个不同于谷歌地图的。_lonlat中的方法名
应给出正确顺序的提示


使用
geopandas
contextly
非常容易。
看看。

所以,没有简单的方法可以做到这一点吗?如果您想坚持使用matplotlib basemap,这并不容易,但幸运的是有其他选择,如mplleflet。太好了!但这并不是我想要的。我想在matplotlib上绘制它。我强烈建议不要使用basemap,因为它不灵活,速度非常慢,但也许你可以解释更多你的实际目标,然后你可以得到更好的建议。顺便说一句,我刚刚发现了另一个与MPLPlayer非常相似的模块,如果smopy适合您的需要,也可以尝试一下,@PhilippSchwarz:第二篇关于smopy解决方案的帖子可能会帮助一些人