У меня есть несколько точек, из-за которых метод getOrthodromicDistance не работает с исключением в geotools lib, в то время как эти точки являются действительными точками lat lon:
Точка, вызывающая исключение (широта, долгота):
val p1= (5.318765,-75.786109)
val p2= (-6.32907,106.09254)
например, исключение: нет схождения для точек 75 ° 47,2 'западной долготы 06 ° 19,7' южной широты и 106 ° 05,6 'восточной долготы 05 ° 19,1' северной широты. 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)
Это метод orthodromicDistance в org.geotools.referencing.datum.DefaultEllipsoid, который не сходится. Какие-нибудь обходные пути?