Java: Как вычислить точный центр нескольких координат? - PullRequest
0 голосов
/ 15 октября 2019

Я хочу вычислить точный центр нескольких координат (пары широта / долгота). Например:

Нью-Йорк: 40.730610, -73.935242
Чикаго: 41.881832, -87.623177
Атланта: 33.753746, -84.386330

=> Центр: lat, long (вероятно, здесь 39, -82)

Как бы вы реализовали это с помощью Java? Спасибо

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Как уже ответили, пожалуйста, создайте многоугольник, используя точки, затем вычислите CalculateCentroid () из многоугольника

0 голосов
/ 15 октября 2019

Это может помочь

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;
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...