Estou executando uma análise específica em que usamos shapely para criar buffers em torno de pontos (locais da loja) e, em seguida, verificamos se outros pontos (locais do usuário) estão presentes nesse valor do buffer. Quando eu verifico a distância usando formas, ele acaba sendo diferente da distância que recebo do geopy. A fórmula haversine concorda com o Geopy e uma verificação no google maps usando a função medir distância também fornece a mesma distância
Aqui está um exemplo:
from shapely.geometry import Point, shape
from pyproj import Proj, transform
from geopy.distance import vincenty, great_circle
pt_store=Point(transform(Proj(init='EPSG:4326'),Proj(init='EPSG:3857'),-76.799614, 39.435307))
pt_user=Point(transform(Proj(init='EPSG:4326'),Proj(init='EPSG:3857'),-76.79989,39.43604))
vincenty((39.435307,-76.799614),(39.43604,-76.79989)).meters
great_circle((39.435307,-76.799614),(39.43604,-76.79989)).meters
pt_store.distance(pt_user)
Vincenty: 84.77847691521336
Great_circle: 84.90640111682812 Bem torneado: 110.02637304449682
Fórmula de
Haversine ( http://www.movable-type.co.uk/scripts/latlong.html ): 84.88
Qual deles está certo? Bem torneado ou outros? Além disso, é esperada uma diferença tão grande (~ 22%)? Ou eu estou esquecendo de alguma coisa?
EPSG:3857
- Shapely é a escolha errada aqui. O Web Mercator não é conforme e não deve ser usado para calcular distâncias.E aqui está outro cálculo de distância do GeographicLib :
Eu consideraria o caminho certo, dentro de 15 nanômetros.
fonte