Java:如何计算多个坐标的精确中心?

Java:如何计算多个坐标的精确中心?,java,math,geolocation,Java,Math,Geolocation,我想计算多个坐标(纬度/经度对)的精确中心。例如: 纽约:40.730610,-73.935242 芝加哥:41.881832,-87.623177 亚特兰大:33.753746,-84.386330 =>中心:lat,long(可能在这附近39,-82) 您将如何使用Java实现这一点? 谢谢这可能会有帮助 import java.util.ArrayList; import java.util.List; public class coordinate_check { List&l

我想计算多个坐标(纬度/经度对)的精确中心。例如:

纽约:
40.730610,-73.935242

芝加哥:
41.881832,-87.623177
亚特兰大:
33.753746,-84.386330

=>中心:
lat,long
(可能在这附近
39,-82

您将如何使用Java实现这一点? 谢谢

这可能会有帮助

import java.util.ArrayList;
import java.util.List;

public class coordinate_check {
    List<coordinate> places = new ArrayList<>();
    public coordinate centre(){
        if(places.size() == 1) return  places.get(0);
        final int size = places.size();
        double x=0,y=0,z=0,lati,longi;
       for(coordinate alpha : places){
            lati = Math.toRadians(alpha.lat); 
            longi = Math.toRadians(alpha.lon); 
           double a = Math.cos(lati) * Math.cos(longi);
           double b = Math.cos(lati) * Math.sin(longi);
           double c = Math.sin(lati);
           x+=a;
           y+=b;
           z+=c;
       }
       x/=size;
       y/=size;
       z/=size;
        longi = Math.atan2(y,x);
        double hyp = Math.sqrt(x*x+y*y);
        lati = Math.atan2(z,hyp);
        return  new coordinate(Math.toDegrees(lati), Math.toDegrees(longi))
    }
}




class coordinate{
     static double lat;
     static double lon;
     public coordinate(double x, double y){
         lat = x;
         lon = y;
     }
}
import java.util.ArrayList;
导入java.util.List;
公共类坐标检查{
列表位置=新的ArrayList();
公共协调中心(){
如果(places.size()==1)返回places.get(0);
最终整数大小=places.size();
双x=0,y=0,z=0,纬度,经度;
用于(坐标alpha:位置){
lati=数学环面(αlat);
longi=数学环面(α-lon);
双a=数学cos(纬度)*数学cos(经度);
双b=数学cos(纬度)*数学sin(经度);
双c=数学sin(lati);
x+=a;
y+=b;
z+=c;
}
x/=尺寸;
y/=尺寸;
z/=尺寸;
longi=数学常数2(y,x);
双hyp=数学sqrt(x*x+y*y);
lati=数学atan2(z,hyp);
返回新坐标(数学toDegrees(lati)、数学toDegrees(longi))
}
}
类坐标{
静态双车床;
静电双离子;
公共坐标(双x,双y){
lat=x;
lon=y;
}
}

如前所述,请使用点创建多边形,然后根据多边形计算CalculateCenter()

检查