queries near lng lat index geonear geolocalizacion mongodb radians

near - mongodb lat lng



Convertir kilómetros a radianes (4)

Kilómetros a radianes o conversión a distancia y radianes.

Llegué aquí, estaba confundido, luego vi algunos videos de la academia Khan y tenía más sentido en ese momento y luego pude ver ecuaciones de otras fuentes para seguir educándome.

Aquí está mi línea de pensamiento.

  1. Veo un diagrama sobre radianes y primero pienso en el radio desde un punto de geolocalización que es incorrecto .

  2. En cambio, imagina que la tierra se corta perfectamente a la mitad y solo enfoca una de las mitades.

  1. Ahora mira esa mitad hacia ti y mira el diagrama matemático.

  1. Piense que el diagrama matemático se muestra desde el centro de la tierra, midiendo el borde de la tierra según la longitud del arco, después de que toda la tierra esté curvada, de manera que cualquier medición se curvará en la superficie de la tierra.
  2. Los radianes son como grados en un círculo y la longitud del arco es literalmente la distancia entre A y B en el diagrama matemático.
  3. Para ti, es una línea recta a vista de pájaro, pero en realidad es solo una curva en el espacio 3D a lo largo del borde de la tierra.
  4. ¡Eureka! Una bombilla se encendió en mi cabeza.

distance = earth radius / radians

Así con un álgebra muy fácil ...

radians = distance / earth radius

km radians = distance in km / 6371

mi radians = distance in mi / 3959

A veces pensarlo es divertido.

Verifique esto ... https://www.translatorscafe.com/unit-converter/en/length/7-89/kilometer-Earth%E2%80%99s%20equatorial%20radius/

Ahora con respecto a Mongo v3.2 que usa específicamente mongoose en node.js

A pesar de mis mejores esfuerzos, mongo no se comportaría correctamente como se documenta para una consulta $ geoNear en un índice 2d. nunca funcionó

let aggregate = [ { $geoNear: { near: { type: ''Point'', coordinates: lonLatArray }, spherical: false, distanceField: ''dist.calculated'', includeLocs: ''dist.location'', maxDistance: distanceInMeters / (6371 * 1000), query: { mode: ''nearme'', fcmToken: { $exists: true } } } }, { $skip: skip }, { $limit: LIMIT } ];

Sin embargo, cuando cambié a un índice de 2dsphere, funcionó perfectamente.

let aggregate = [ { $geoNear: { near: { type: ''Point'', coordinates: lonLatArray }, spherical: true, distanceField: ''dist.calculated'', includeLocs: ''dist.location'', maxDistance: distanceInMeters, query: { mode: ''nearme'', fcmToken: { $exists: true } } } }, { $skip: skip }, { $limit: LIMIT } ];

Pero la educación nunca parece una pérdida de tiempo.

Necesito convertir kilómetros a radianes. ¿Es esta la fórmula correcta? Necesito radianes para nearsphere en MongoDB.

Si necesito convertir 5 kilómetros a radianes hago esto:

5/6371

Y obtengo este resultado (parece correcto):

0.000784806153

ACTUALIZAR

Este no es un problema de matemáticas, realmente necesito saber si estoy haciendo los cálculos correctos de kilómetros a radianes para poder realizar consultas geoespaciales con MongoDB.


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

Nota: 1 KM = 0.621371 Milla

Aquí hay algunas fórmulas simples para el cálculo:

100 KM a Millas: (100 * 0.621371)

100 KM a radiante: 100 / 6378.1

100 millas a radiante: 100 / 3963.2

Entonces, si tiene datos en Kilómetros, entonces debe usar (100 / 6378.1) y para los datos de Millas que puede usar (100 / 3963.2)


Estás en lo correcto. En geometría esférica divides la distancia con el radio de la esfera. Ten en cuenta que debes mantener las unidades. Entonces, si calculas el radio de la esfera en kilómetros, deberías usar la distancia en kilómetros. Si usa millas, entonces debe usar el radio de la Tierra en millas (aproximadamente: 3,963.2).


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 distancia.
radianes a la distancia : multiplique la medida de radianes por el radio de la esfera (por ejemplo, la Tierra) en el sistema de unidades al que desea convertir la distancia.

Por ejemplo : si quieres convertir 5 millas en radianes, necesitamos dividir la distancia (5 millas) por el radio de la esfera (también en millas), que es 3959. entonces 5/3959 es 0.0012629451 ...

Gracias