用Python在离线地图上绘制点

问题描述 投票:0回答:1

我正在使用 Spyder,并且有几个想要在世界地图上绘制的坐标。目前我使用 Folium,将数据保存为 HTML 文件,然后在网络浏览器中打开它。我的问题是:是否可以在不使用网络浏览器的情况下在地图上绘制坐标?或者有什么外部因素吗?我希望有一个包可以让我绘制所有内容并在 Spyder 本身中看到它。

有人有想法吗?

python folium
1个回答
0
投票

查看

cartopy
模块,它提供了大量的地图投影以及用大量特征(例如陆地、海洋、海岸线、边界等)注释这些投影的能力,它不太可能出现在你的 Python 发行版中,所以安装它与

pip install cartopy

你还需要

matplotlib.pyplot
,但既然你已经在策划了,我假设你已经有了。

它的工作原理是为您的地图选择一个投影(crs - 坐标参考系)(例如 Mercator、Platte Carre(平板 - 基本上是矩形)等)。然后为您的数据选择适当的 crs。基本过程是

  • 使用所需的地图crs创建一组轴
  • 向这些轴添加您想要的任何功能
  • 设置要显示的地图范围(最小/最大经度和最小/最大纬度)
  • 最后使用任何 maplotlib.pyplot 函数在这些轴上绘制数据

这是一个使用长/纬度对散点图绘制非洲 4 个经度/纬度位置的简单示例

import cartopy
import cartopy.crs as ccrs
import matplotlib.pyplot as plt


map_crs = ccrs.PlateCarree()
data_crs = ccrs.PlateCarree()


def fancify(axes):
    """add features to cartopy axes"""
    axes.stock_img()
    axes.add_feature(cartopy.feature.LAND)
    axes.add_feature(cartopy.feature.OCEAN)
    axes.add_feature(cartopy.feature.COASTLINE)
    axes.add_feature(cartopy.feature.BORDERS, linestyle='-', alpha=.5)
    axes.add_feature(cartopy.feature.LAKES, alpha=0.95)
    axes.add_feature(cartopy.feature.RIVERS)

ax1 = plt.subplot(1, 1, 1, projection=map_crs)  # create map axes
fancify(ax1)                                    # add some features to map
ax1.set_extent([0, 60, 0, 60], map_crs)         # min/max long and lat

ax1.scatter([22, 11, 31, 30,], [8, 22, 13, 9])  # longitutes , latitudes
plt.show()

Some Random Locations In Africa

© www.soinside.com 2019 - 2024. All rights reserved.