目前,我正在使用GeoTools工具包对船舶数据进行计算,例如计算两个lon/lat点之间的大圆圈距离。我还有另外两个需要满足的要求,但我不知道在GeoTools中查找类来完成此类计算的位置。
要求1:计算移动船只的死亡推算位置。
输入值:
预期产出:
要求2:计算从位置'A‘到'B’的过程。
输入值:
预期产出:
问题
,有人能告诉我GeoTools中能够执行这些计算的类吗?GeoTools中的类数量之多让我不知所措,我似乎无法找到我需要做的事情。
发布于 2010-10-14 12:59:32
如何计算从位置'A‘到位置'B'的过程
GeodeticCalculator类的实例setStartingGeographicPoint()setDestinationGeographicPoint()getAzimuth()如何从位置'A'开始计算推算位置'X‘
GeodeticCalculator类的实例setStartingGeographicPoint()setDirection()getDestinationGeographicPoint()下面是我自己实现所需的一些简单的单元转换方法。方位有点混乱。方位角范围为-180 ~ +180,其值随“角”沿顺时针方向的增大而增大。所以-180是南的,-90是西的,0是真北的,+90是东的,+180也是南的。
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;
}https://stackoverflow.com/questions/3917340
复制相似问题