,python,spatial,netcdf,cartopy"/>

首页 > 解决方案 > 尝试使用 Cartopy 但出现此错误: URLError:

问题描述

很长一段时间以来,我一直在使用底图进行 .nc 文件的空间映射,但我看到现在建议使用 cartopy。我进行了过渡,最初一切顺利,但过了一段时间它不再起作用了,而且这个错误一遍又一遍地发送垃圾邮件,我试图重塑代码,更改投影,但它总是这个 URLError:<urlopen 错误 [Errno -3] 名称解析暂时失败>

下面是代码,大家看看

import cartopy.feature as cfeature
import cartopy.crs as ccrs
from cartopy.mpl.gridliner import LATITUDE_FORMATTER, LONGITUDE_FORMATTER
import xarray as xr
import matplotlib.pyplot as plt
import matplotlib
import matplotlib.colors as colors
import numpy as np

ds = xr.open_mfdataset('/content/pr_SAM-22_ECMWF-ERAINT_evaluation_r1i1p1_ICTP-RegCM4-svn_v0_day_*_remap.nc')

prec = ds['pr']*86400

prec_sel = prec.sel(lon=slice(-80, -30), lat=slice(-60, 8),time='2017-12-01T12:00:00')

colors = ["#b4f0f0", "#96d2fa", "#78b9fa", "#3c95f5", "#1e6deb", "#1463d2", "#0fa00f", "#28be28", "#50f050", "#72f06e", "#b3faaa", "#fff9aa", "#ffe978", "#ffc13c", "#ffa200", "#ff6200", "#ff3300", "#ff1500", "#c00100", "#a50200", "#870000", "#653b32"]
cmap = matplotlib.colors.ListedColormap(colors)
cmap.set_over('#000000')
cmap.set_under('#aaaaaa')

fig = plt.figure(figsize=(8, 6))

ax = fig.add_subplot(111, projection=ccrs.PlateCarree())

ax.set_extent([-80, -30, 8, -60])

lon, lat = np.meshgrid(prec_as.lon, prec_as.lat)

min = np.min(prec_as)
max = np.max(prec_as)
interval = 10
#levels = np.arange(min,max,interval)

S1 = plt.contourf(lon, lat, prec_as, linewidths = 1.5, extend='both')

plt.colorbar(S1,ticks=np.arange(min,200,interval),format='%.1f')

ax.add_feature(cfeature.COASTLINE)

ax.add_feature(cfeature.BORDERS)

states = cfeature.NaturalEarthFeature(category='cultural',
                                      name='admin_1_states_provinces_shp',
                                      scale='50m',
                                      facecolor='none')
ax.add_feature(states, edgecolor='k', linestyle='--')

ax.set_title('Test', fontsize=14, y=1.02)

g1 = ax.gridlines(crs=ccrs.PlateCarree(), linestyle='--', color='gray', draw_labels=True)

g1.ylabels_right = False
g1.xlabels_top = False

g1.yformatter = LATITUDE_FORMATTER
g1.xformatter = LONGITUDE_FORMATTER

g1.xlabel_style = {'size': 14}
g1.ylabel_style = {'size': 14}

plt.savefig('Mapa_streamlines_AS.png', dpi=300, bbox_inches='tight')

这是错误:

/usr/local/lib/python3.7/dist-packages/cartopy/mpl/geoaxes.py:1586:用户警告:contourf 忽略线宽结果 = matplotlib.axes.Axes.contourf(self, *args, **kwargs ) /usr/local/lib/python3.7/dist-packages/cartopy/mpl/gridliner.py:360: UserWarning: .ylabels_right 属性已弃用。请改用 .right_labels 来切换可见性。warnings.warn('.ylabels_right 属性已弃用。请' /usr/local/lib/python3.7/dist-packages/cartopy/mpl/gridliner.py:324: UserWarning: .xlabels_top 属性已弃用。请使用.top_labels 改为切换可见性。warnings.warn('不推荐使用 .xlabels_top 属性。请 ' /usr/local/lib/python3.7/dist-packages/cartopy/io/init .py :241: DownloadWarning: Downloading: https://naciscdn.org/naturalearth/110m/physical/ne_110m_coastline.zip warnings.warn('Downloading: {}'.format(url), DownloadWarning) --------------- -------------------------------------------------- ---------- gaierror Traceback(最近一次调用最后)/usr/lib/python3.7/urllib/request.py in do_open(self, http_class, req, **http_conn_args) 1349
h.request( req.get_method(), req.selector, req.data, headers, -> 1350 encode_chunked=req.has_header('Transfer-encoding')) 1351
除了 OSError as err: # timeout error

35 帧 gaierror:[Errno -3] 名称解析暂时失败

在处理上述异常的过程中,又出现了一个异常:

URLError Traceback(最近一次调用最后)/usr/lib/python3.7/urllib/request.py in do_open(self, http_class, req, **http_conn_args) 1350 encode_chunked
=req.has_header('Transfer-encoding')) 1351
除了 OSError as err: # timeout error -> 1352 raise URLError(err) 1353 r = h.getresponse() 1354 除了:

URLError: <urlopen error [Errno -3] Temporary failure in name resolution> 回调错误 <function install_repl_displayhook..post_execute at 0x7f10349a6cb0> (for post_execute): ----------------- -------------------------------------------------- -------- gaierror Traceback(最近一次调用最后)/usr/lib/python3.7/urllib/request.py in do_open(self, http_class, req, **http_conn_args) 1349
h.request(req. get_method(), req.selector, req.data, headers, -> 1350 encode_chunked=req.has_header('Transfer-encoding')) 1351
除了 OSError as err: # timeout error

35 帧 gaierror:[Errno -3] 名称解析暂时失败

在处理上述异常的过程中,又出现了一个异常:

URLError Traceback(最近一次调用最后)/usr/lib/python3.7/urllib/request.py in do_open(self, http_class, req, **http_conn_args) 1350 encode_chunked
=req.has_header('Transfer-encoding')) 1351
除了 OSError as err: # timeout error -> 1352 raise URLError(err) 1353 r = h.getresponse() 1354 除了:

URLError: <urlopen 错误 [Errno -3] 名称解析暂时失败> ---------------------------------- ----------------------------------------- gaierror Traceback(最近一次调用最后)/ usr/lib/python3.7/urllib/request.py in do_open(self, http_class, req, **http_conn_args) 1349
h.request(req.get_method(), req.selector, req.data, headers, -> 1350 encode_chunked=req.has_header('Transfer-encoding')) 1351
除了 OSError as err: # timeout error

35 帧 gaierror:[Errno -3] 名称解析暂时失败

在处理上述异常的过程中,又出现了一个异常:

URLError Traceback(最近一次调用最后)/usr/lib/python3.7/urllib/request.py in do_open(self, http_class, req, **http_conn_args) 1350 encode_chunked
=req.has_header('Transfer-encoding')) 1351
除了 OSError as err: # timeout error -> 1352 raise URLError(err) 1353 r = h.getresponse() 1354 除了:

URLError: <urlopen 错误 [Errno -3] 名称解析暂时失败>

正如我所说,我尝试更改与 cartopy 对应的每个块,甚至将 .shp 更改为仅包含国家/地区的块,但没有任何效果。

标签: pythonspatialnetcdfcartopy

解决方案


推荐阅读