使用百度地图API计算两点直线距离、道路距离和行车时间

本博客演示如何利用Python调用百度地图API计算30万条经纬度数据间的直线和道路距离及行车时间,通过多进程提高效率。遇到的问题包括进度条卡住,解决方法是设置网页响应时间限制。
摘要由CSDN通过智能技术生成

摘要

在本篇博客中,将通过调用百度地图的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 
  • 4
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值