首页 > 解决方案 > Java:如何计算多个坐标的精确中心?

问题描述

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

纽约:40.730610, -73.935242
芝加哥:41.881832, -87.623177
亚特兰大:33.753746, -84.386330

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

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

标签: javamathgeolocation

解决方案


这可能会有所帮助

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;
     }
}

推荐阅读