使用Folium制作相册地图

folium是JavaScript上著名的交互式地图库leaflet.js为Python提供的接口,通过它,我们可以在Python端调用leaflet的相关功能。

leaflet通过内建的OpenStreetMap或自行获取的osm资源和地图原件来进行地理信息内容的可视化,以及制作优美的可交互地图。其语法格式是通过不断添加图层元素来定义一个Map对象,最后以几种方式将Map对象展现出来。

在定义了所有图层内容之后,folium会生成一个html文件,我们可以在浏览器中打开它,也可以基于jupyter notebook嵌入对应的交互地图。

Folium官网

这里展示一个只有一张图的小示例~
包括图片在内的所有实现内容,包括实现相册地图,都在github上可以看:
https://github.com/MewemeW/folium-album-map
所有代码实现由Chensy Cao大神完成~

准备

# # 科学计算
# !pip install pandas
# # 地理信息可视化
# !pip install folium
# !pip install branca
# # 图像处理
# !pip install pillow
# !pip install opencv-python
# # 交互式环境
# !pip install IPython
import ast
import base64
import osimport branca
import cv2
import folium
import pandas as pd
import requests
from folium.plugins import MarkerCluster
from IPython.display import IFrame
from PIL import Image
from PIL.ExifTags import TAGS

图像定位

# 提取图片信息
img=Image.open('./123/food.jpg')
exifInfo = img._getexif()
# 获取经纬度
for tag, gpsValue in list(exifInfo.items()):decoded = TAGS.get(tag)if decoded == 'GPSInfo':gpsInfo = gpsValue
Npos = sum([(item[0]/item[1])*(1.0/(60**i)) for i, item in enumerate(gpsInfo[2])])
Epos = sum([(item[0]/item[1])*(1.0/(60**i)) for i, item in enumerate(gpsInfo[4])])
location = [Npos, Epos]

图片处理

imagePathName = './mini123/food.jpg'
encoded = base64.b64encode(open(imagePathName, 'rb').read())
height, width = cv2.imread(imagePathName).shape[:2]

建立地图

tile = 'http://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=7'
map = folium.Map(location=[30.24, 120.16],zoom_start=6,tiles=tile[2],attr='高德地图')
# 标记
icon_path = './icon/足迹.png'
icon = folium.features.CustomIcon(icon_image=icon_path, icon_size=(30, 30))
# 图像转为html
HTML = """<center><img src='data:image/jpeg;base64,{}' style='width: {}px'></center>"""
# 定义图像的尺寸
WIDTH = 650html = HTML.format(encoded.decode('UTF-8'), str(WIDTH))
iframe = branca.element.IFrame(html=html, width=WIDTH+10, height=height-20)
# 插件
popup = folium.Popup(iframe, max_width=650)
marker = folium.Marker(location=location, icon=icon,popup=popup).add_to(map)
# 展示
mapName = '123.html'
map.save(mapName)
IFrame(src=mapName, width=980, height=600)

具体实现的效果如下:

如果是相册(多图)地图呢~

分享完毕~

使用Folium制作相册地图相关推荐

  1. 【python绘制地图】使用folium制作地图,可解决多数问题

    Python使用folium制作地图并生成png图片 第一章 folium的方法和类的介绍(思维导图) 第二章 使用folium制作地图 第三章 folium实用功能进阶 第三章 使用Html2Ima ...

  2. python 实现对地图的点击_python使用folium库绘制地图点击框

    python使用folium 库生成地图网页的具体代码,供大家参考,具体内容如下 folium 官网 import folium import pandas as pd def mark_map(da ...

  3. 导数,微积分,牛顿运动学制作创意地图

    导数,微积分,牛顿运动学制作创意地图 转载于:https://www.cnblogs.com/liuys635/p/11180988.html

  4. 中高德地图只显示某一城市_干货 | 如何快速制作数据地图?让你的可视化逼格再高一级!...

    在数据可视化中,地图可视化是高频应用的一种.我们在一些新闻报道和商业杂志上,会经常看到运用地图来分析展示商业现象,这样的利用地图来反映和分析数据的形式叫数据地图. 数据地图可以最直观的表达出数据之间的 ...

  5. python作中国地图背景气泡图_exce表格中怎么制作中国地图背景数据气泡图

    exce表格中怎么制作中国地图背景数据气泡图 exce表格中怎么制作中国地图背景数据气泡图?excel表格中想要在中国地图上显示气泡来看看地区分布情况,该怎么设置中国地图气泡图表呢?下面我们就来看看详 ...

  6. 如何利用自己的数据制作社交地图?只显示可视区域内的标注

    地址:http://www.cnblogs.com/milkmap/archive/2012/02/02/2335989.html [百度地图API]如何利用自己的数据制作社交地图?只显示可视区域内的 ...

  7. 【百度地图API】如何利用自己的数据制作社交地图?只显示可视区域内的标注...

    原文:[百度地图API]如何利用自己的数据制作社交地图?只显示可视区域内的标注 摘要:如果你自己的数据已经超过1万个,如何进行合理的显示?除了聚合marker外,还有一个办法.那就是,只显示可视区域内 ...

  8. 【百度地图API】如何利用自己的数据制作社交地图?只显示可视区域内的标注

    [百度地图API]如何利用自己的数据制作社交地图?只显示可视区域内的标注 摘要:如果你自己的数据已经超过1万个,如何进行合理的显示?除了聚合marker外,还有一个办法.那就是,只显示可视区域内的标注 ...

  9. 如何在SuperMap iDesktop制作卫星地图

    1.要制作卫星地图,首先要把地图图片导进到数据源中 2.然后点击配准,选择新建配准,参考图层的数据集选择比较容易找到该图片位置的. 3. 在参考图层找到地图位置,把道路相关的数据集添加到参考图层.添加 ...

最新文章

  1. GeoQuiz项目的开发与总结2
  2. linux下c语言写文件,Linux下C语言之文件操作
  3. NSIndexPath类
  4. eclipse debug 重新指定源码
  5. mkv210_image.c详解
  6. 万能五笔输入法@相反
  7. Qt:QtFileDialog打开文件选择对话框选择文件
  8. JSP隐式对象——out对象、pageContext对象、exception对象
  9. 云免停机卡免流服务器监控
  10. c++语言计算圆周率,计算圆周率的C++程序(30000位)
  11. 绿色出行之路 中国越走越宽
  12. 机器学习——概率图模型
  13. 如何利用excel计算百分位
  14. html 增加选项,添加标签——给定标签选项
  15. 输入平方尺转换为平方米 计算机,亩怎么转换平方米
  16. 哥德巴赫猜想验证-循环
  17. android 开源 高斯模糊_Android高斯模糊技术,实现毛玻璃效果(转)
  18. svn ignore忽略文件
  19. python忽略警告
  20. 爱立信中国总裁杨迈猝死 爱立信中国惊魂48小时

热门文章

  1. 光学仿真2020-12-07
  2. 突然断电或强制关机的不良后果
  3. 奥鹏C语言程序设计考试,C语言程序设计_题库_201903_A 更新20春北理工复习题
  4. 割点和桥的模板(割点和割边)
  5. html垂直位移,垂直位移监测方法.ppt
  6. 爱了!华为工程师总结的PDF版Linux笔记,限时开放下载
  7. Java 的日历类Calendar
  8. CSS中的宽高自适应以及最小最大宽/高
  9. 使用Generator(小黑鸟)反向生成Java项目(IDEA + Maven)
  10. ai前世识别_百度ai人脸扫描前世身份安装,百度ai人脸扫描前世身份安装app软件预约 v1.0-开心路...