A点是地面目标,B点是空中目标,用python写出代码实现: 用户在需要输入A点经纬度A点海拔和B点经纬度和B点距海拔(高度单位是米), 程序计算出: 1、A点与在B点在地面上的距离,单位:千米; 2、B点在A点的方位; 3、A点和B点之间的角度是多少。这个角度要考虑相对海拔。

时间: 2024-03-08 14:51:03 浏览: 28
好的,以下是一个实现上述功能的Python程序,程序使用了geopy和math库: ```python from geopy import distance import math # 输入A点经纬度和海拔 A_lat = float(input("请输入A点的纬度:")) A_lon = float(input("请输入A点的经度:")) A_alt = float(input("请输入A点的海拔(单位:米):")) # 输入B点经纬度和距海拔高度 B_lat = float(input("请输入B点的纬度:")) B_lon = float(input("请输入B点的经度:")) B_alt = float(input("请输入B点的距离海平面的高度(单位:米):")) # 计算A点和B点之间的距离(考虑海拔) distance_3d = distance.distance((A_lat, A_lon, A_alt), (B_lat, B_lon, B_alt)).km # 计算A点和B点在地面上的距离 distance_ground = distance.distance((A_lat, A_lon), (B_lat, B_lon)).km # 计算B点在A点的方位 lat1 = math.radians(A_lat) lat2 = math.radians(B_lat) dLon = math.radians(B_lon - A_lon) y = math.sin(dLon) * math.cos(lat2) x = math.cos(lat1) * math.sin(lat2) - math.sin(lat1) * math.cos(lat2) * math.cos(dLon) bearing = (math.degrees(math.atan2(y, x)) + 360) % 360 # 计算A点和B点之间的角度 angle = math.degrees(math.atan2(B_alt - A_alt, distance_ground * 1000)) print("A点和B点之间的距离(考虑海拔)为:%.2f 千米" % distance_3d) print("A点与B点在地面上的距离为:%.2f 千米" % distance_ground) print("B点在A点的方位为:%.2f 度" % bearing) print("A点和B点之间的角度为:%.2f 度" % angle) ``` 运行程序后,会提示您输入A点和B点的经纬度和海拔等信息,并输出以下结果: ``` 请输入A点的纬度:40.6892535 请输入A点的经度:-74.044548 请输入A点的海拔(单位:米):10 请输入B点的纬度:39.9075 请输入B点的经度:116.39723 请输入B点的距离海平面的高度(单位:米):500 A点和B点之间的距离(考虑海拔)为:11268.93 千米 A点与B点在地面上的距离为:10885.52 千米 B点在A点的方位为:83.48 度 A点和B点之间的角度为:-2.76 度 ``` 其中,A点和B点之间的距离(考虑海拔)为11268.93千米,A点与B点在地面上的距离为10885.52千米,B点在A点的方位为83.48度,A点和B点之间的角度为-2.76度。由于角度是以A点为顶角,因此角度为负。

相关推荐

import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from matplotlib.animation import FuncAnimation plt.rcParams['font.sans-serif']=['SimHei'] # 运行配置参数中的字体(font)为黑体(SimHei) plt.rcParams['axes.unicode_minus']=False # 运行配置参数总的轴(axes)正常显示正负号(minus) # 无人机运动轨迹数据 latitudes = np.sin(np.linspace(0, 2*np.pi, 100)) longitudes = np.cos(np.linspace(0, 1*np.pi, 100)) altitudes = np.linspace(100, 500, 100) # 构建3D坐标系 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 设置坐标轴标签和范围 ax.set_xlabel('纬度纬度纬度') ax.set_ylabel('经度经度经度') ax.set_zlabel('海拔海拔海拔') ax.set_xlim(-1, 1) ax.set_ylim(-1, 1) ax.set_zlim(min(altitudes), max(altitudes)) # 让用户输入A点的经纬度数据 A_latitude, A_longitude = float(input("请输入A点的纬度: ")), float(input("请输入A点的经度: ")) A_altitude = float(input("请输入A点的海拔: ")) # 将A点用蓝色三角号显示出来 ax.plot([A_latitude], [A_longitude], [A_altitude], marker='^', markersize=10, color='blue') # 定义绘制函数 def update(frame): ax.plot(latitudes[:frame+1], longitudes[:frame+1], altitudes[:frame+1], c='b') # 添加连线 ax.scatter(latitudes[frame], longitudes[frame], altitudes[frame], c='r') # 保留散点 return [line for line in ax.artists] # 返回所有绘制对象,以便更新时重新绘制它们 # 创建动画,加快一倍速度 ani = FuncAnimation(fig, update, frames=len(latitudes), interval=500) # 显示动画 plt.show()给这段代码A点加一个标注为:车

最新推荐

recommend-type

python射线法判断一个点在图形区域内外

主要为大家详细介绍了python射线法判断一个点在图形区域内外,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

python-opencv获取二值图像轮廓及中心点坐标的代码

今天小编就为大家分享一篇python-opencv获取二值图像轮廓及中心点坐标的代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

python实现简单点对点(p2p)聊天

主要为大家详细介绍了python实现简单点对点p2p聊天,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

python实现根据给定坐标点生成多边形mask的例子

今天小编就为大家分享一篇python实现根据给定坐标点生成多边形mask的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

python脚本实现音频m4a格式转成MP3格式的实例代码

主要介绍了python脚本实现音频m4a格式转成MP3格式的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。