ministep

计算两点间经纬度距离.py

# -*- coding: utf-8 -*-
"""
Created on Sat Oct 20 14:51:00 2018
计算两点间经纬度距离
@author: kemi
"""
#方法一
#from geographiclib.geodesic import Geodesic
#Geodesic.WGS84.Inverse(31.410527, 121.355836, 31.398137,121.364993)
#方法二:

import pandas as pd
from math import radians, cos, sin, asin, sqrt
def haversine(lon1, lat1, lon2, lat2): # 经度1,纬度1,经度2,纬度2 (十进制度数)
    """
    Calculate the great circle distance between two points 
    on the earth (specified in decimal degrees)
    """
    # 将十进制度数转化为弧度
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
 
    # haversine公式
    dlon = lon2 - lon1 
    dlat = lat2 - lat1 
    a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
    c = 2 * asin(sqrt(a)) 
    r = 6371 # 地球平均半径,单位为公里
    return c * r * 1000

def read_excel(path ,sheet_name):
    xlsx = pd.ExcelFile(path)
    sheet = xlsx.parse(sheet_name)
    return(sheet)

path =  r\'C:\Users\HP\Desktop\new-ok食行生鲜站点信息-20181017.xlsx\'
sheet_name = \'new上海\'
df= read_excel(path,sheet_name)
df.head()
df.columns=df.columns.str.strip()
df[\'distance\'] = df.apply(lambda x:haversine(x[\'经度\'],x[\'纬度\'],x[\'lng\'],x[\'lat\']), axis=1)

df.to_excel(path,\'new上海距离\',index=False)

分类:

技术点:

相关文章:

  • 2021-11-27
  • 2021-11-19
  • 2021-12-23
  • 2021-11-27
  • 2022-01-07
猜你喜欢
  • 2021-12-20
  • 2021-11-27
  • 2021-11-27
  • 2021-10-17
  • 2021-10-17
相关资源
相似解决方案