使用Cartopy在离线情况下制作地图

4

我试图使用离线的Cartopy绘制地图。我找到了这篇文章:存储在本地的Cartopy数据的位置,然而,即使我将cartopy.config['data_dir']更改为下载文件所在的路径'C:/...',当我尝试绘制海岸线时,它仍然需要下载地图。

cartopy.config['data_dir'] = '.../CartopyMaps'
ax = plt.axes(projection=ccrs.PlateCarree())
ax.coastlines()

控制台显示:

Downloading: 
http://naciscdn.org/naturalearth/110m/physical/ne_110m_coastline.zip

然而,在.../CartopyMaps/shapefiles/natural_earth/physical/路径下,我有ne_110m_coastline的dbf,shp和shx文件。

为什么Cartopy看不到我的本地地图,我该如何帮助它?


有人解决了这个问题吗?我也遇到了同样的问题。即使我已经将地图下载到指定的data_dir中,Cartopy仍然坚持要下载。 - J Webster
3个回答

0
我曾经遇到过类似的问题,困惑了相当长一段时间。后来我下载了整个离线数据集并将它们放在正确的目录下,在运行代码之后问题得到了解决。
...
states = NaturalEarthFeature(category="cultural", scale="50m",
                             facecolor="none",
                             name="admin_1_states_provinces_shp")
...

控制台仍然显示:

Downloading: 
...50m/cultural/ne_50m_admin_1_states_provinces_lines_shp.zip

然而,我发现我下载的文件ne_50m_admin_1_states_provinces_lines.shp和cartopy尝试获取的文件ne_50m_admin_1_states_provinces_lines_shp.zip之间存在轻微差异。

因此,我将命令更改为以下内容,它可以正常工作:

states = NaturalEarthFeature(category="cultural", scale="50m",
                             facecolor="none",
                             name="admin_1_states_provinces")

0
尝试使用“pre_existing_data_dir”路径而不是“data_dir”。
from os.path import expanduser
import cartopy
cartopy.config['pre_existing_data_dir'] = expanduser('~/cartopy-data/')

0
我在这里分享了一种逐步解决方案: https://discourse.holoviz.org/t/using-geoviews-tile-sources-offline/4859/5 简而言之:
import cartopy
import geoviews as gv
from bokeh.resources import INLINE

cartopy.config["pre_existing_data_dir"] = "/Users/ahuang/.cartopy/cartopy"
print(cartopy.config)

gv.extension("bokeh")

coastline = gv.feature.coastline()
borders = gv.feature.borders()
world = (coastline * borders).opts(global_extent=True)

gv.save(world, "world.html", resources=INLINE)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接