使用Datashader绘制面状地图时遇AttributeError:numpy无warnings属性
Datashader多边形绘图时
numpy.warnings属性错误问题 问题场景
尝试复现Datashader多边形绘图教程,使用自定义方形网格多边形数据,步骤如下:
1. 生成自定义多边形GeoDataFrame
from shapely import wkt import pandas as pd import geopandas as gpd data_list = [ [0,51, wkt.loads("POLYGON ((-74816.7238 5017078.8988, -74716.7238 5017078.8988, -74716.7238 5016978.8988, -74816.7238 5016978.8988, -74816.7238 5017078.8988))")], [1,91, wkt.loads("POLYGON ((-74816.7238 5016978.8988, -74716.7238 5016978.8988, -74716.7238 5016878.8988, -74816.7238 5016878.8988, -74816.7238 5016978.8988))")], [2,88, wkt.loads("POLYGON ((-74816.7238 5016878.8988, -74716.7238 5016878.8988, -74716.7238 5016778.8988, -74816.7238 5016778.8988, -74816.7238 5016878.8988))")], [3,54, wkt.loads("POLYGON ((-74816.7238 5016778.8988, -74716.7238 5016778.8988, -74716.7238 5016678.8988, -74816.7238 5016678.8988, -74816.7238 5016778.8988))")], [4,51, wkt.loads("POLYGON ((-74816.7238 5016678.8988, -74716.7238 5016678.8988, -74716.7238 5016578.8988, -74816.7238 5016578.8988, -74816.7238 5016678.8988))")], ] df = pd.DataFrame(data_list, columns=["id", "data", "geometry"]) gdf = gpd.GeoDataFrame(df, geometry="geometry", crs=32633)
2. 转换为SpatialPandas GeoDataFrame
from spatialpandas import GeoDataFrame sp_gdf = GeoDataFrame(gdf)
3. 尝试绘制分级统计图
import datashader as ds canvas = ds.Canvas(plot_width=1000, plot_height=1000) agg = canvas.polygons(sp_gdf, 'geometry', agg=ds.mean('data'))
触发错误
执行上述绘图代码时,抛出以下错误:
AttributeError Traceback (most recent call last) Cell In[7], line 4 1 import datashader as ds 3 canvas = ds.Canvas(plot_width=1000, plot_height=1000) ----> 4 agg = canvas.polygons(sp_gdf, 'geometry', agg=ds.mean('data')) 6 agg File ~/.cache/pypoetry/virtualenvs/drakonotebook-larABRfp-py3.10/lib/python3.10/site-packages/datashader/core.py:753, in Canvas.polygons(self, source, geometry, agg) 751 agg = any_rdn() 752 glyph = PolygonGeom(geometry) --> 753 return bypixel(source, self, glyph, agg) File ~/.cache/pypoetry/virtualenvs/drakonotebook-larABRfp-py3.10/lib/python3.10/site-packages/datashader/core.py:1258, in bypixel(source, canvas, glyph, agg, antialias) 1255 canvas.validate() 1257 # All-NaN objects (e.g. chunks of arrays with no data) are valid in Datashader -> 1258 with np.warnings.catch_warnings(): 1259 np.warnings.filterwarnings('ignore', r'All-NaN (slice|axis) encountered') 1260 return bypixel.pipeline(source, schema, canvas, glyph, agg, antialias=antialias) File ~/.cache/pypoetry/virtualenvs/drakonotebook-larABRfp-py3.10/lib/python3.10/site-packages/numpy/__init__.py:320, in __getattr__(attr) 317 from .testing import Tester 318 return Tester --> 320 raise AttributeError("module {!r} has no attribute " 321 "{!r}".format(__name__, attr)) AttributeError: module 'numpy' has no attribute 'warnings'
环境信息
- 系统:Ubuntu 22.04
- Python版本:3.10
- 运行环境:Jupyter Notebook
- 依赖版本:
- shapely: 2.0.1
- pandas: 2.0.1
- geopandas: 0.12.2
- spatialpandas: 0.4.7
- datashader: 0.14.4
- numpy: 1.24.3
- 环境管理工具:Poetry 1.4.2
内容的提问来源于stack exchange,提问作者MaxDragonheart
相关产品推荐
相关产品推荐

