Closed sayliu closed 4 years ago
You could convert the s2.Point
values to s2.LatLng
values, then use the Distance
method.
hi @dsymonds , the LatLng's comment says Distance returns the angle between two LatLngs.
What I need is the distance between two points, which units are meters or kilometers
(EDIT) Maybe I can use angle.Degrees()*40075/360
to Calculate distance, the angle
is the result of Distance
method. But I still want to use the available function in this repo.
@sayliu This repo is based on a unit sphere, you have to convert the angle distance to meters / kilometers by multiplying by Earth radius.
There is a native Distance function both for the s2.Point and s2.LatLng functions, both of which returns distance as an s1.Angle.
Also be wary that depending on your application, required precision, and distances involved the spherical approximation can break down leading to distance errors when applied to the Earth's surface. This happens much sooner than you would expect.
At least for my applications at mid-latitudes, the raw s2 distance is only sufficiently accurate up ~10 km before we need a full geodesic solution to compute accurate ranges.
Yep, that's right. When you have the s1.Angle
, cast it to float64 and multiply it by 6371.01 (e.g. see s2_test.go for the inverse operation). That's a widely used approximation that might be sufficient for your use case, but this library does not provide official conversions.
After read the document, I had not found the function which count the distance between two point. Can some one tell me? Thanks