python使用folium绘制地图

利用python通过读取一个包含经纬度信息的json文件,获取到经纬度,使用folium库来创建一个基于给定坐标的交互式地图

json文件数据格式示例:

[
{
    "id": 1,
    "原始文本": "113.37878219783308 23.073583164927953",
    "经度": "113.37878219783308",
    "纬度": "23.073583164927953"
}
]

绘制地图示例代码:

# !/usr/bin/env python
# -*- coding:utf-8 -*-

"""
@file: map.py
@author: czx
@time: 2024/4/10 17:02
"""
import json
import folium

with open(r'Your JSON file path', 'r', encoding='utf-8') as file:
    data_list = json.load(file)

    # 初始化坐标列表
    coordinates = []

    # 遍历列表中的每个字典元素
    for item in data_list:
        # 确保 "纬度" 和 "经度" 都是字典中的键,并且它们的值不是 None
        if "纬度" in item and "经度" in item and item["纬度"] is not None and item["经度"] is not None:
            try:
                # 将 "纬度" 和 "经度" 的值转换为浮点数,并添加到坐标列表中
                latitude = float(item["纬度"])
                longitude = float(item["经度"])
                coordinates.append((latitude, longitude))
            except ValueError:
                # 如果转换失败,打印错误信息并跳过这个元素
                print(f"无法转换为浮点数: {item['纬度']}, {item['经度']}")
                continue
        else:
            # 如果 "纬度" 或 "经度" 不是预期的值,打印错误信息并跳过这个元素
            print(f"缺失或无效的数据: {item}")

    # 如果坐标列表不为空,则继续创建地图
    if coordinates:
        tiles = 'https://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=7'
        # map = folium.Map(location=coordinates[0], zoom_start=15)
        map = folium.Map(location=coordinates[0],  # 坐标范围自己设置
                       tiles=tiles,
                       attr='高德-常规图',
                       zoom_start=15,
                       control_scale=True,
                       width='100%'
                       )

        # 添加线段
        folium.PolyLine(coordinates, color='blue', weight=2.5, opacity=1).add_to(map)

        # 为每个点添加标记
        for i, coord in enumerate(coordinates):
            folium.Marker(coord, popup=f'点 {i+1}').add_to(map)

        # 保存地图
        map.save('map.html')
    else:
        print("没有有效的坐标数据。")

如果还没有安装folium库的话,可以通过以下命令安装:

pip install folium -i https://pypi.tuna.tsinghua.edu.cn/simple

效果:

在这里插入图片描述

由于我的json文件经纬度是百度坐标系,而上面绘制地图代码程序使用的是高德坐标系,所以会有偏差,可以通过坐标系转换得到正确的位置,可以参考python转换坐标系

  • 12
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值