使用百度地图API计算两点直线距离、道路距离和行车时间
摘要
在本篇博客中,将通过调用百度地图的API
计算两点间的距离和行车时间。处理的csv
文件包含30万条数据的经纬度,通过爬虫即可获得;为了更加高效的处理数据,使用到了多进程的方式。
关键词
Python,多进程,距离计算
介绍
数据展示
ID | Latitude | Longitude |
---|---|---|
136368 | 39.71329879760742 | 116.3936920166016 |
136369 | 39.685951232910156 | 116.31591033935551 |
136370 | 39.675697326660156 | 116.3159561157227 |
136371 | 39.675697326660156 | 116.3159561157227 |
… | … | … |
工具介绍
- json包:用于读取json文件内容
- multiprocessing包:python专用多进程包
- requests包:用于网页信息爬取,是一个很强大的包
- tqdm包:进度展示
- time包:time.sleep(),设置进程休眠时间
- socket包:socket.setdefaulttimeout(), 防止因为爬取网页时间过长带来的卡顿
import json
from multiprocessing.pool import Pool
from urllib.request import urlopen
import pandas as pd
from random import choice
import numpy as np
from tqdm import tqdm
import requests
from requests import adapters
import time
import socket
根据经纬度计算两点之间的距离
def getWorkDistance(lon_a, lat_a, lon_b, lat_b):
if abs(lon_a - lon_b) < 0.000001 and abs(lat_a - lat_b) < 0.000001:
return 0
re = 6378140 # 赤道半径 (m)
rp = 6356755 # 极半径 (m)
oblateness = (re - rp) / re # 地球扁率
rad_lat_a