我正在尝试进行图像叠加。我正在使用卫星数据研究阿根廷上空的现象,但我真的很想通过叶片使用交互式地图。到目前为止,创建图像时,我得到了输出。但是,当我尝试将卫星图像叠加到底图上时,出现一条错误消息:
PngImageFile类型的对象不可JSON序列化
我不知道如何解决它。
from PIL import Image
fig.savefig('GS.png', transparent=True)
img = Image.open("GS.png")
import folium
from folium import plugins
m = folium.Map(location=[-31.416016, -64.188929], tiles = 'Stamen Terrain')
folium.raster_layers.ImageOverlay(img,
[[ya.min(), xa.min()], [ya.max(), xa.max()]],
opacity=0.5).add_to(mapa)
mapa
答案 0 :(得分:0)
根据folium.raster_layers.ImageOverlay
的文档,image
参数必须是“ 字符串,文件或类似数组的对象”:
图像(字符串,文件或类似数组的对象)–您要绘制的数据 在地图上。 *如果是字符串,它将直接写在输出中 文件。 *如果是文件,其内容将被转换为嵌入到 输出文件。 *如果类似数组,它将被转换为PNG base64 字符串并嵌入到输出中。
在您的代码中,您传递了一个PIL Image
。
img = Image.open("GS.png")
,并且Image
不可JSON序列化。
尝试将路径传递到图像文件:
import os
img = os.path.abspath("GS.png")
folium.raster_layers.ImageOverlay(
img,
[[ya.min(), xa.min()], [ya.max(), xa.max()]],
opacity=0.5).add_to(mapa)
或者,如果您确实需要PIL Image
,并且由于您已经有了numpy(因为它是对folium的依赖),您还可以在将Image
转换为numpy数组之前,将其传递给{ {1}}:
ImageOverlay