python输入位置的坐标(即经纬度),计算两点的距离结果保留两位

2023-12-19

1、可以使用haversine公式

from math import radians, sin, cos, sqrt, atan2

def distance(lat1, lon1, lat2, lon2):
    # 将经纬度转换为弧度
    lon1 = radians(lon1)
    lon2 = radians(lon2)
    lat1 = radians(lat1)
    lat2 = radians(lat2)

    # 差值的绝对值
    dlon = lon2 - lon1
    dlat = lat2 - lat1

    # Haversine公式
    a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
    c = 2 * atan2(sqrt(a), sqrt(1-a))

    # 地球半径(单位:千米)
    R = 6371

    # 计算距离
    distance = R * c

    return round(distance, 2)

使用这个函数,你可以传入两个位置的经纬度来计算它们之间的距离,结果保留两位小数。下面是一个示例:

lat1 = 37.7749
lon1 = -122.4194
lat2 = 34.0522
lon2 = -118.2437

print(distance(lat1, lon1, lat2, lon2))

输出结果为 559.00 ,单位为千米。

2、可以使用 geopy 库来计算两点之间的距离。

首先,确保你已经安装了 geopy 库,可以使用以下命令进行安装:

pip install geopy

然后,可以使用以下代码来计算两点之间的距离并保留两位小数:

from geopy.distance import geodesic

def calculate_distance(lat1, lon1, lat2, lon2):
    coordinates_1 = (lat1, lon1)
    coordinates_2 = (lat2, lon2)
    distance = geodesic(coordinates_1, coordinates_2).kilometers
    return round(distance, 2)

# 示例使用
lat1 = 39.9075
lon1 = 116.3972
lat2 = 31.2304
lon2 = 121.4737

distance = calculate_distance(lat1, lon1, lat2, lon2)
print(f"The distance between the two points is {distance} km.")

在上面的示例中,我们定义了一个 calculate_distance() 函数,该函数接受四个参数: lat1 lon1 表示第一个点的纬度和经度, lat2 lon2 表示第二个点的纬度和经度。函数内部通过 geodesic() 函数计算两点之间的距离,并使用 .kilometers 将距离转换为公里。最后,我们使用 round() 函数将距离保留两位小数,然后打印出结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python输入位置的坐标(即经纬度),计算两点的距离结果保留两位 的相关文章

  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • 将字符串转换为带有毫秒和时区的日期时间 - Python

    我有以下 python 片段 from datetime import datetime timestamp 05 Jan 2015 17 47 59 000 0800 datetime object datetime strptime t
  • 如何收集列表、字典等中重复计算的结果(或制作修改每个元素的列表的副本)?

    There are a great many existing Q A on Stack Overflow on this general theme but they are all either poor quality typical
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • 字节跳动的OpenAI帐号被封

    关注卢松松 会经常给你分享一些我的经验和观点 字节跳动的账号被Open AI封禁 因其使用GPT训练自家AI大模型 对 你没看错 连字节跳动也有OpenAI帐号 也在用ChatGPT的接口服务 前几天字节跳动的OpenAI帐号被封 外界猜测
  • 清空回收站是彻底删除吗?答案揭晓!

    我经常会有定期清空回收站的习惯 但是最近在清空回收站时 我突然意识到有部分重要文件一同被删除了 那么 清空回收站后文件还能恢复吗 应该怎么操作呢 在数字世界中 我们常常需要处理大量的文件和数据 有时候 我们会选择将不需要的文件或数据放入回收
  • BENTLY 125840-02 低压交流电源输入模块

    BENTLY 125840 02 低压交流电源输入模块 BENTLY 125840 02 低压交流电源输入模块 产品详情 BENTLY 125840 02 低压交流电源输入模块可能是用于提供电源输入并监测其状态的设备 这样的模块通常在工业领
  • 【开题报告】基于SpringBoot+Vue.js的社区管理系统的设计与实现

    1 研究背景 社区管理系统是近年来随着社区发展和居民需求增加而兴起的一种信息化管理工具 传统的社区管理方式存在信息传递不畅 居民参与度低 管理效率低下等问题 因此需要引入现代化的信息技术手段来改善社区管理工作 Spring Boot是一个轻
  • HONEYWELL 05701-A-0301 单通道控制卡

    HONEYWELL 05701 A 0301 单通道控制卡 HONEYWELL 05701 A 0301 单通道控制卡产品详情 HONEYWELL 05701 A 0301 控制卡通常用于监测和控制工业系统中的各种参数 例如温度 压力 流量
  • RTK、PPP与RTK-PPP?一文带您认识高精定位及如何进行高精定位GNSS测试!(一)

    来源 德思特测试测量 德思特干货丨RTK PPP与RTK PPP 一文带您认识高精定位及如何进行高精定位GNSS测试 一 原文链接 https mp weixin qq com s 6Jb3DuJEhRGqFPrH3CX8xQ 欢迎关注虹科
  • 【老生谈算法】matlab实现基于粒子群算法的多目标搜索算法——多目标搜索算法

    Matlab实现基于粒子群算法的多目标搜索算法 1 文档下载 本算法已经整理成文档如下 有需要的朋友可以点击进行下载 说明 文档 点击下载 本算法文档 老生谈算法 matlab实现基于粒子群算法的多目标搜索算法 doc 更多matlab算法
  • 电脑屏幕怎么调大小?分享4个实用操作!

    我最近在使用电脑时总感觉电脑屏幕看起来不太对劲 好像字体被刻意放大了 看起来很不舒服 想问问有什么方法可以解决这个问题吗 电脑屏幕的正常显示是我们使用电脑的重要前提之一 如果电脑屏幕设置或显示不正确 会让用户有不好的视觉体验 电脑屏幕怎么调
  • HONEYWELL 05704-A-0145 四通道控制卡

    HONEYWELL 05704 A 0145 四通道控制卡 HONEYWELL 05704 A 0145 四通道控制卡 产品详情 HONEYWELL 05704 A 0145 控制卡通常用于监测和控制系统中的信号或参数 四通道控制卡可能意味
  • 【flink番外篇】5、flink的window(介绍、分类、函数及Tumbling、Sliding、session窗口应用)介绍及示例(1)- 窗口介绍、分类、函数

    Flink 系列文章 一 Flink 专栏 Flink 专栏 系统介绍某一知识点 并辅以具体的示例进行说明 1 Flink 部署系列 本部分介绍Flink的部署 配置相关基础内容 2 Flink基础系列 本部分介绍Flink 的基础部分 比
  • HONEYWELL 05704-A-0121 船舶控制器模块

    HONEYWELL 05704 A 0121 船舶控制器模块 HONEYWELL 05704 A 0121 船舶控制器模块产品详情 船舶控制器模块通常用于船舶系统中 以实现对船舶的监测 控制和操作 这些模块可能包括各种传感器 执行器和控制逻
  • OpenCL™规范 3.2.3设备侧队列

    3 2 3 Device side enqueue 3 2 3设备侧队列 Device side enqueue is missing before version 2 0 2 0版本之前缺少设备端队列 Algorithms may nee
  • 实现基于 Keepalived 和 Nginx 的高可用架构

    目录 前言 1 高可用性简介 2 准备服务器和软件 3 高可用的配置 主从配置 3 1 配置 etc keepalived keepalived conf文件 3 2 配置 usr local src nginx check sh脚本文件
  • FORCE CPCI-680编码器模块

    FORCE CPCI 680编码器模块 FORCE CPCI 680编码器模块产品详情 编码器模块通常用于测量和转换旋转或线性运动到电信号 以便用于位置测量或运动控制应用 关于FORCE CPCI 680编码器模块的具体运营领域将取决于该模
  • 武汉小程序开发市场分析:未来3年预计将增长200%

    作为中国颇具活力的城市之一 武汉在科技创新和数字经济领域迅速崛起 近年来 随着移动互联网用户规模的扩大 武汉小程序开发市场蓬勃发展 越来越多的企业与个人开始关注和投入这一领域 武汉小程序开发市场具有以下几个显著的优势 1 科技创新环境助力
  • 查理.芒格:超出能力圈的能力不叫能力

    如果你确有能力 你就会非常清楚你能力圈的边界在哪里 没有边界的能力根本不能称之为能力 如果你问自己是否过了能力圈的范围 那这个问题本身就是答案 查理 芒格 很多人会认为优秀的人做什么都是优秀的 很容易形成个人崇拜 甚至是盲从 所以当我们在讨
  • Android-Binder基本原理

    一 进程角度看IPC机制 在Android系统中 每个进程只能运行在自己所拥有的虚拟地址空间 例如 一个4GB的虚拟地址空间 包含3GB的用户空间和1GB的内核空间 内核空间的大小可以通过参数配置进行调整 两个进程之间的用户空间是彼此独立的
  • 使用selenium执行组合快捷键ctrl+v不生效问题

    使用selenium进行自动化测试 依次使用快捷键ctrl a ctrl c ctrl v对文本进行复制粘贴 发现前两步执行都是没有问题的 但是执行粘贴时 始终无法将文本粘贴到文本区 焦点时已经获取的 经过反复测试 网上查阅资料 发现在执行
  • 运维人员必须知道的10个系统进程

    前言 在日常运维工作中 经常会看到一些奇怪的系统进程占用资源比较高 但是又不敢随意的Kill这些进程 而这些系统级的内核进程都是会用中括号括起来的 它们会执行一些系统的辅助功能 如将缓存写入磁盘 无括号的进程都是用户们执行的进程 如java
  • python输入位置的坐标(即经纬度),计算两点的距离结果保留两位

    1 可以使用haversine公式 from math import radians sin cos sqrt atan2 def distance lat1 lon1 lat2 lon2 将经纬度转换为弧度 lon1 radians lo