首页 > 编程语言 >python输入位置的坐标(即经纬度),计算两点的距离结果保留两位

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

时间:2024-11-15 16:50:26浏览次数:3  
标签:lat1 经纬度 lat2 python float 坐标 lon1 lon2 math

可以使用geopy库来计算两点之间的距离。你可以按照以下步骤安装这个库:

在命令行中运行以下命令:

pip install geopy
 

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

from geopy.distance import geodesic

# 输入两点的经纬度
lat1 = float(input("请输入第一个位置的纬度: "))
lon1 = float(input("请输入第一个位置的经度: "))

lat2 = float(input("请输入第二个位置的纬度: "))
lon2 = float(input("请输入第二个位置的经度: "))

# 使用geodesic函数计算两点之间的距离
distance = round(geodesic((lat1, lon1), (lat2, lon2)).km, 2)

# 输出结果
print("两点之间的距离为:", distance, "公里")
 

这个代码会先要求输入两个点的纬度和经度,然后使用geodesic函数计算两点之间的距离,并保留两位小数。最后输出结果。

在 Python 中,你可以使用 math 模块中的 radians 函数将经纬度从度数转换为弧度,然后使用 Haversine 公式来计算两点之间的地理距离。Haversine 公式考虑了地球的曲率,因此非常适合用于计算经纬度之间的距离。

以下是一个示例代码,它接受两个点的经纬度作为输入,并计算它们之间的距离,结果保留两位小数:


python复制代码

import math
def haversine(lon1, lat1, lon2, lat2):
# 将经纬度从度数转换为弧度
lon1, lat1, lon2, lat2 = map(math.radians, [lon1, lat1, lon2, lat2])
# Haversine 公式
dlon = lon2 - lon1
dlat = lat2 - lat1
a = math.sin(dlat/2)**2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon/2)**2
c = 2 * math.asin(math.sqrt(a))
# 地球半径(以千米为单位)
R = 6371
# 计算距离
distance = c * R
return round(distance, 2) # 保留两位小数
# 示例输入
lon1, lat1 = input("请输入第一个点的经度(longitude)和纬度(latitude),用空格分隔: ").split()
lon2, lat2 = input("请输入第二个点的经度(longitude)和纬度(latitude),用空格分隔: ").split()
# 将输入转换为浮点数
lon1, lat1, lon2, lat2 = float(lon1), float(lat1), float(lon2), float(lat2)
# 计算距离
distance = haversine(lon1, lat1, lon2, lat2)
print(f"两点之间的距离是: {distance} 千米")

在这个代码中,haversine 函数接受四个参数:两个点的经度和纬度。它首先将这些值从度数转换为弧度,然后使用 Haversine 公式计算两点之间的球面距离。最后,使用 round 函数将结果保留到小数点后两位。

注意,这个计算假设地球是一个完美的球体,并且忽略了地球表面的地形变化。对于大多数应用场景来说,这种假设是足够的。如果你需要更高的精度,可能需要考虑使用更复杂的地球模型或专门的地理空间库。

标签:lat1,经纬度,lat2,python,float,坐标,lon1,lon2,math
From: https://blog.csdn.net/2301_81121233/article/details/143802903

相关文章

  • Python在web中的使用
    Python在Web中的使用非常广泛。以下是一些Python在Web开发中的常见用途:1.服务器端开发:Python可以用来编写服务器端代码,处理HTTP请求和响应。常见的PythonWeb框架有Django和Flask,它们提供了构建Web应用程序的常用功能,如路由、模板引擎、数据库集成等。2.网络爬虫:Python在......
  • Python cache 内存泄漏问题
    @functools.cache函数装饰器在一些特殊情况的时候会影响变量引用计数器的计数,从而导致内存泄漏。比如:@functools.cache和@@functools.property一起使用的时候,或者更复杂的嵌套引用1fromfunctoolsimportwraps234classCacheManager:5def__init__(self):......
  • Python并发编程入门:使用concurrent.futures与asyncio
    Python并发编程入门:使用concurrent.futures与asyncio在现代应用中,并发编程已成为一种提升性能和效率的重要手段。Python提供了多种实现并发的方式,尤其是concurrent.futures和asyncio,分别适用于不同的并发场景。本文将带你深入了解这两种并发编程方式,帮助你轻松上手并......
  • 【Python】将同一目录下的多个doc文件批量转为docx文件
    同一目录有多个doc文件: importwin32com.clientaswcimportos#设置.doc文件所在的目录docs_directory=r'F:\xxx\PycharmProjects\Python学习项目\doc文件'defgetpath(docs_directory):#输出docx文件的路径和名称[路径,名称]#遍历目录中的所有.doc文件......
  • 【Python】将同一目录下的多个docx文件内容写入同一个txt文件
    同一目录下有多个docx文件 importdocximportoslist_w=[]forfilenameinos.listdir(r"F:\xxxx\PycharmProjects\Python学习项目\docx文件"):iffilename.endswith('.docx'):#如果文件以.docx结尾document=docx.Document("F:\\xxxx\......
  • python2.7安装pip
    我的python版本号具体信息如下:Python2.7(r27:82525,Jul42010,07:43:08)[MSCv.150064bit(AMD64)]onwin32Type"help","copyright","credits"or"license"formoreinformation.python2.7没有自带pip工具,需要安装一个setuptools包,我使用的py......
  • Python文件操作
    七、文件操作7.1文件打开和关闭打开文件open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)file:文件路径mode:文件打开模式文本模式'r':只读模式(默认),文件必须存在。'w':写入模式,若文件存在则清空内容,若不存......
  • 基于yolov10的柿子成熟度检测系统,支持图像、视频和摄像实时检测【pytorch框架、python
     更多目标检测和图像分类识别项目可看我主页其他文章功能演示:yolov10,柿子成熟度检测系统,支持图像、视频和摄像实时检测【pytorch框架、python】_哔哩哔哩_bilibili(一)简介基于yolov10的柿子成熟度检测系统是在pytorch框架下实现的,这是一个完整的项目,包括代码,数据集,训练好的......
  • python的decimal默认精度为28
    python的decimal的精度可以修改的计算pi使用莱布尼茨级数计算圆周率fromdecimalimportDecimal,getcontext#设置全局精度为100位getcontext().prec=100#使用莱布尼茨级数计算圆周率pi=Decimal(0)forkinrange(1000000):pi+=(Decimal(-1)**k)/(......
  • 微信小程序:如何使用经纬度打开手机自带导航?
    在微信小程序开发中,根据用户的位置信息进行导航是一个常见的功能。本文将介绍如何在微信小程序中,仅知道经纬度的情况下,打开手机自带的导航。使用 wx.openLocation 方法微信小程序提供了一个非常方便的方法 wx.openLocation,可以直接在微信内置地图中显示位置,并提供导航功能......