python计算两个坐标点之间的距离
背景:有几个门店和大厦,看看这几个门店和大厦旁边有没有快递柜
数据:门店和大厦只有地址数据,快递柜系统有地址数据和经纬度数据
类似的需求应该比较多,这里的核心点是关于两个坐标点之间距离的计算,之前没用过这个东西,刚好今天有个这样的需求,记录下。
import requests
import psycopg2
import pandas as pd
from math import radians, cos, sin, asin, sqrt #返回地址的坐标
def get_address_coordinate(address):address = address #使用高德地图的api,获取地址的经纬度,注意key用自己的key,这里的key是瞎写的parameters = {'address': address, 'key': 'b143a5c6cc0c3529544560aafda06aa15','city':'深圳市'}base = 'http://restapi.amap.com/v3/geocode/geo'response = requests.get(base, parameters)answer = response.json()#print(address + "的经纬度:", answer['geocodes'][0]['location'])if len(answer['geocodes'])>0:lon = float(answer['geocodes'][0]['location'].split(',')[0])lat = float(answer['geocodes'][0]['location'].split(',')[1])return lon,lat#返回系统所有的深圳快递柜的坐标
def get_cabinet_coordinate():conn = psycopg2.connect(database="database",user="root",password="admin", host="localhost",port="443")cursor = conn.cursor()sql = "select * from t_station where city_code = 440300"cursor.execute(sql)df = pd.DataFrame(cursor.fetchall())cursor.close()df = df.iloc[:,[11,3,4,5,6]]df.columns = ['sn','lat','lon','address','pid']return df#获取两个坐标点的距离
def get_distance(lon1, lat1, lon2, lat2):# 将十进制度数转化为弧度 lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) # haversine公式 dlon = lon2 - lon1 dlat = lat2 - lat1 a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2 c = 2 * asin(sqrt(a)) r = 6371 # 地球平均半径,单位为公里 #print(c * r * 1000)return c * r * 1000if __name__ == '__main__':df = get_cabinet_coordinate()address_df = pd.read_excel(r'C:\Users\James\Desktop\地域数据.xlsx')lst = list()for address in address_df.values:#print(address)lon1,lat1 = get_address_coordinate(address)#print(lon1,lat1)for i in df.values:lon2 = i[2]lat2 = i[1]distance = get_distance(lon1, lat1, lon2, lat2)if distance<=3000:# print(address)lst.append({'address':address[0], #原地址需要分析的地址'lon1':lon1, #经度'lat1':lat1, #维度'sn':i[0], #快递柜sn编码'lon2':i[2], #经度'lat2':i[1], #维度'cabinet_address':i[3], #快递柜地址'distance':distance #快递柜和分析地址距离})#print(dic)df = pd.DataFrame(lst)df.to_excel(r'C:\Users\James\Desktop\地域数据_距离.xlsx')print('数据保存成功')print(df.head())
python计算两个坐标点之间的距离相关推荐
- java编程-计算两个坐标点之间的距离
设计一个MyPoint类,表示一个具有x坐标和y坐标的点 1.需求分析 •两个私有成员变量x和y表示坐标值: •成员变量x和y的访问器和修改器 •无参构造方法创建点(0,0): •一个有参构造方法,根 ...
- 高德地图获取坐标距离_计算两个坐标点之间的距离(高德地图)
/** * 计算两点的距离 * * @param fromPoint * @param toPoint * @return 返回String类型带距离单位 */ public static Strin ...
- 采用成员函数和友元函数计算给定两个坐标点之间的距离
设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标点在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离 ...
- 计算两个坐标点之间的点的坐标
<!DOCTYPE html> <html><head><meta charset="utf-8" /><title>计 ...
- ITK:计算两个3D点之间的距离
ITK:计算两个3D点之间的距离 内容提要 输出结果 C++实现代码 内容提要 计算两个3D点之间的距离.可以通过更改常量Dimension轻松地将其扩展为ND. 输出结果 Dist: 1.73205 ...
- geotools 计算两个经纬度点之间的距离
geotools 计算两个经纬度点之间的距离 主要的maven依赖 代码实现 最近研究geotools,发现网上的直接搜索相关实现比较少,所以贴出示例代码,方便大家寻找. 主要的maven依赖 < ...
- python计算两经纬度坐标距离和角度以及给定第一个坐标、距离和航向角计算第二个坐标
总结三个坐标相关公式 因为需要用到三角函数,导入math库 import math 两个坐标计算距离的函数 def distance(Alongitude, Alatitude, Blongitude ...
- SQL 关于地图两个坐标点之间的距离运算
项目需求,通过手机获取到当前用户的位置坐标,并获得指定坐标与用户坐标之间的距离,有可能的话要多个坐标并进行排序 SELECT *,(2 * 6371 * ASIN(SQRT(POW(SIN((23.9 ...
- php中getdistance函数_php计算两个经纬度地点之间的距离
/** * @param $lat1 * @param $lng1 * @param $lat2 * @param $lng2 * @return int */ function getDistanc ...
最新文章
- silverlight1.0绝对是垃圾,中文乱码,没治!
- [译] APT分析报告:03.OpBlueRaven揭露APT组织Fin7/Carbanak(上)Tirion恶意软件
- 【渝粤题库】陕西师范大学152108 电子政务理论与实践 作业(高起专)
- java网络爬虫连接超时解决[实战程序]
- 推荐一款调试工具:深蓝串口调试工具 2021秋季版(2.16.1.),一直使用这个,最近更新好快。
- 教你轻松搞懂vue-codemirror的基本用法:主要实现代码编辑、验证提示、代码格式化
- 用nodejs和vue实现消息盒子
- 你需要明白的索引和约束的前缀(AK,PK,IX,CK,FK,DF,UQ)
- Golang ToLower和ToLowerSpecial源码探究
- python turtle 海龟绘图详解(官方文档中文版)
- termux内网穿透-ngrok
- 8月房价上涨城市数量增多 涨幅全线扩大
- Bert 源码(pytorch)超详细的解读
- 在线教育项目技术笔记1
- WordPress 主题模板QUX9.1.4开心版无授权限制 DUX二开增强主题
- 强大的iOS开发必备工具
- R语言爬虫豆瓣高评分电影(喝最烈的酒,熬最深的夜,吃最好的胃药,敷最贵的面膜)
- 缺陷管理 如何发现更多的缺陷
- win8中vm12安装macosx10.11
- Cause: compileSdkVersion is not specified. Please add it to build.gradle