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

Databricks中Jupyter Notebook调用Mapbox无法渲染GeoJSON点位

问题

在Databricks的Jupyter Notebook中运行Mapbox官方示例代码渲染地图,仅能显示基础地图框架,无法加载点位数据。代码如下:

import mapboxgl
from mapboxgl.viz import *
from mapboxgl.utils import df_to_geojson
import matplotlib.pyplot as plt
from IPython.display import display, HTML
display(HTML("<script src='https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.js'></script>"))

# 加载示例CSV数据
data_url = 'https://raw.githubusercontent.com/mapbox/mapboxgl-jupyter/master/examples/data/points.csv'
df = pd.read_csv(data_url)

# Mapbox公开访问令牌(以pk开头)
token = mapbox_token

# 将DataFrame导出为GeoJSON文件
df_to_geojson(df, filename='points.geojson',
              properties=['Avg Medicare Payments', 'Avg Covered Charges', 'date'],
              lat='lat', lon='lon', precision=3)

# 生成颜色分段和色阶
color_breaks = [0,10,100,1000,10000]
color_stops = create_color_stops(color_breaks, colors='YlGnBu')

# 创建地图可视化实例
viz = CircleViz('points.geojson',
                access_token=token,
                height='400px',
                color_property = "Avg Medicare Payments",
                color_stops = color_stops,
                center = (-95, 40),
                zoom = 3,
                below_layer = 'waterway-label'
              )
viz.show()

渲染结果:
Mapbox无点位渲染结果

解决办法

  1. 避免文件路径问题,直接传入GeoJSON字符串
    Databricks的文件系统环境特殊,写入本地文件后可能无法被正确读取。跳过文件生成步骤,直接将DataFrame转换为GeoJSON字符串传入可视化实例:
# 替换原文件生成和CircleViz初始化代码
geojson_data = df_to_geojson(df,
              properties=['Avg Medicare Payments', 'Avg Covered Charges', 'date'],
              lat='lat', lon='lon', precision=3)
viz = CircleViz(geojson_data,
                access_token=token,
                height='400px',
                color_property = "Avg Medicare Payments",
                color_stops = color_stops,
                center = (-95, 40),
                zoom = 3,
                below_layer = 'waterway-label'
              )
  1. 加载完整的Mapbox GL依赖资源
    原代码中加载的Leaflet与Mapbox GL是不同地图库,属于冗余依赖。替换为Mapbox官方的JS和CSS资源:
display(HTML("""
<link href='https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.css' rel='stylesheet' />
<script src='https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.js'></script>
"""))
  1. 验证访问令牌有效性
    确保使用的是Mapbox公开访问令牌(以pk开头),且令牌未被设置IP或权限限制。可临时硬编码令牌测试(注意不要泄露至公共场景):
token = 'pk-your-public-token-here'
  1. 调整图层显示优先级
    below_layer = 'waterway-label'可能导致点位被其他图层遮挡,尝试移除该参数,或改为below_layer = 'background'确保点位图层处于可见层级。

  2. 核对数据字段匹配
    确认GeoJSON中的属性名与color_property完全一致,可通过打印GeoJSON字符串检查结构:

print(geojson_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:50:17