通过百度地图使用folium将地址转换为经纬度并生成热力图

(1)通过百度地图开放平台将地址转换为经纬度:

https://api.map.baidu.com/geocoding/v3/?address={江苏省连云港市江苏海洋大学苍梧校区}&output=json&ak=

在这里插入图片描述

import requests
import xlwt
import pandas as pd
import numpy as np
from tqdm import tqdm

def transform(address, ak):
    url = 'http://api.map.baidu.com/geocoding/v3/?address=%s&output=json&ak=%s'%(address, ak)
    response = requests.get(url)
    if response.status_code == 200:
        response_json = response.json()
        if response_json['status'] == 0:
            data = {'address': address, 'lng': response_json['result']['location']['lng'], 'lat': response_json['result']['location']['lat']}
        else:
            data = None
        return data
    else:
        print('%s 地址转换经纬度失败'%address)
print(transform('江苏海洋大学', '你的ak'))
# {'address': '江苏海洋大学', 'lng': 119.19679868081401, 'lat': 34.593404864659824}

(2)读取CSV文件

在这里插入图片描述

book = pd.read_csv('data/急救中心综合业务信息查询.csv')
addresses = book['发病地址'].values.tolist()
districts = book['呼叫区域'].values.tolist()

(3)批量转换并保存至CSV

def batch_transform_and_save(prefix, districts, addresses, ak, save_path):
    book = xlwt.Workbook(encoding='utf-8', style_compression=0)
    sheet = book.add_sheet("Sheet1", cell_overwrite_ok=True)
    sheet.write(0, 0, '地址')
    sheet.write(0, 1, '经度')
    sheet.write(0, 2, '纬度')
    
    length = len(addresses)
    for i in tqdm(range(0, length)):
        address = str(prefix)
        if districts[i] == '市辖区':
            address = address + str(addresses[i])
        else:
            address = address + str(addresses[i]) + str(districts[i])
        # print(address)
        transformed_address = transform(address, ak)
        if transformed_address == None:
            continue
        sheet.write(i+1, 0, transformed_address['address'])
        sheet.write(i+1, 1, transformed_address['lng'])
        sheet.write(i+1, 2, transformed_address['lat'])
        
    book.save(save_path)


batch_transform_and_save('江苏省连云港市', addresses, districts, ak, 'data/发病地址数据集.csv')

在这里插入图片描述

在这里插入图片描述

(4)folium生成热力图

import folium
from folium.plugins import HeatMap


location_book = pd.read_csv('data/发病地址数据集.csv')
lng = location_book['经度'].values.tolist()
lat = location_book['纬度'].values.tolist()

data = []
for i in range(0, len(lng)):
    temp = []
    temp.append(lat[i])
    temp.append(lng[i])
    temp.append(0.1)
    data.append(temp)
mp = folium.Map(location=[119.188671, 34.612552], zoom_start=14)
HeatMap(data[0:400]).add_to(mp)
mp.save('./Heatmap.html')

在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枯木何日可逢春

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值