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()检查