搞定:流调溯源批量上图

#############
#暂时不需要csv  表格即可运行
#
#########
#地址.xlsx   Sheet1  中  第一列  列名就是  地址  然后把地址罗列上就好了  


import numpy as np
import folium
from folium import plugins

import webbrowser

# -*- coding:utf-8 -*-
# author:ck_233 time:2020/3/16
import time
import requests
import pandas as pd
from pandas import DataFrame

developer_key = '6M2BZ-5SOWU-ZF6VH-22KK6-OCT65-62BJU' # 这里为你申请的开发者key

# 通过地址获取经纬度
def address_to_coordinate(address):
    base = "http://apis.map.qq.com/ws/geocoder/v1/?address={}&key={}".format(address, developer_key)  # 地址解析,地址转坐标
    response = requests.get(base)
    answer = response.json()
    if(answer['status'] == 0):
       data = {
            'lng':answer['result']['location']["lng"], # 经度
            'lat':answer['result']['location']["lat"]  # 纬度
        }
    else:
       data = {
            'lng':'error',
            'lat':'error'
        }
    print(data)
    return data

# 通过经纬度获取地址
def coordinate_to_address(lat_lng): # 注意入参格式:纬度,经度
    base = "https://apis.map.qq.com/ws/geocoder/v1/?location={}&get_poi={}&key={}".format(lat_lng, 1, developer_key) # 坐标转地址
    response = requests.get(base)
    answer = response.json()
    # print(answer)
    if(answer['status'] == 0):
       data = answer['result']['address']
    else:
       data = 'error'
    print(data)
    return data

# 入参excel文件名,表名
def readExcel(filename, sheetname):
    data = pd.read_excel(filename, sheetname)
    # print(data)
    # 通过地址获取经纬度,并修改
    san_map = folium.Map(
        location=[36.648607, 117.04667],
        zoom_start=16,
        # 高德街道图
        tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',
        # tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
        attr='default')
    for index in range(0,len(data)):
        # 开发者并发有限制,根据情况来设置
        time.sleep(0.2)
        print(data.loc[index, '地址'])
        address = data.loc[index, '地址']
        lng_lat = address_to_coordinate(address)
        data.loc[index, '经度'] = lng_lat['lng']
        data.loc[index, '纬度'] = lng_lat['lat']



        # folium.PolyLine(tri, color='#3388ff').add_to(san_map)
        marker_cluster = plugins.MarkerCluster().add_to(san_map)

        folium.Marker([ lng_lat['lat'],lng_lat['lng']], color='red').add_to(marker_cluster)
        print(lng_lat['lng'])
        #folium.Marker([Lat[1], Lon[1]], color='red').add_to(marker_cluster)

    san_map.save('test.html')



    # print(data)
    # 保存修改
    DataFrame(data).to_excel(filename, sheet_name=sheetname, index=False, header=True)

if __name__ == '__main__':
     #address_to_coordinate("武汉市青山区和平大道809号")
     #coordinate_to_address("30.617353,114.360809")
    readExcel('地址.xlsx', 'Sheet1')
    webbrowser.open('test.html')












'''

def PlotLineOnMap():
    # 给出的坐标系为GCJ-02,如果需要测试google地图,需要进行坐标转换
    Lat = [36.648607, 36.658436,36.66844]
    Lon = [117.04667,117.126518,117.040105]
    #tri = np.array(list(zip(Lat, Lon)))

    san_map = folium.Map(
        location=[36.648607, 117.04667],
        zoom_start=16,
        # 高德街道图
        tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',
        # tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
        attr='default')

    #folium.PolyLine(tri, color='#3388ff').add_to(san_map)
    marker_cluster = plugins.MarkerCluster().add_to(san_map)

    folium.Marker([Lat[0], Lon[0]], color='red').add_to(marker_cluster)
    folium.Marker([Lat[1], Lon[1]], color='red').add_to(marker_cluster)

    san_map.save('test.html')


def main():
    PlotLineOnMap()


if __name__ == '__main__':
    main()
    webbrowser.open('test.html')

'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值