我有一些问题,导致geotools库中的getOrthodromicDistance方法失败并抛出异常,尽管这些点是有效的纬度和经度点:
抛出异常的点(纬度,经度):
val p1= (5.318765,-75.786109)
val p2= (-6.32907,106.09254)
例如异常: 点 75°47,2'W 06°19,7'S 和 106°05,6'E 05°19,1'N 没有收敛。 java.lang.ArithmeticException: 点 75°47,2'W 06°19,7'S 和 106°05,6'E 05°19,1'N 没有收敛。 在 org.geotools.referencing.GeodeticCalculator.computeDirection(GeodeticCalculator.java:1073) 中使用的代码为Scala:
def latlonDistance(p1:(Double,Double), p2:(Double,Double)):Double={
val world= new GeodeticCalculator()
world.setStartingGeographicPoint(p1._2, p2._1)
world.setDestinationGeographicPoint(p2._2, p1._1)
world.getOrthodromicDistance
}
注意:在latlonDistance中传递的点格式为(lat,lon),如上所述,而setStartingGeographicPoint、setDestinationGeographicPoint需要(lon,lat)顺序。
使用的版本:
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-referencing</artifactId>
<version>13.2</version>
</dependency>
在Python中按预期工作:
>>> from geopy.distance import vincenty
>>> pt1= [5.318765,-75.786109]
>>> pt2= [-6.32907,106.09254]
>>> vincenty(pt1 , pt2)
Distance(19791.6883647)
在org.geotools.referencing.datum.DefaultEllipsoid中,orthodromicDistance方法无法收敛。有什么解决方法吗?