1 votos

encontrar latlngs que estén a una distancia x de un punto al sur al norte al este al oeste

Tengo una latlng quiero encontrar cuatro puntos con igual distancia de esta latlangs en todas las direcciones este, oeste, sur y norte ¿hay alguna fórmula .

Estoy tratando de construir polígonos alrededor de autopistas para dibujar un polígono alrededor de una línea de polígono y que la distancia sea inferior a 1 km.

1voto

cjstehno Puntos 131

Antecedentes

A estos efectos, se supone que la Tierra tiene la forma de un elipsoide oblato de revolución alrededor de su eje. El eje mayor, a es el radio de la Tierra en su ecuador. El eje menor, b es el radio de la Tierra en cualquiera de los polos. El excentricidad al cuadrado (que mide la "cuadratura") de esta elipse es e^2 = 1 - (b/a)^2.

Para fórmulas más sencillas pero aproximadas, podemos ignorar la excentricidad y tomar la tierra como una esfera perfecta. En las fórmulas que siguen, fijamos e^2 = 0 y a \= b \= (2a+b)/3, que escribiré como R . (La justificación de esto se encuentra en ¿Cuál es la precisión de la aproximación a la Tierra como esfera? .)

Fórmulas

Las distancias este-oeste se encuentran a lo largo de un paralelo de latitud, que es un círculo perfecto. En la latitud geodésica f el radio de este círculo es

r = a * cos(f) / sqrt(1 - e^2 sin(f)^2).

(La aproximación esférica es r = R * cos(f)). Por lo tanto, una distancia x en la dirección este-oeste corresponde a un ángulo de

dl = x / r

radianes. Convierte eso a grados (o grados o lo que prefieras para medir la longitud) y añade ese valor a la longitud (para una dirección este) o réstalo (para una dirección oeste).

El trazado de las distancias en dirección norte-sur requiere cálculo de integrales elípticas . Sin embargo, para las distancias muy cortas contempladas en esta pregunta (apenas unos kilómetros, o menos de 0,001 veces a ), podemos suponer que el meridiano es aproximadamente circular. El mejor círculo de aproximación ("círculo osculante") tiene un radio

s = a * (1 - e^2) / sqrt(1 - e^2 * sin(f)^2)^3.

(La aproximación esférica es s \= R .)

Por lo tanto, una distancia y en la dirección norte-sur corresponde a un ángulo de

df = y / s

radianes. Suma ese valor a la latitud (para una dirección norte) o réstalo (para una dirección sur). Si el resultado te lleva a un polo, tendrás que restarlo a Pi radianes (o 180 grados o lo que sea) y sumar o restar Pi radianes (180 grados) a la longitud.

Nota de advertencia

Los puntos este-oeste son en realidad más cerca al punto original de lo que se podría pensar. Esto se debe a que la distancia deseada se establece a lo largo de un círculo de latitud en lugar de una línea recta. Por ejemplo, un punto situado a 10.000 kilómetros al este de un lugar situado a 40 grados de latitud se encuentra a sólo 9.100 kilómetros de distancia. Estas diferencias son intrascendentes para distancias cortas (menos de unos 1.000 kilómetros).

Datos

En el Sistema Geodésico Mundial el eje mayor tiene una longitud a \= 6378137 metros, eje menor b \= 6356752,3142 metros, y el aplanamiento inverso f \= 1/298.257223563. Esto equivale a una excentricidad al cuadrado e^2 \= 0.00669438000426. (Estos valores están conectados por e^2 \= 1 - (b/a)^2 = 2f - f^2.)

Ejemplo de trabajo

Consideremos la ubicación en (39,9522° N, 75,1642° W). Encontraremos cuatro puntos que se encuentran exactamente a un kilómetro de distancia en las direcciones este, oeste, norte y sur. Primero calculemos

sin(f) = sin(39.9522°) = 0.642148
sqrt(1 - e^2 sin(f)^2) = sqrt(1 - 0.00669438000426 * 0.642148^2) = 0.998619

Introduciendo estos datos en las ecuaciones se obtiene

r = 4,896,117.456 meters
s = 6,361,763.203 meters

(Estos valores son demasiado preciso para esta aplicación cuyas coordenadas se dan sólo con seis cifras significativas: la precisión extra ayudará a la hora de comprobar una implementación de software). Los desplazamientos son

dl = 1000 / r = 0.0002042434662 radian = 0.0117023 degree
df = 1000 / s = 0.0001571891264 radian = 0.00900627 degree

Esto sitúa los cuatro puntos en

(39.9522000, 75.1759023), (39.9522000, 75.1524977)  (east and west)
(39.9612063, 75.1642000), (39.9431937, 75.1642000)  (north and south).

En la aproximación esférica, los cuatro puntos son

(39.9522000, 75.1759316), (39.9522000, 75.1524684)  (east and west)
(39.9611601, 75.1642000), (39.9432399, 75.1642000)  (north and south).

Las ubicaciones aproximadas son 2,5 metros de más en las direcciones este-oeste y 1,45 metros de más en las direcciones norte-sur. Este es un nivel de error típico (es aproximadamente el tamaño del aplanamiento, que es de alrededor de una parte por 300, o 3,3 metros de 1000 metros). Cuando este error es aceptable, las fórmulas esféricas más sencillas están bien; de lo contrario, se necesitan las fórmulas elipsoidales.

Limitaciones

Los resultados este-oeste del elipsoide son completamente precisos, pero los resultados norte-sur dependen de la aproximación de un meridiano elíptico por un círculo. La precisión de los resultados se reducirá en las distancias más largas, pero seguirán siendo bastante buenos hasta unos pocos miles de kilómetros. Por ejemplo, para seguir con el ejemplo, el punto que la fórmula sitúa a mil kilómetros al norte está en realidad a 1.000,79 kilómetros, un error de menos de una parte entre 1.200.

0voto

GSree Puntos 161

Aquí hay una solución en Octave o MATLAB. Requiere Paquete MATLAB 39108 .

octave:1> format long
octave:2> \[lat, lon\] = geodreckon(39.9522, -75.1642, 1000, 90\*\[0:3\]);
octave:3> \[lat; lon\]'
ans =
   39.9612062665079  -75.1642000000000
   39.9521994093929  -75.1524977114628
   39.9431937194577  -75.1642000000000
   39.9521994093929  -75.1759022885372

Esto calcula los 4 puntos a 1 km al NESW de (39.9522°N, 75.1642°W). Los resultados son esencialmente exactos. Nótese que los puntos siguen geodésicas desde el punto de partida, de modo que los puntos EW terminan en una latitud ligeramente inferior.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X