在我的应用程序中,我需要找到一些(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点的中点/坐标?相关推荐

  1. JAVA求两点间的距离:

    求两点间的距离 给定 A(x1, y1),B(x2​,y2​) 两点坐标,计算它们间的距离. 输入格式 输入包含四个实数x1​,y1​,x2​,y2​,分别用空格隔开,含义如描述. 输出格式 输出占一 ...

  2. 五边形顶点坐标_任意给定五边形的5个顶点坐标,利用多边形填充的扫描算法,编写程序生成一个实心五边形...

    // // 功能: 填充多边形 // // 参数: lpPoints: 指向顶点坐标数组的指针,数组类型为POINT,多边形由它们顺次封闭连接得到 // nCount: 顶点的个数 // nColor ...

  3. Java求两点的中点坐标_计算两点坐标距离与中点坐标

    /*回顾一下数学公式: 两点的坐标是(x1, y1)和(x2, y2) 则两点之间的距离公式为 d=√[(x1-x2)²+(y1-y2)²] 注意特例: 当x1=x2时 两点间距离为|y1-y2| 当 ...

  4. java求值不用后缀表达式_数据结构之后缀表达式求值(java实现)

    数据结构之后缀表达式求值(java实现) 前记 ​ 今天在刷leet code的时候刷到了一道题,后缀表达式(逆波兰表达式)求值,我花了一会儿写了一下它的解法.但是今天我不谈什么是后缀表达式,有兴趣的 ...

  5. java求两点之间的斜率

    定义坐标实体类 public class Point {private double x;private double y;public Point(double x,double y){this.x ...

  6. Java求最小数用哪个函数_在Java中使用小数进行计算的函数

    例如,当您键入22和56时,此代码可以正常工作,它显示正确的结果 import java.util.Scanner; class apples{ public static void main(Str ...

  7. java 求最长重复子串_给定一个字符串,求出其最长的重复子串。

    #include #include #include #include using namespace std; //给定一个字符串,求出其最长的重复子串 //方法一 string lsubstr_1 ...

  8. java求乘法逆元的代码_求乘法逆元的几种方法

    (数学渣,下面的文字可能有误,欢迎指教) 乘法逆元的定义貌似是基于群给出的,比较简单地理解,可以说是倒数的概念的推广.记a的关于模p的逆元为a^-1,则a^-1满足aa^-1≡ 1(mod p) 加减 ...

  9. Java求抛物线输入角度速度_模拟一条抛物线如何根据抛出角度,力度在计算物体的飞行轨迹?最好考虑空气的阻力,哪位达人能给一个公式么...

    共回答了17个问题采纳率:82.4% 没定坐标系的话就是默认从原点开始的一条抛物线咯? 设横纵坐标都表示距离 单位m米 其实有点问题 只有力度没有受力时间是不知道抛出的初速度的 这个问题一定要搞清楚啊 ...

最新文章

  1. MySQL python update 语句
  2. char类型是多少 mat_opencv之Mat数据类型
  3. RabbitMq、ActiveMq、ZeroMq、kafka之间的比较,资料汇总
  4. [html] 本地存储和cookie之间的区别是什么?
  5. php里的utf-8编码,php – 修复损坏的UTF-8编码
  6. 玩客云刷armbian后根目录扩展
  7. OpenGL ES Emulator再次横向比较
  8. EJB3.0学习笔记---JMS/MDB/Pub/Sub/P2P
  9. pat编程语言_浙江大学在线pat题库集合
  10. [转]介绍“Razor”— ASP.NET的一个新视图引擎
  11. 员工请假管理系统(MFC+ACCESS数据库+ODBC数据源)
  12. 通用的电子商务商城后台管理界面模板(可下载)
  13. 给人工智能初学者看的5本入门书 | 附下载链接
  14. Laravel 5.5 Eloquent ORM - 关联关系
  15. 女程序员在公司受到的待遇有什么不一样?
  16. 【DB笔试面试594】在Oracle中,关键字NOLOGGING、APPEND和PARALLEL提高DML性能方面有什么差别?...
  17. Jdon Framework
  18. APC不间断电源说明书
  19. FFMPEG保存视频流数据至本地(rtsp转mp4)
  20. 微信扫码登陆(JAVA)

热门文章

  1. 业界首个声纹识别与音频检索系统上线,10分钟搭建产业级应用
  2. 读书笔记-专注于自己的目标不要为其他事情和人分心和浪费时间
  3. mysql摧毁重建_mysql数据文件破坏后的修复方法
  4. 小程序官方直播插件怎么接入
  5. 数学竞赛倒数17天_三重积分这叫有点技巧?
  6. pfifo_fast
  7. Excel如何统计合并单元格数据个数
  8. 从一道题谈C++中构造函数调用构造函数
  9. 【重难点】【计算机网络 01】OSI 七层模型和 TCP/IP 四层模型、IP 地址分为哪几类、ping 的原理、从浏览器地址栏输入 URL 到显示网页的过程、什么是 socket
  10. 深圳 南澳、西冲 游玩 计划中 (转载)