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

使用folium的TimestampedGeoJson加载MultiPolygon提示Time Not Available求助

问题原因

Time Not Available报错是因为TimestampedGeoJson插件无法识别你要素中time属性的格式,核心原因有两个:

  • 你的outputfile.json中date字段不符合插件要求的ISO 8601标准时间格式:插件仅支持字符串类型的标准时间,比如2020、2020-01-01,如果你的date是整数类型、或者是2020年、01/2020这类非标准格式,都会触发解析失败
  • 部分要素的date字段为空、或缺失,也会导致时间读取失败
解决方案

第一步:先校验你的时间字段格式

先运行以下代码确认date字段的类型和值:

with open('outputfile.json') as f:
    poly = json.load(f)
for idx, pol in enumerate(poly):
    print(f"第{idx}条数据date值:{pol['date']},类型:{type(pol['date'])}")

第二步:针对性调整格式

根据校验结果调整time属性的赋值逻辑,同时过滤无效数据,修改后的完整代码如下:

import folium
from folium.plugins import TimestampedGeoJson
import json

with open('outputfile.json') as f:
    poly = json.load(f)

features = []
for pol in poly:
    # 过滤date为空的无效要素
    if not pol.get('date'):
        continue
    # 把date转成标准字符串格式
    # 如果是整数年份,直接转字符串即可
    time_val = str(pol['date'])
    # 如果需要更规范的ISO格式,可以补全为年月日格式,比如2020转成2020-01-01
    # time_val = f"{pol['date']}-01-01"
    features.append({
        'type': 'Feature',
        'geometry': {
            'type': 'MultiPolygon',
            'coordinates': pol['coordinates'],
        },
        'properties': {
            'ABBREVNAME': pol['ABBREVNAME'],
            'time': time_val,
        }
    })

mapa = folium.Map(
    location = [56.130,-106.35],
    tiles='openstreetmap',
    zoom_start = 3
)

TimestampedGeoJson(
    {'type': 'FeatureCollection', 'features': features},
    period='P1Y', # 按年切换时间,和你的数据时间单位匹配即可
    add_last_point=False # 面要素无需保留最后点位,关闭即可
).add_to(mapa)

# 导出为本地html文件打开测试,比直接在notebook中渲染更稳定
mapa.save('canada_time_map.html')

如果调整后还是报错,可以额外指定duration参数,和你的时间间隔匹配即可,比如按年展示的话设置duration='P1Y'。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 02:36:04