扣丁学堂Python培训

扣丁学堂Python培训分享Python使用folium exc

2019-03-13  本文已影响0人  994d14631d16

  本篇文章扣丁学堂Python培训小编和读者们分享一篇Python技术性的文章,那就是Python使用folium excel绘制point,文章中有详细的代码列出供大家参考,对Python开发技术感兴趣的小伙伴就随小编一起来了解一下吧。

Python培训

使用folium excel 绘制point

制作内容

根据气象台资料获得的点进行绘制

对一个特殊的点做特别的标注

数据来源

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @File : map03.py

# @Author: huifer

# @Date : 2018/6/28

import pandas as pd

import math

import folium

def degree_conversion_decimal(x):

  """

  度分转换成十进制

  :param x: float

  :return: integer float

  """

  integer = int(x)

  integer = integer + (x - integer) * 1.66666667

  return integer

def distance(origin, destination):

  """

  经纬度计算两点距离

  :param origin:

  :param destination:

  :return:

  """

  lat1, lon1 = origin

  lat2, lon2 = destination

  radius = 6371 # km

  dlat = math.radians(lat2 - lat1)

  dlon = math.radians(lon2 - lon1)

  a = math.sin(dlat / 2) * math.sin(dlat / 2) + math.cos(math.radians(lat1)) \

    * math.cos(math.radians(lat2)) * math.sin(dlon / 2) * math.sin(dlon / 2)

  c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))

  d = radius * c

  return d

# 数据准备

data = pd.read_excel('SURF_CHN_MUL_HOR_STATION.xlsx')

# 修改成十进制 以及保留1一位小数

data['经度'] = data['经度'].apply(degree_conversion_decimal)

data['纬度'] = data['纬度'].apply(degree_conversion_decimal)

data['观测场拔海高度(米)'] = data['观测场拔海高度(米)'].apply(lambda x: round(x, 1))

data['气压传感器拔海高度(米)'] = data['气压传感器拔海高度(米)'].apply(lambda x: round(x, 1))

# 保存新的文件

# data.to_csv('气象站信息十进制.csv')

data["距离杭州(km)"] = data.apply(lambda r: distance((r['纬度'], r['经度']), (30.14, 120.1)), axis=1)

# print(data[data['距离杭州(km)']<100].sort_values('距离杭州(km)'))

# 选择除了杭州以外的内容

selected_st = data[data['距离杭州(km)'] < 100].sort_values('距离杭州(km)').iloc[1::]

# 展示地图

# 提取数据

hzdata = data.ix[data['站名'] == '杭州', ['站名', '纬度', '经度']]

myMap = folium.Map(location=[hzdata.iloc[0]['纬度'], hzdata.iloc[0]['经度']])

icon_hz = dict(

  prefix='fa', color='red', icon_color='darkred', icon='cny'

)

icon = folium.Icon(**icon_hz)

folium.Marker(

  location=[hzdata.iloc[0]['纬度'], hzdata.iloc[0]['经度']],

  popup="杭州",

  icon=icon

).add_to(myMap)

for i in range(len(selected_st)):

  name = selected_st.iloc[i]['站名']

  x = selected_st.iloc[i]['纬度']

  y = selected_st.iloc[i]['经度']

  test = folium.Html(

    '<b>name:{}</b></br> <b>x:{}</b></br> <b>y:{}</b></br>'.format(name, x, y),

    script=True)

  popup = folium.Popup(test, max_width=2650)

  folium.Marker(

    location=[x, y],

    popup=popup,

  ).add_to(myMap)

myMap.save("test.html")

以上就是扣丁学堂Python在线学习小编给大家分享的Python使用folium excel绘制point,希望对小伙伴们有所帮助,想要了解更多内容的小伙伴可以登录扣丁学堂官网咨询。

想要学好Python开发小编给大家推荐口碑良好的扣丁学堂,扣丁学堂有专业老师制定的Python学习路线图辅助学员学习,此外还有与时俱进的Python视频教程供大家学习,想要学好Python开发技术的小伙伴快快行动吧。

上一篇下一篇

猜你喜欢

热点阅读