背景:有几个门店和大厦,看看这几个门店和大厦旁边有没有快递柜

数据:门店和大厦只有地址数据,快递柜系统有地址数据和经纬度数据

类似的需求应该比较多,这里的核心点是关于两个坐标点之间距离的计算,之前没用过这个东西,刚好今天有个这样的需求,记录下。

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计算两个坐标点之间的距离相关推荐

  1. java编程-计算两个坐标点之间的距离

    设计一个MyPoint类,表示一个具有x坐标和y坐标的点 1.需求分析 •两个私有成员变量x和y表示坐标值: •成员变量x和y的访问器和修改器 •无参构造方法创建点(0,0): •一个有参构造方法,根 ...

  2. 高德地图获取坐标距离_计算两个坐标点之间的距离(高德地图)

    /** * 计算两点的距离 * * @param fromPoint * @param toPoint * @return 返回String类型带距离单位 */ public static Strin ...

  3. 采用成员函数和友元函数计算给定两个坐标点之间的距离

    设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标点在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离 ...

  4. 计算两个坐标点之间的点的坐标

    <!DOCTYPE html> <html><head><meta charset="utf-8" /><title>计 ...

  5. ITK:计算两个3D点之间的距离

    ITK:计算两个3D点之间的距离 内容提要 输出结果 C++实现代码 内容提要 计算两个3D点之间的距离.可以通过更改常量Dimension轻松地将其扩展为ND. 输出结果 Dist: 1.73205 ...

  6. geotools 计算两个经纬度点之间的距离

    geotools 计算两个经纬度点之间的距离 主要的maven依赖 代码实现 最近研究geotools,发现网上的直接搜索相关实现比较少,所以贴出示例代码,方便大家寻找. 主要的maven依赖 < ...

  7. python计算两经纬度坐标距离和角度以及给定第一个坐标、距离和航向角计算第二个坐标

    总结三个坐标相关公式 因为需要用到三角函数,导入math库 import math 两个坐标计算距离的函数 def distance(Alongitude, Alatitude, Blongitude ...

  8. SQL 关于地图两个坐标点之间的距离运算

    项目需求,通过手机获取到当前用户的位置坐标,并获得指定坐标与用户坐标之间的距离,有可能的话要多个坐标并进行排序 SELECT *,(2 * 6371 * ASIN(SQRT(POW(SIN((23.9 ...

  9. php中getdistance函数_php计算两个经纬度地点之间的距离

    /** * @param $lat1 * @param $lng1 * @param $lat2 * @param $lng2 * @return int */ function getDistanc ...

最新文章

  1. silverlight1.0绝对是垃圾,中文乱码,没治!
  2. [译] APT分析报告:03.OpBlueRaven揭露APT组织Fin7/Carbanak(上)Tirion恶意软件
  3. 【渝粤题库】陕西师范大学152108 电子政务理论与实践 作业(高起专)
  4. java网络爬虫连接超时解决[实战程序]
  5. 推荐一款调试工具:深蓝串口调试工具 2021秋季版(2.16.1.),一直使用这个,最近更新好快。
  6. 教你轻松搞懂vue-codemirror的基本用法:主要实现代码编辑、验证提示、代码格式化
  7. 用nodejs和vue实现消息盒子
  8. 你需要明白的索引和约束的前缀(AK,PK,IX,CK,FK,DF,UQ)
  9. Golang ToLower和ToLowerSpecial源码探究
  10. python turtle 海龟绘图详解(官方文档中文版)
  11. termux内网穿透-ngrok
  12. 8月房价上涨城市数量增多 涨幅全线扩大
  13. Bert 源码(pytorch)超详细的解读
  14. 在线教育项目技术笔记1
  15. WordPress 主题模板QUX9.1.4开心版无授权限制 DUX二开增强主题
  16. 强大的iOS开发必备工具
  17. R语言爬虫豆瓣高评分电影(喝最烈的酒,熬最深的夜,吃最好的胃药,敷最贵的面膜)
  18. 缺陷管理 如何发现更多的缺陷
  19. win8中vm12安装macosx10.11
  20. Cause: compileSdkVersion is not specified. Please add it to build.gradle

热门文章

  1. ccs用C语言进行printf时,DSP:CCS V6 TMS320F2812 使用printf函数
  2. Windows 定位某文件位置并选择文件、定位某个注册表项位置
  3. python库-networkx模块
  4. C++课程设计 房产中介管理系统(代码全)
  5. jQuery 的自定义事件
  6. 汇编语言实现二进制到十六进制的转换
  7. 小学英语与计算机技术整合,信息技术与小学英语教学整合之我见.doc
  8. 局域网文件共享几种方式
  9. [原创]下一代Web 应用程序安全性测试工具HP WebInspect简介
  10. PL/SQL 常用函数