Java GeoTools-如何使用GeoTools类进行航位推算和航向计算
我目前正在使用GeoTools工具包对海洋船舶数据进行计算,例如计算两个lon/lat点之间的大圆距离。我还需要满足另外两个要求,但我不确定在GeoTools中的哪里可以找到进行此类计算的类 要求#1: 计算移动船舶的位置 输入值:Java GeoTools-如何使用GeoTools类进行航位推算和航向计算,java,geospatial,latitude-longitude,geotools,dead-reckoning,Java,Geospatial,Latitude Longitude,Geotools,Dead Reckoning,我目前正在使用GeoTools工具包对海洋船舶数据进行计算,例如计算两个lon/lat点之间的大圆距离。我还需要满足另外两个要求,但我不确定在GeoTools中的哪里可以找到进行此类计算的类 要求#1: 计算移动船舶的位置 输入值: 当前经度 当前纬度 当前速度(在给定时间“T”的情况下,可轻松转换为距离) 当前课程 预期产出: 经过时间“T”后的估计经纬度位置 要求#2: 计算从位置“A”到位置“B”的航向 输入值: 经度‘A’ 纬度‘A’ 经度'B' 纬度'B' 预期产出: 直
- 当前经度
- 当前纬度
- 当前速度(在给定时间“T”的情况下,可轻松转换为距离)
- 当前课程
- 经过时间“T”后的估计经纬度位置
- 经度‘A’
- 纬度‘A’
- 经度'B'
- 纬度'B'
- 直接从“A”指向“B”的路线
有人能告诉我GeoTools中能够执行这些计算的类吗?GeoTools的课程数量之多让我不知所措,我似乎找不到我需要做什么。如何计算从“A”位置到“B”位置的课程。
- 需要具有位置“A”和“B”的纬度/经度
- 获取
类的实例大地测量计算器
- 调用
setStartingGeographicPoint()
- 调用setDestinationGeographicPoint()
- 调用
getAxitation()
- 从方位角转换为十进制度数
- 需要具有位置“A”的纬度/经度
- 需要有船舶当前航向的方位角
- 需要有以米为单位的行驶距离(或计算为速度*时间)
- 获取
类的实例大地测量计算器
- 调用
setStartingGeographicPoint()
- 调用
setDirection()
- 调用getDestinationGeographicPoint()
public static final double KNOTS_PER_MPS = 1.9438444924406;
public static final double MPS_PER_KNOT = 0.514444444444444;
public static double metersPerSecondToKnots(double speedInMetersPerSecond) {
return speedInMetersPerSecond * KNOTS_PER_MPS;
}
public static double knotsToMetersPerSecond(double speedInKnots) {
return speedInKnots * MPS_PER_KNOT;
}
public static double courseInDegreesToAzimuth(double courseInDegrees) {
Validate.isTrue(courseInDegrees >= 0.0 && courseInDegrees <= 360.0);
double azimuth;
if (courseInDegrees > 180.0) {
azimuth = -180.0 + (courseInDegrees - 180.0);
} else {
azimuth = courseInDegrees;
}
return azimuth;
}
public static double azimuthToCourseInDegrees(double azimuth) {
Validate.isTrue(azimuth >= -180.0 && azimuth <= 180.0);
double courseInDegrees;
if (azimuth < 0.0) {
courseInDegrees = 360.0 + azimuth;
} else {
courseInDegrees = azimuth;
}
return courseInDegrees;
}
public static final double KNOTS\u PER\u MPS=1.9438444924406;
公共静态最终双MPS_/u结=0.51444;
公共静态双米每秒(双速每秒){
返回速度米/秒*节/分钟;
}
公共静态双结每秒(双速){
返回speedInKnots*每节MPS;
}
公共静态双航向指示器方位角(双航向指示器){
Validate.isTrue(courseInDegrees>=0.0和&courseInDegrees 180.0){
方位=-180.0+(航向指数-180.0);
}否则{
方位角=航向指数;
}
返回方位角;
}
公共静态双方位角航向索引(双方位角){
Validate.isTrue(Aximust>=-180.0&&Aximust If not此页面具备@Romainippeau所需的所有数学知识。你这么说很有趣。我公司的某位员工已经花了一些时间手动将部分JavaScript代码重新实现到Java类中。不过,理想情况下,我们更愿意为所有这些内容使用一个适当维护的开源库。