Java求两点的中点坐标_如何找到一些GPS点的中点/坐标?
在我的应用程序中,我需要找到一些(3个或更多)GPS点的中点.
我发现两点之间的距离如下
public class DistanceOfGeoPoints {
public static long distanceinKMeters(double dblLat, double dblNewLat, double dblLong, double dblNewLong)
{
try
{
//double dblDistance = 180 / (dblPI * Math.Acos(Math.Sin(dblLat) * Math.Sin(dblNewLat) + Math.Cos(dblLat) * Math.Cos(dblNewLat) * Math.Cos(dblLong - dblNewLong)));
double dblDegree2Radius = Math.PI / 180;
double dbllongdiff = (dblNewLong - dblLong) * dblDegree2Radius;
double dbllatdiff = (dblNewLat - dblLat) * dblDegree2Radius;
double a = Math.pow(Math.sin(dbllatdiff / 2.0), 2) + Math.cos(dblNewLat * dblDegree2Radius) * Math.cos(dblLat * dblDegree2Radius) * Math.pow(Math.sin(dbllongdiff / 2.0), 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double dblDistance = 6367 * c; //Earth Radius * value (result in KM)
// return dblDistance;
long intdistance = (Math.round(dblDistance * 1000));
return intdistance;
}
catch (Exception ex)
{
return 0;
}
}
}
现在我想要N个GPS点的中点
请帮帮我.
解决方法:
欧氏距离中两点的中点就是x和y坐标的平均值.如果我们只是平均点A和B的纬度和经度,这给出了A和B之间的点,但它不需要是等距的.
您可能想要的是将球面坐标转换为欧几里德坐标,通过平均x和y找到中点,然后转换回纬度,经度.
如果我们以超过2分的方式执行此操作,我们需要澄清“中点”的含义.
如果我们希望在欧氏几何中找到N个点的中点,我们只需对所有x值求平均值并对所有y值求平均值.这给了我们一个合理的“中间”,但这个平均点通常与所有三个点都不等.给定三点,我们可以计算出与这三点等距的唯一点;这一点是由三点定义的三角形的外心.但由于三个点定义了一个圆,因此该过程不会推广到n点.给定4个或更多点,可能没有与所有4等距离的点.无论我们是使用eculidean距离还是球面几何距离,都是如此.
在下图中,我们可以看到,外心点距离A,B和C点正好是5个单位.然而,这一点并不像“中间”.另一方面,由平均值定义的中点确实看起来像在中间,即使它更接近A而不是B或C.
对于由(纬度,经度)定义的n个点,最好的方法可能是将所有这些点转换为欧几里德点,计算机平均值,然后转换回(纬度,经度).
可以在此处找到执行此转换的一些代码:Processing Forum
并且有一个很好的wikipedia page解释你需要理解的背景数学.
标签:java,map,gps,google-maps,gis
来源: https://codeday.me/bug/20190620/1246282.html
Java求两点的中点坐标_如何找到一些GPS点的中点/坐标?相关推荐
- JAVA求两点间的距离:
求两点间的距离 给定 A(x1, y1),B(x2,y2) 两点坐标,计算它们间的距离. 输入格式 输入包含四个实数x1,y1,x2,y2,分别用空格隔开,含义如描述. 输出格式 输出占一 ...
- 五边形顶点坐标_任意给定五边形的5个顶点坐标,利用多边形填充的扫描算法,编写程序生成一个实心五边形...
// // 功能: 填充多边形 // // 参数: lpPoints: 指向顶点坐标数组的指针,数组类型为POINT,多边形由它们顺次封闭连接得到 // nCount: 顶点的个数 // nColor ...
- Java求两点的中点坐标_计算两点坐标距离与中点坐标
/*回顾一下数学公式: 两点的坐标是(x1, y1)和(x2, y2) 则两点之间的距离公式为 d=√[(x1-x2)²+(y1-y2)²] 注意特例: 当x1=x2时 两点间距离为|y1-y2| 当 ...
- java求值不用后缀表达式_数据结构之后缀表达式求值(java实现)
数据结构之后缀表达式求值(java实现) 前记 今天在刷leet code的时候刷到了一道题,后缀表达式(逆波兰表达式)求值,我花了一会儿写了一下它的解法.但是今天我不谈什么是后缀表达式,有兴趣的 ...
- java求两点之间的斜率
定义坐标实体类 public class Point {private double x;private double y;public Point(double x,double y){this.x ...
- Java求最小数用哪个函数_在Java中使用小数进行计算的函数
例如,当您键入22和56时,此代码可以正常工作,它显示正确的结果 import java.util.Scanner; class apples{ public static void main(Str ...
- java 求最长重复子串_给定一个字符串,求出其最长的重复子串。
#include #include #include #include using namespace std; //给定一个字符串,求出其最长的重复子串 //方法一 string lsubstr_1 ...
- java求乘法逆元的代码_求乘法逆元的几种方法
(数学渣,下面的文字可能有误,欢迎指教) 乘法逆元的定义貌似是基于群给出的,比较简单地理解,可以说是倒数的概念的推广.记a的关于模p的逆元为a^-1,则a^-1满足aa^-1≡ 1(mod p) 加减 ...
- Java求抛物线输入角度速度_模拟一条抛物线如何根据抛出角度,力度在计算物体的飞行轨迹?最好考虑空气的阻力,哪位达人能给一个公式么...
共回答了17个问题采纳率:82.4% 没定坐标系的话就是默认从原点开始的一条抛物线咯? 设横纵坐标都表示距离 单位m米 其实有点问题 只有力度没有受力时间是不知道抛出的初速度的 这个问题一定要搞清楚啊 ...
最新文章
- MySQL python update 语句
- char类型是多少 mat_opencv之Mat数据类型
- RabbitMq、ActiveMq、ZeroMq、kafka之间的比较,资料汇总
- [html] 本地存储和cookie之间的区别是什么?
- php里的utf-8编码,php – 修复损坏的UTF-8编码
- 玩客云刷armbian后根目录扩展
- OpenGL ES Emulator再次横向比较
- EJB3.0学习笔记---JMS/MDB/Pub/Sub/P2P
- pat编程语言_浙江大学在线pat题库集合
- [转]介绍“Razor”— ASP.NET的一个新视图引擎
- 员工请假管理系统(MFC+ACCESS数据库+ODBC数据源)
- 通用的电子商务商城后台管理界面模板(可下载)
- 给人工智能初学者看的5本入门书 | 附下载链接
- Laravel 5.5 Eloquent ORM - 关联关系
- 女程序员在公司受到的待遇有什么不一样?
- 【DB笔试面试594】在Oracle中,关键字NOLOGGING、APPEND和PARALLEL提高DML性能方面有什么差别?...
- Jdon Framework
- APC不间断电源说明书
- FFMPEG保存视频流数据至本地(rtsp转mp4)
- 微信扫码登陆(JAVA)
热门文章
- 业界首个声纹识别与音频检索系统上线,10分钟搭建产业级应用
- 读书笔记-专注于自己的目标不要为其他事情和人分心和浪费时间
- mysql摧毁重建_mysql数据文件破坏后的修复方法
- 小程序官方直播插件怎么接入
- 数学竞赛倒数17天_三重积分这叫有点技巧?
- pfifo_fast
- Excel如何统计合并单元格数据个数
- 从一道题谈C++中构造函数调用构造函数
- 【重难点】【计算机网络 01】OSI 七层模型和 TCP/IP 四层模型、IP 地址分为哪几类、ping 的原理、从浏览器地址栏输入 URL 到显示网页的过程、什么是 socket
- 深圳 南澳、西冲 游玩 计划中 (转载)