apache / streampipes

Apache StreamPipes - A self-service (Industrial) IoT toolbox to enable non-technical users to connect, analyze and explore IoT data streams.
https://streampipes.apache.org
Apache License 2.0
612 stars 182 forks source link

Improve Distance Calculator with more accuracy #796

Open dominikriemer opened 2 years ago

dominikriemer commented 2 years ago

at the moment the Haversine formula is used to calculate the distance between 2 lat/lng spherical points. Using the Vincenty solutions leads to a more accurate result

https://github.com/apache/streampipes/tree/dev/streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/processor/staticdistancecalculator

The distance is calculated from a static point Berlin lat 52.520008 lng 13.404954

||city|| distance_sp|| distance Vincenty || alpha || |Karlsruhe| 524.871 | 525.735 | -0.864 | | Sidney | 16094.221| 16088.138 | 6.083 | |Hamburg | 255.306 | 256.015 | -0.709 | | New York | 6384.996 | 6402.425 | -17.429 |

Backgroundinfo https://www.neovasolutions.com/2019/10/04/haversine-vs-vincenty-which-is-the-best/

Testdata: [^City_Koords.csv]

Imported from Jira STREAMPIPES-641. Original Jira may contain additional context. Reported by: micklich. Subtask of issue #795

flomickl commented 1 year ago

My plan is to add this lib to get better performance for calculation and other tasks

https://github.com/geographiclib/geographiclib-java

<!-- https://mvnrepository.com/artifact/net.sf.geographiclib/GeographicLib-Java -->
<dependency>
    <groupId>net.sf.geographiclib</groupId>
    <artifactId>GeographicLib-Java</artifactId>
    <version>2.0</version>
</dependency>

Due to MIT license -> https://geographiclib.sourceforge.io/LICENSE.txt I think it is safe to add. It is correct @dominikriemer ?