【问题标题】:Cartopy error when attempting to plot rivers尝试绘制河流时出现 Cartopy 错误
【发布时间】:2021-09-06 17:54:29
【问题描述】:

尝试使用 Cartopy 绘制河流时,我收到了一个 URL 错误。我什至不确定河流功能是否会绘制我想要的图...我正在尝试让加尔维斯顿船舶航道显示在我的地图上。

这是我得到的错误:

C:\ProgramData\Anaconda3\lib\site-packages\cartopy\io\__init__.py:260: DownloadWarning: Downloading: https://naciscdn.org/naturalearth/10m/physical/ne_10m_rivers_lake_centerlines.zip
  warnings.warn('Downloading: {}'.format(url), DownloadWarning)
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 1354, in do_open
    h.request(req.get_method(), req.selector, req.data, headers,
  File "C:\ProgramData\Anaconda3\lib\http\client.py", line 1255, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\ProgramData\Anaconda3\lib\http\client.py", line 1301, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\ProgramData\Anaconda3\lib\http\client.py", line 1250, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\ProgramData\Anaconda3\lib\http\client.py", line 1010, in _send_output
    self.send(msg)
  File "C:\ProgramData\Anaconda3\lib\http\client.py", line 950, in send
    self.connect()
  File "C:\ProgramData\Anaconda3\lib\http\client.py", line 1417, in connect
    super().connect()
  File "C:\ProgramData\Anaconda3\lib\http\client.py", line 921, in connect
    self.sock = self._create_connection(
  File "C:\ProgramData\Anaconda3\lib\socket.py", line 787, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  File "C:\ProgramData\Anaconda3\lib\socket.py", line 918, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed

这是代码:

import matplotlib.pyplot as plt
import datetime as dt
import cartopy.crs as ccrs
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
import cartopy.feature as cfeature
from metpy.plots import USCOUNTIES


ship_lon, ship_lat = -94.80234, 29.31221


ax = plt.axes(projection=ccrs.PlateCarree())
ax.set_extent([-95.5, -94.1, 28.8, 29.8])
ax.add_feature(USCOUNTIES.with_scale('500k'),facecolor='none', edgecolor='gray',linewidth=0.5)

ax.add_feature(cfeature.NaturalEarthFeature('physical', 'land', '10m', edgecolor='black', facecolor='#d4d4d4'))
ax.add_feature(cfeature.NaturalEarthFeature('physical', 'ocean', '10m', facecolor='lightblue'))
ax.add_feature(cfeature.NaturalEarthFeature('physical', 'rivers_lake_centerlines', '10m', facecolor='lightblue'))

ax.set_title('Hunter-T Approximate Location at Time of Incident',loc='left',fontsize=10,fontweight='bold')
plt.scatter(ship_lon, ship_lat, marker='*', color='black',s=12, zorder=10)
plt.text(ship_lon, ship_lat+.03, 'Vessel Location', fontsize=5, fontweight='bold',horizontalalignment='center')

plt.savefig(fname='vessel_location.png',bbox_inches='tight', dpi=600)
plt.close()

如果我不考虑河流,这就是我的输出。带有船舶位置的标记实际上是船舶航道。我正试图让那片水体展示出来。我尝试搜索 shapefile,但我不确定哪个 shapefile 可能会绘制该功能。或者有没有更好的方法来绘制该区域的高分辨率地图?

【问题讨论】:

    标签: python python-3.x matplotlib cartopy


    【解决方案1】:

    您可以在浏览器中尝试它在警告中打印的 url,这将表明它在该位置根本不可用。当您将https 更改为http 时。您可以尝试手动下载并解压到cartopy.config['data_dir']所示的位置。

    但最好简单更新您的 cartopy 版本,因为它应该从 AWS 下载自然地球数据,例如从:
    https://naturalearth.s3.amazonaws.com/10m_physical/ne_10m_rivers_lake_centerlines.zip

    当使用 cartopy 0.19 版时,它对我来说很好用。但是,您可能希望将 facecolor 更改为“none”,并且只为河流设置 edgecolor。因为它会将线绘制成多边形/补丁。

    ax.add_feature(
        cfeature.NaturalEarthFeature(
            'physical', 'rivers_lake_centerlines', '10m', linewidth=2, 
            edgecolor='lightblue', facecolor='none',
        ),
    )
    

    缩小一点以更清楚地显示河流,对我来说它看起来像:

    【讨论】:

    • 我正在使用cartopy 0.19.0.post1,不知何故0.19.0 不可用并且我的下载失败,因为ping 也转到https://naciscdn.org/etc/...。有没有办法设置路径?
    • 我觉得那个版本不错。当我使用那个(来自conda-forge)时,它会从 AWS 而不是 naciscdn.org 下载数据。
    • 感谢您的回复。现在我不知道这个错误来自哪里以及如何更改路径。我也用conda forge 安装了pacakge。
    • @mosc9575,您应该可以手动下载它,并将其提取到您的 Cartopy 数据目录中。在cartopy.config['data_dir'] 中查找路径。如果您之前下载过东西,该文件夹应该已经包含一些形状。
    • 在 0.20 版本中对下载进行了一些改进,请参阅:scitools.org.uk/cartopy/docs/latest/whatsnew/v0.20.html
    猜你喜欢
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 2020-07-20
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多