You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GIS负维度不允许问题:单城市Hexbin Mapbox正常其他异常

解决ff.create_hexbin_mapbox报错"negative dimensions are not allowed in GIS"的方案

问题根源

这个报错通常由两个核心原因导致:

  • 筛选后的城市数据框无有效数据(行数为0),无法生成六边形网格
  • 目标城市的经纬度范围过小,搭配默认的六边形网格参数(nbinsx/nbinsy)时,计算出的网格维度异常

分步解决方法

  1. 验证筛选后的数据是否存在
    先打印目标城市数据框的行数,确认是否有数据:

    print(astana.shape)  # 输出格式为(行数, 列数),如果行数为0说明无匹配数据
    
    • 如果行数为0:放宽该城市的经纬度筛选范围,比如调整阿斯塔纳的条件:
      astana = df.loc[(df['latitude']>=43.0 )&(df['latitude'] <= 50.0  )&(df['longitude']>=71.0 )&(df['longitude']<=72.0 )]
      
    • 如果行数大于0:进入下一步调整可视化参数
  2. 调整六边形网格参数
    针对小范围城市区域,手动缩小nbinsx/nbinsy的值,并调整radius(网格半径,单位米)来适配区域大小:

    import plotly.figure_factory as ff
    
    fig = ff.create_hexbin_mapbox(
        data_frame=astana,
        lat='latitude',
        lon='longitude',
        nbinsx=15,  # 降低网格数量,避免维度异常
        nbinsy=15,
        radius=800,  # 根据城市范围调整半径,确保网格合理分布
        mapbox_style='carto-positron',
        color_continuous_scale='Viridis'
    )
    fig.show()
    
  3. 额外检查项

    • 确认数据中latitude和longitude列是数值类型,而非字符串,否则筛选逻辑会失效
    • 检查是否存在异常经纬度值(比如超出合理范围的数值),可通过df[['latitude', 'longitude']].describe()排查

内容的提问来源于stack exchange,提问作者Sultanbek Jakhanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:24:45