判断经纬度是否落在区域内

1、以0列为中心点,计算出1个2公里乘2公里的正方形
2、判断0列中的哪些经纬度落在这个区域内
3、结果另存为新表
已知问题:append特别慢,期待指导
代码如下:
from math import radians, cos, sin, asin, sqrt,acos
import math
import pandas as pd
import numpy as np
df1 = pd.read_excel('D:/Merge/test.xlsx')
df1.insert(8,'minlat','')
df1.insert(9,'maxlat','')
df1.insert(10,'minlng','')
df1.insert(11,'maxlng','')
# df1['lat'] = df1['lat'].apply(pd.to_numeric,errors ='coerce')
# df1['long'] = df1['long'].apply(pd.to_numeric,errors ='coerce')
df1['minlat'] = df1['lat'] - 1/6371.137*180/math.pi
df1['maxlat'] = df1['lat'] + 1/6371.137*180/math.pi
# df1['minlng'] = df1['long'] - 2*list(map(asin,sin(1/(2*6371.137))/list(map(cos, df1['lat']*math.pi/180))))/180/math.pi
# df1['maxlng'] = df1['long'] + 2*list(map(asin,sin(1/(2*6371.137))/list(map(cos, df1['lat']*math.pi/180))))/180/math.pi
df1['maxlng']=sin(1/(2*6371.137))
df1['maxlng']=df1['maxlng']/list(map(cos, df1['lat']*math.pi/180))
df1['maxlng']=list(map(asin,df1['maxlng']))
df1['maxlng']=df1['long']+df1['maxlng']*2*180/math.pi
df1['minlng']=sin(1/(2*6371.137))
df1['minlng']=df1['minlng']/list(map(cos, df1['lat']*math.pi/180))
df1['minlng']=list(map(asin,df1['minlng']))
df1['minlng']=df1['long']-df1['minlng']*2*180/math.pi
b= pd.DataFrame()
for i in range(len(df1.index)):
  #a=df1.loc[(df1['long']> df1.iat[i,10]) & (df1['long']< df1.iat[i,11]) & (df1['lat']> df1.iat[i,8]) & (df1['lat']< df1.iat[i,9])]
  a = {}
  a = df1.loc[df1['long']>df1.iat[i,10]]
  a = a.loc[a['long']<df1.iat[i,11]]
  a = a.loc[a['lat']>df1.iat[i,8]]
  a = a.loc[a['lat']<df1.iat[i,9]]
  a.loc[a['基站名称'].index.tolist(), '基站名称'] = df1.iat[i, 0]
  b= b.append(a)
  #b=b.append(pd.DataFrame(a, index=[0]), ignore_index=True)
a.drop(['方位角','long','lat','区县','厂家','minlat','maxlat','minlng','maxlng','状态'], axis=1,inplace=True)
a.rename(columns={'基站名称':'源小区','小区名称':'目标小区'},inplace=True)
a.insert(2,'邻区对','')
a['邻区对']= a['源小区']+'_'+a['目标小区']
a.to_csv('D:/Merge/范围.csv', encoding='utf-8',index=False)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

XianJheng

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

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

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

打赏作者

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

抵扣说明:

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

余额充值