当前位置: 首页 > news >正文

【量算分析工具-贴地距离】GeoServer改造Springboot番外系列九

【量算分析工具-概述】GeoServer改造Springboot番外系列三-CSDN博客

【量算分析工具-水平距离】GeoServer改造Springboot番外系列四-CSDN博客

【量算分析工具-水平面积】GeoServer改造Springboot番外系列五-CSDN博客

【量算分析工具-方位角】GeoServer改造Springboot番外系列六-CSDN博客

【量算分析工具-坡度】GeoServer改造Springboot番外系列七-CSDN博客

【量算分析工具-获取高程】GeoServer改造Springboot番外系列八-CSDN博客

【量算分析工具-贴地距离】GeoServer改造Springboot番外系列九-CSDN博客

【量算分析工具-贴地面积】GeoServer改造Springboot番外系列十-CSDN博客

贴地距离

1、思路

将两点之间线段抽象成为若干个具有高程的经纬度点,计算每两个点之间的距离,然后累加所有距离之和,即为贴地距离。

 如图,AB连线经过C、D、E、F、G五个点,他们的高程用H表示,他们两点之间的距离用L表示,那么算出A到B之间的贴地距离的公式:

Distance = AC+CD+DE+EF+FG+GB

=\sqrt{(H_{A}-H_{C})^{2}+L_{AC}^{2}}   +  \sqrt{(H_{C}-H_{D})^{2}+L_{CD}^{2}} +  \sqrt{(H_{D}-H_{E})^{2}+L_{DE}^{2}}

 +  \sqrt{(H_{E}-H_{F})^{2}+L_{EF}^{2}} +  \sqrt{(H_{F}-H_{G})^{2}+L_{FG}^{2}} +  \sqrt{(H_{G}-H_{B})^{2}+L_{GB}^{2}}

2、步骤

1、根据两点坐标获取瓦片范围;

2、合并瓦片成为一个新的大瓦片;

3、读取大瓦片的高程数据;

4、两点经纬度转换成像素坐标;

5、根据Bresenham直线算法,获取两点像素之间所有像素点坐标;

6、最后根据上面示意图的公式计算出地表距离。

3、代码

package com.gs.springboot.gmserver.util;import org.locationtech.jts.geom.Coordinate;import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;/*** 距离计算工具类*/
public class DistanceUtil {/*** 椭球平均半径,单位m,椭球半径是6,378,137m*/private static final double EARTH_RADIUS = 6371008.77138;/*** 获取高程数据的地表距离** @param zoom           层级* @param coordinateList 连线的经纬度集合* @param rootPathList   高程terrain-rgb数据文件夹集合* @return double*/public static double getSurfaceDistance(int zoom, List<double[]> coordinateList, List<String> rootPathList, String type) {if (coordinateList.size() < 2) {throw new IllegalArgumentException("The line list must contain exactly two coordinates

相关文章:

【量算分析工具-贴地距离】GeoServer改造Springboot番外系列九

【量算分析工具-概述】GeoServer改造Springboot番外系列三-CSDN博客 【量算分析工具-水平距离】GeoServer改造Springboot番外系列四-CSDN博客 【量算分析工具-水平面积】GeoServer改造Springboot番外系列五-CSDN博客 【量算分析工具-方位角】GeoServer改造Springboot番外系列…...

【linux】(1)文件操作及vi

文件和目录的创建 创建文件 touch 命令&#xff1a;创建一个新的空文件。 touch filename.txtecho 命令&#xff1a;创建一个文件并写入内容。 echo "Hello, World!" > filename.txtcat 命令&#xff1a;将内容写入文件。 cat > filename.txt然后输入内容&…...

【5】MySQL数据库备份-XtraBackup - 全量备份

MySQL数据库备份-XtraBackup-全量备份 前言环境版本 安装部署下载RPM 包二进制包 安装卸载 场景分析全量备份 | 恢复备份恢复综合 增量备份 | 恢复部分备份 | 恢复 前言 关于数据库备份的一些常见术语、工具等&#xff0c;可见《MySQL数据库-备份》章节&#xff0c;当前不再重…...

数据治理-数据标准演示

数据字典 数据标准-数据字典 词根 数据标准-词根 业务字典映射 数据标准-业务字典映射 标准文档 数据标准-标准文档...

基于Chisel的FPGA流水灯设计

Chisel流水灯 一、Chisel&#xff08;一&#xff09;什么是Chisel&#xff08;二&#xff09;Chisel能做什么&#xff08;三&#xff09;Chisel的使用&#xff08;四&#xff09;Chisel的优缺点1.优点2.缺点 二、流水灯设计 一、Chisel &#xff08;一&#xff09;什么是Chise…...

LabVIEW齿轮调制故障检测系统

LabVIEW齿轮调制故障检测系统 概述 开发了一种基于LabVIEW平台的齿轮调制故障检测系统&#xff0c;实现齿轮在恶劣工作条件下的故障振动信号的实时在线检测。系统利用LabVIEW的强大图形编程能力&#xff0c;结合Hilbert包络解调技术&#xff0c;对齿轮的振动信号进行精确分析…...

AI帮写:探索国内AI写作工具的创新与实用性

随着AI技术的快速发展&#xff0c;AI写作正成为创作的新风口。但是面对GPT-4这样的国际巨头&#xff0c;国内很多小伙伴往往望而却步&#xff0c;究其原因&#xff0c;就是它的使用门槛高&#xff0c;还有成本的考量。 不过&#xff0c;随着GPT技术的火热&#xff0c;国内也涌…...

n后问题 回溯笔记

问题描述 在nn格的棋盘上放置彼此不受攻击的n个皇后。 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同 一行或同一列或同一斜线上的棋子。n后问题等价于在nn格的棋盘上放置n个皇后&#xff0c;任何2个皇后不放在同一行或同一列或同一斜线上。 代码 import java.uti…...

简述Java中实现Socket通信的步骤

在Java中&#xff0c;实现Socket通信通常涉及客户端和服务器端两个角色。以下是它们各自的基本步骤&#xff1a; 服务器端&#xff08;Server&#xff09; 创建ServerSocket对象&#xff1a; 在服务器端&#xff0c;首先需要创建一个ServerSocket对象。这个对象会监听来自客户…...

Asp.Net Core 实现分片下载的最简单方式

技术群里的朋友遇到了这个问题&#xff0c;起初的原因是他对文件增加了一个属性配置 fileResult.EnableRangeProcessing true;这个属性我从未遇到过&#xff0c;然后&#xff0c;去F1查看这个属性的描述信息也依然少的可怜&#xff0c;只有简单的描述为(获取或设置为 启用范围…...

[Mac软件]Leech for Mac v3.2 - 轻量级mac下载工具

黑果魏叔推荐Leech是由Many Tricks开发的适用于Mac OS X的轻量级且功能强大的下载管理器。 Leech让您完全控制下载&#xff0c;并与浏览器完全集成。您可以将下载排队&#xff0c;暂停和恢复&#xff0c;从受密码保护的服务器下载&#xff0c;并将密码存储在系统范围的安全钥匙…...

留给“端侧大模型”的时间不多了

端侧大模型&#xff08;Edge AI models&#xff09;&#xff0c;也就是只在设备本地&#xff08;如智能手机、IoT设备、嵌入式系统等&#xff09;运行的大模型&#xff0c;过去一两年来非常流行。 具体表现在&#xff0c;终端设备厂商&#xff0c;如苹果、荣耀、小米、OV等&…...

Pytest框架中的Setup和Teardown功能

在 pytest 测试框架中&#xff0c;setup 和 teardown是用于在每个测试函数之前和之后执行设置和清理的动作&#xff0c;而pytest 实际上并没有内置的 setup 和 teardown 函数&#xff0c;而是使用了一些装饰器或钩子函数来实现类似的功能。 学习目录 钩子函数&#xff08;Hook…...

yolov10/v8 loss详解

v10出了就想看看它的loss设计有什么不同&#xff0c;看下来由于v8和v10的loss部分基本一致就放一起了。 v10的论文笔记&#xff0c;还没看的可以看看&#xff0c;初步尝试耗时确实有提升 好记性不如烂笔头&#xff0c;还是得记录一下&#xff0c;以免忘了&#xff0c;废话结束…...

Typescript高级: 深入理解infer关键字

概述 在 TS 中&#xff0c;infer 是一个高级类型操作&#xff0c;特别是条件类型和映射类型中非常有用的关键字它在泛型中使用也会是一个强大工具&#xff0c;增强了类型推断的能力&#xff0c;让开发者更灵活地处理和操作类型它允许在泛型类型推导过程中捕获一个具体的类型&a…...

JQC-3FF-S-Z 继电器模块使用(arduino)

前言 继电器模块可以控制电流的接通和非接通状态&#xff0c;和开关一样。实际上是用小电流去控制大电流运作的一种“自动开关” 本文只是简单使用继电器模块做一个 led 点亮和熄灭的案例&#xff0c;结合案例可以和 nodemcu 等板子结合做出远程控制开关。 材料准备 杜邦线…...

黑马一站制造数仓实战2

问题 DG连接问题 原理&#xff1a;JDBC&#xff1a;用Java代码连接数据库 Hive/SparkSQL&#xff1a;端口有区别 可以为同一个端口&#xff0c;只要不在同一台机器 项目&#xff1a;一台机器 HiveServer&#xff1a;10000 hiveserver.port 10000 SparkSQL&#xff1a;10001…...

网络I/O模型

网络I/O模型 同步I/O阻塞I/O非阻塞I/OI/O多路复用select函数接口示例 poll函数接口示例 poll 和 select 的区别epoll原理&#xff1a;示例 异步I/O 同步I/O 阻塞I/O 一个基本的C/S模型如下图所图&#xff1a;其中 listen()、connect()、write()、read() 都是阻塞I/O&#xff0…...

Docker 简介和安装

目录 Docker 是什么 跟普通虚拟机的对比 打包、分发、部署 Docker 部署的优势 Docker 通常用来做什么 重要概念&#xff1a;镜像、容器 安装 镜像加速源 Docker 是什么 Docker 是一个应用打包、分发、部署的工具 你也可以把它理解为一个轻量的虚拟机&#xff0c;它只虚…...

【源码】Spring Data JPA原理解析之Repository自定义方法命名规则执行原理(二)

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 4、Spring Data JPA的一对一、LazyInitializationException异常、一对多、多对多操作 5、Spring Data JPA自定…...

163MusicLyrics:一键获取网易云QQ音乐歌词的专业工具

163MusicLyrics&#xff1a;一键获取网易云QQ音乐歌词的专业工具 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为找不到高质量歌词而烦恼吗&#xff1f;163MusicLy…...

终极macOS清理神器:Pearcleaner 3步彻底卸载应用不留痕迹

终极macOS清理神器&#xff1a;Pearcleaner 3步彻底卸载应用不留痕迹 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾将macOS应用拖入废纸篓后&…...

轻量级监控系统Monikhao:自托管部署与核心架构解析

1. 项目概述&#xff1a;一个轻量级、可自托管的监控解决方案最近在折腾个人服务器和家庭网络监控时&#xff0c;发现了一个挺有意思的项目&#xff1a;khaodius/monikhao。乍一看这个名字&#xff0c;可能会觉得有点陌生&#xff0c;但如果你对自建监控系统有需求&#xff0c;…...

faah:轻量级自动化任务编排器,简化运维与数据处理工作流

1. 项目概述&#xff1a;一个被低估的自动化利器最近在整理自己的自动化工具链时&#xff0c;又翻出了kiron0/faah这个项目。说实话&#xff0c;第一次看到这个仓库名&#xff0c;我也有点懵——“faah”&#xff1f;这名字听起来不像是一个典型的工具。但点进去之后&#xff0…...

Golioth Firmware SDK:物联网设备连接与管理的开源解决方案

1. 项目概述&#xff1a;Golioth Firmware SDK 是什么&#xff1f;如果你正在开发物联网设备&#xff0c;尤其是那些需要稳定连接到云端、进行远程管理、固件更新和数据同步的设备&#xff0c;那么你一定对“设备管理”和“连接复杂性”这两个词深有体会。自己从头搭建一套稳定…...

用Git和Markdown构建个人知识库:Wandercode项目实践指南

1. 项目概述&#xff1a;从“漫游代码”到个人知识管理系统的蜕变最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Wandercode”&#xff0c;直译过来就是“漫游代码”。乍一看这个标题&#xff0c;可能会让人联想到某种代码生成器或者自动化脚本工具。但当我深入探究其仓…...

U64JSON编码技术解析与Iris框架性能优化

1. Iris框架与U64JSON编码技术解析 在嵌入式系统和高性能计算领域&#xff0c;数据交换效率直接影响整体系统性能。传统JSON虽然具有可读性好、跨平台等优势&#xff0c;但其文本特性带来的解析开销和带宽占用成为性能瓶颈。Arm Iris框架采用的U64JSON编码方案&#xff0c;通过…...

AI异步任务编排引擎:从原理到实战,构建可靠工作流系统

1. 项目概述&#xff1a;AI驱动的异步任务编排引擎在当今的软件开发领域&#xff0c;尤其是涉及数据处理、机器学习模型训练、自动化工作流等场景时&#xff0c;我们常常会面临一个核心挑战&#xff1a;如何高效、可靠地编排和管理一系列耗时且可能相互依赖的异步任务。传统的解…...

Adafruit Bluefruit模块DFU模式恢复与固件更新全攻略

1. 项目概述如果你正在玩Adafruit的Bluefruit系列蓝牙模块&#xff0c;比如UART Friend或者SPI Friend&#xff0c;并且某天它突然“变砖”了——连接不上、没反应&#xff0c;或者Arduino IDE里怎么也刷不进新程序&#xff0c;先别急着把它扔进抽屉吃灰。这种情况我遇到过不止…...

苍穹外卖day11

概述项目步入尾声&#xff0c;进行商家数据统计开发分为营业额统计&#xff0c;用户统计&#xff0c;订单统计&#xff0c;销量排名 导航栏的内容为查询选定时间内的的数据统计 右上角的数据导出为下一天的内容 数据导出后形成的图表由Apache的Echarts生成&#xff0c;是开发中…...