import pandas as pd
import numpy as np
class Distance:
def __init__(self,data):
assert ('name' in data.columns) and ('longitude' in data.columns) and ('latitude' in data.columns) and \
('商圈经度' in data.columns) and ('商圈纬度' in data.columns),\
'The data is not allowed'
self._df = data
self._df.insert(self._df.shape[1],'Distance',np.nan)
def _getdisfromXtoY(self,lng_a,lat_a,lng_b,lat_b):
pk = 180/3.14169
a1 = lat_a/pk
a2 = lng_a / pk
b1 = lat_b / pk
b2 = lng_b / pk
t1 = np.cos(a1)* np.cos(a2) * np.cos(b1) *np.cos(b2)
t2 = np.cos(a1)*np.sin(a2) *np.cos(b1) *np.sin(b2)
t3 = np.sin(a1)*np.sin(b1)
tt = np.arccos(t1 + t2 + t3)
return (6378000*tt)
def getDistance(self):
for i in self._df.index:
a = self._df.loc[i,'longitude']
b = self._df.loc[i,'latitude']
c = self._df.loc[i,'商圈经度']
d = self._df.loc[i,'商圈纬度']
self._df.loc[i,'Distance'] = self._getdisfromXtoY(a,b,c,d)
def getresult(self):
return self._df
房源对应地铁站的直线距离计算
最新推荐文章于 2023-01-08 22:26:56 发布