Skip to content

Latest commit

 

History

History
45 lines (25 loc) · 2.65 KB

calcular-la-distancia-usando-geometria-esferica.md

File metadata and controls

45 lines (25 loc) · 2.65 KB

Calcular la distancia usando geometría esférica

ADVERTENCIA

Para consultas esféricas, use el 2dsphereresultado del índice.

El uso de 2díndice para consultas esféricas puede conducir a resultados incorrectos, como el uso del 2díndice para consultas esféricas que envuelven los polos.

El 2díndice admite consultas que calculan distancias en un plano euclidiano (superficie plana). El índice también admite los siguientes operadores de consulta y comandos que calculan distancias utilizando geometría esférica:NOTA

Si bien el 2díndice admite consultas básicas que utilizan la distancia esférica , considere pasar a un 2dsphereíndice si sus datos son principalmente longitud y latitud.

IMPORTANTE

Las operaciones mencionadas utilizan radianes para la distancia. Otros operadores de consulta esférica no lo hacen, como $geoWithin.

Para que los operadores de consultas esféricas funcionen correctamente, debe convertir distancias a radianes y convertir de radianes a las unidades de distancia utilizadas por su aplicación.

Para convertir:

  • distancia a radianes : divida la distancia por el radio de la esfera (por ejemplo, la Tierra) en las mismas unidades que la medida de la distancia.
  • radianes a distancia : multiplique la medida en radianes por el radio de la esfera (por ejemplo, la Tierra) en el sistema de unidades al que desea convertir la distancia.

El radio ecuatorial de la Tierra es de aproximadamente 3,963.2 millas o 6,378.1kilómetros.

La siguiente consulta devolvería documentos de la places colección dentro del círculo descrito por el centro [ -74, 40.74 ] con un radio de 100millas:

db.places.find( { loc: { $geoWithin: { $centerSphere: [ [ -74, 40.74 ] ,                                                     100 / 3963.2 ] } } } )

NOTA

Si especifica las coordenadas de latitud y longitud, enumere primero la longitud y luego la latitud :

  • Los valores de longitud válidos están entre -180y 180, ambos inclusive.
  • Los valores de latitud válidos están entre -90y 90, ambos inclusive.