12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- '''
- 工具类
- '''
- __author__ = 'Wang Liming'
- import CONFIGURE.PathSetting as PathSetting
- import sys
- sys.path.append(PathSetting.backend_path)
- import DBManager
- import pandas as pd
- import numpy as np
- import math
- from numba import jit
- import os
- import datetime
- import pdb
- import warnings
- warnings.filterwarnings('ignore')
- class Tools():
- def __init__(self):
- pass
- # 数据下载
- def data_download(self, write_path='', sn='', start_time='', end_time='', data_groups=['bms', 'gps']):
- '''
- 数据下载函数
- --------------输入参数------------
- write_path: 文件保存路径,不需要指定文件名
- sn: str, 电池sn号
- start_time: str, 开始时间
- end_time: str, 结束时间
- gps_switch: True:获取gps数据; False:不获取gps数据
- mode: 0:正常取数; 1:7255 取数
- --------------输出参数------------
- bms_data: 获取到的bms数据
- gps_data: 获取到的gps数据
- '''
- dbManager = DBManager.DBManager()
- print('downloading......')
- df_data = dbManager.get_data(sn=sn, start_time=start_time, end_time=end_time, data_groups=data_groups)
- for data_group in data_groups:
- df_data[data_group].to_csv(os.path.join(write_path, '{}_{}_from_{}_to_{}.csv'.format(data_group, sn, start_time[0:10], end_time[0:10])), index=False, encoding='GB2312')
- print('downloading success!')
- # 根据经纬度计算距离
- @jit
- def cal_distance(self, latitude1, longitude1,latitude2, longitude2,radius=6371):
- '''
- 输入两个地点的经纬度,输出两点间的距离
- '''
- radLat1 = (math.pi/180)*latitude1
- radLat2 = (math.pi/180)*latitude2
- radLng1 = (math.pi/180)*longitude1
- radLng2= (math.pi/180)*longitude2
- d=2*math.asin(math.sqrt(math.pow(math.sin((radLat1-radLat2)/2.0),2)+math.cos(radLat1)*math.cos(radLat2)*math.pow(math.sin((radLng1-radLng2)/2.0),2)))*radius
- return d
- # 输入GPS数据, 返回本段数据中GPS 位置相距最远的距离
- # @jit
- # def cal_max_dis(self, lat, long):
- # count = len(lat)
- # dis_mat=np.zeros([count,count])
- # for i in range(count):
- # for j in range(i,count):
- # dis_mat[i][j]=self.cal_distance(lat[i],long[i], lat[j],long[j])
-
- # max_dis = dis_mat.max()
- # return max_dis
|