java - Java:如何计算多个坐标的精确中心?
问题描述
我想计算多个坐标(纬度/经度对)的确切中心。例如:
纽约: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;
}
}
推荐阅读
- javascript - Hi - this may be a question that was asked before but how do we assign a variable's value as Property / Value of another new variable?
- python - 竞争性编程:如何检查变量的值是否存在于 python 列表中?
- kubernetes - 部署 Yaml 文件
- javascript - 如何将此表单中的日期输入到连接数据库中的某个表中?
- arrays - 库存管理 - 由于到期而注销 qn
- c# - 如何仅将 SelectionChanged 事件绑定到 XAML 中其他元素上的可见性属性
- excel - 列表框文本值转换为数值
- reactjs - 用户更改帐户时余额不更新
- vb.net - PrintForm 不打印整页
- mongodb - 文档自动过期后接收回调的芒果模板