【发布时间】:2021-04-30 22:48:36
【问题描述】:
我有一个代表路径的坐标列表,以及源和目标坐标。因此,使用 spatial4j、JTS、GeoTools 或任何其他库如何计算预定义路径(坐标列表)上两点(源和目标)之间的距离。
下面是我尝试使用 spatail4j 的示例,它是直线距离。但同样的事情我们可以通过我使用 spatial4j 但使用不同的库(如 JTS、GeoTools 等)的路径实现,
public static void main(String[] args) {
SpatialContext ctx = SpatialContext.GEO;
Point p1= ctx.getShapeFactory().pointXY( 77.610099,12.91502);
Point p2= ctx.getShapeFactory().pointXY( 77.59038,12.917055);
System.out.println(ctx.getDistCalc().distance(p1, p2) * DistanceUtils.DEG_TO_KM);
}
// output: 2.149124512680105
以下是路线/路径地理点:
12.91502 , 77.610099
12.91502 , 77.610092
12.913957 , 77.610069
12.913954 , 77.610033
12.91644 , 77.610048
12.916573 , 77.605512
12.916618 , 77.603053
12.916622 , 77.601803
12.916652 , 77.600092
12.916735 , 77.597653
12.916896 , 77.590946
12.916927 , 77.590242
12.916936 , 77.589467
12.917083 , 77.589466
12.917055 , 77.59038
根据谷歌地图,该值应为2.8Km。是否有任何其他 java 库可以用来实现相同的目标,因为 spatial4j 的资源非常少。
【问题讨论】:
-
不就是把所有路径段的距离相加吗?
-
是的,但首先我们必须检查源和目的地是否位于路径上,如果位于则我们必须计算源和目的地之间的距离。但不确定如何使用 spatial4j 来做到这一点。
-
看看这个 - 一个现成的库现在可用,你可以使用它。 stackoverflow.com/a/57482299/1486762
-
@BilboBaggins 但这会计算两点之间的距离,我的要求是计算预定义路径(经度集)上的距离。
-
更多链接:stackoverflow.com/questions/14394366/… & geodatasource.com/developers/java 我相信应该足够了。
标签: java geolocation gis geospatial