import numpy as np

def ellipsoidal_trapezoid_area(a, b, phi1_deg, phi2_deg, delta_L_deg, is_map_sheet=False):
    """
    计算椭球面上梯形面积的通用公式和图幅公式
    
    参数:
        a: 椭球长半轴(米)
        b: 椭球短半轴(米)
        phi1_deg: 起始纬度(度)
        phi2_deg: 终止纬度(度)
        delta_L_deg: 经差(度)
        is_map_sheet: 是否使用图幅公式(默认False,使用通用公式)
    
    返回:
        梯形面积(平方米)
    """
    # 转换为弧度
    phi1 = np.radians(phi1_deg)
    phi2 = np.radians(phi2_deg)
    
    # 计算第一偏心率平方 e²
    e_sq = 1 - (b**2 / a**2)
    e = np.sqrt(e_sq)
    
    # 定义被积函数的两部分
    def term1(phi):
        return (np.sin(phi) * np.cos(phi)) / (1 - e_sq * np.sin(phi)**2)
    
    def term2(phi):
        return (1 / (2 * e)) * np.log((1 + e * np.sin(phi)) / (1 - e * np.sin(phi)))
    
    # 计算积分结果
    integral = (term1(phi2) + term2(phi2)) - (term1(phi1) + term2(phi1))
    
    # 选择公式
    if is_map_sheet:
        # 图幅公式:经差需以“分”为单位,系数为 4πb²/(360*60)
        delta_L_min = delta_L_deg * 60  # 度转分
        area = (4 * np.pi * b**2 / (360 * 60)) * delta_L_min * integral
    else:
        # 通用公式:经差以弧度为单位
        delta_L_rad = np.radians(delta_L_deg)
        area = (b**2) * delta_L_rad * integral
    
    return area


# 示例:WGS84 椭球参数
a = 6378137.0       # 长半轴(米)
b = 6356752.314245  # 短半轴(米)

# 案例1:计算纬度 20°-25°、经差 1° 的梯形面积
phi1_deg = 20.0
phi2_deg = 25.0
delta_L_deg = 1.0

# 通用公式计算
area_general = ellipsoidal_trapezoid_area(a, b, phi1_deg, phi2_deg, delta_L_deg)
# 图幅公式计算(经差需为分数,此处1°=60')
area_map_sheet = ellipsoidal_trapezoid_area(a, b, phi1_deg, phi2_deg, delta_L_deg, is_map_sheet=True)

print("通用公式结果:")
print(f"面积 = {area_general:.2f} 平方米 | {area_general / 1e6:.2f} 平方公里")
print("\n图幅公式结果 (经差1°=60'):")
print(f"面积 = {area_map_sheet:.2f} 平方米 | {area_map_sheet / 1e6:.2f} 平方公里")
print(f"\n差值 = {abs(area_general - area_map_sheet):.2f} 平方米")

# 案例2:标准1:1万图幅(经差3.75',纬差2.5')
delta_L_deg_map = 3.75 / 60  # 3.75分转度
delta_phi_deg_map = 2.5 / 60  # 2.5分转度
phi_start = 30.0  # 起始纬度30°
phi_end = phi_start + delta_phi_deg_map

area_1_10000 = ellipsoidal_trapezoid_area(a, b, phi_start, phi_end, delta_L_deg_map, is_map_sheet=True)
print("\n1:1万标准图幅面积 (30°N, 经差3.75', 纬差2.5'):")
print(f"面积 = {area_1_10000:.2f} 平方米 | {area_1_10000 / 1e6:.4f} 平方公里")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85906.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85906.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/85906.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytest 入门:测试函数与测试类详解

概述 在编写自动化测试时,了解如何组织和管理测试用例是至关重要的。Pytest 提供了灵活的方式来定义测试函数和测试类,并支持多层次的设置(setup)和清理(teardown)机制,帮助你更高效地进行代码验证。本文将详细介绍 测试函数 和 测试类 的概念、定义、注意点以及实际操…

大模型的部署简单搭建

大模型的部署搭建 真的好久没有进行博客的写作了,原因,最近的自己生活有点小波动, 最近想想还是有空写一篇文章,这篇文章的描述是学习的当下热门AI 本期,介绍的也是AI相关的LLM(大语言模型) 这个好多人应该都是模糊的,包括我一开始没有学习,就感觉牛逼的不行,今天我们亲自部署实…

基于ssm英语学习交流平台微信小程序源码数据库文档

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了英语学习交流平台小程序的开发全过程。通过分析英语学习交流平台小程序管理的不足,创建了一个计算机管理英语学习交流平台小程序的方案。文章介绍了英…

华为云Flexus+DeepSeek征文|在Dify-LLM平台中开发童话故事精灵工作流AI Agent

华为云FlexusDeepSeek征文|在Dify-LLM平台中开发童话故事精灵工作流AI Agent 🌟嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 目录…

从实践出发谈如何开发一款好用的RTMP播放器

近几年,RTMP 播放器市场涌现出大量“宣传型”产品。各种“低延迟”“不卡顿”“跨平台”几乎成为标配口号,宣传文案看起来精彩纷呈,实际项目落地时却屡屡暴露问题:启动缓慢、黑屏、音画不同步,甚至连基本的稳定播放都无…

STM32F1\F4\H7 CubeMx 定时器配置

目录 1 定时器使用 1.1 CubeMX 配置 1.1.1 创建工程 1.1.2 时钟配置 1.1.3 定时器配置 1.1.4 GPIO 配置 1.1.5 工程管理 1.2 keil5 配置 1.2.1 添加代码 1.2.2 修改配置 1.2.3 下载程序 2 PWM使用 2.1 CubeMX 配置 2.1.1 PWM 配置 2.1.2 周期\频率计算方法 2.2…

2025中科院2区SCI-状态优化算法Status-based Optimization-附Matlab免费代码

近年来,现实世界的优化问题变得越来越复杂,挑战了传统确定性方法的有效性。本文介绍了基于状态的优化(SBO),这是一种受人类对地位提升的渴望启发的高效算法。通过模拟个人如何接近、学习或从高地位人物那里获得资源&am…

MySQL 启动报错 “The server quit without updating PID file“ 的全面解决方案(适用于 5.7/8.0 全版本)

摘要 在 MySQL 数据库运维中,"The server quit without updating PID file" 是常见且棘手的启动错误。本文结合 MySQL 官方文档及实战经验,系统梳理该错误的 10 大核心成因与解决方案,覆盖权限、配置、磁盘、SELinux 等多维度&…

运行时安全引擎RSE

安全之安全(security)博客目录导读 目录 一、RSE 通信层 1.1 消息结构 1.2 源代码文件 1.3 MHU 通信的 API 二、RSE 提供的运行时服务 2.1 运行时服务 API 2.2 软件与 API 层次结构 三、基于 RSE 的 Measured Boot(度量启动) 3.1 Measured Boo…

Elasticsearch、Faiss、Milvus在向量索引实现上的核心差

Faiss、Elasticsearch(ES)和Milvus在向量索引实现上的核心差异主要体现在架构定位、索引技术、扩展性及适用场景上,具体对比如下: 一、架构设计与定位‌ ‌维度‌‌Faiss‌‌Elasticsearch‌‌Milvus‌‌核心定位‌单机向量索引…

iot-dc3 项目windows本地运行保姆喂奶级教程

一.源码拉取 当前时间:2025年06月18日12点02分 后台接口服务:https://gitee.com/pnoker/iot-dc3.git 前端:https://gitee.com/pnoker/iot-dc3-web.git 请自行拉取至本地。 二.本地环境准备 其他基础环境先不讲了,如有需要请留言。 idea + VS Code。 IntelliJ IDEA 2024.2.…

内部网关协议配置实验

一:静态路由 简述:在华为路由器中,使用ip route-static命令配置静态路由。一条静态路由主要包含以下要素。 目的地址:数据包要到达的目标IP地址 子网掩码:用于指定目的地址的网络部分和主机部分 下一跳地址&#xff08…

大模型应用:如何使用Langchain+Qwen部署一套Rag检索系统

一、TL;DR 从0-1使用qwen chat model langchain的链式架构搭建一套rag系统详细介绍了Langchain的工具链的调用流程简单介绍了可能会出现什么问题 二、方法 参考开源链接:https://github.com/Aphasia0515/self_llm/ 2.1 硬件和软件依赖 类型需求备注…

决策树:化繁为简的智能决策利器

本文来自「大千AI助手」技术实战系列,专注用真话讲技术,拒绝过度包装。 想象一个相亲决策过程: 对方收入 > 30万? → 是 → 见面否 → 颜值高? → 是 → 先聊聊否 → 放弃 这种层层递进的判断结构,正是…

html中的盒子标签div标签,有序列表,无序列表

div标签 div标签对于分析数据很重要&#xff0c;因为数据在页面中展示是以区域的形式展示的&#xff0c;而查找数据需要先找到盒子名称在继续向下找。前端页面布局中有两种布局方式&#xff0c;一种是通过表格布局&#xff0c;一种是通过divcss来布局。 <!DOCTYPE html>…

【Redis】解码Redis中hash类型:理解基础命令,以及内部编码方式和使用场景

&#x1f4da;️前言 &#x1f31f;&#x1f31f;&#x1f31f;精彩读导 本次我们将全面剖析Redis的核心技术要点&#xff0c;包括其丰富的数据类型体系、高效的编码方式以及秒级响应的性能奥秘。对于渴望深入理解Redis底层机制的技术爱好者&#xff0c;这是一次难得的学习机会…

AI工具在学术写作中的伦理边界与诚信规范的平衡

AI写作助手的兴起与争议 人工智能技术的飞速发展&#xff0c;学境思源&#xff0c;ChatGPT、Grok、Claude 等AI写作工具逐渐走入高校师生的视野。一键生成论文初稿&#xff01;从课程作业到毕业论文&#xff0c;不少学生已经尝试让AI参与写作过程&#xff0c;希望借此提升效率…

课程专注度分析系统项目

前端代码: <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>课堂专注度分析系统 - 科技…

区块链是什么

区块链的本质与机制 1. 核心定义 区块链 加密的分布式记账技术&#xff0c;融合密码学、网络学、金融学三大学科。 去中心化&#xff1a;数据存储于全网节点&#xff08;如百万台计算机&#xff09;&#xff0c;而非单一数据库。不可篡改&#xff1a;修改数据需控制全网51%以…

用可观测工具高效定位和查找设计中深度隐藏的bug

软件仿真拥有最佳的信号可见性和调试灵活性,被大多数工程师熟练使用,能够高效捕获很多显而易见的常见错误。 然而,由软件实现的数字仿真过程运行速度有限,很难做到100%代码覆盖。导致那些深度隐藏的设计问题,将不可避免的逃逸,只能以FPGA在线调试方式解决。 01 为什么全…