4 votos

¿Cuál es la distancia real entre las posiciones?

Estoy tratando de averiguar lo que me da la distancia más precisa entre las posiciones:

  • Medición directa de la distancia (mediante Geod.inv )?
  • ¿Medir la distancia en 2D (después de transformar a un sistema de referencia de coordenadas proyectado conocido)?

Estoy tratando de proyectar las posiciones de latitud/longitud a 2D porque es más fácil trabajar con ellas de esa manera, estoy tratando de trabajar con precisión centimétrica.

Como comprobación de cordura hice algunas pruebas para comprobar si se conservaba la distancia entre posiciones.

He aquí un dato interesante (nota: en realidad estoy utilizando la biblioteca DotSpatial pero he rehecho este ejemplo en pyproj porque es una herramienta más conocida):

Medir la distancia "directamente" (utilizando geod.inv ):

>>> from pyproj import Geod
>>> wgs84_geod = Geod(ellps='WGS84')
>>> lat1, lon1 = (27.23150120120691, -91.522575364888709) # somewhere in the gulf of mexico
>>> lat2, lon2 = (27.239416154284083, -91.520817319790083) # near lat1, lon1
>>> az12,az21,dist = wgs84_geod.inv(lon1,lat1,lon2,lat2)
>>> dist
894.1531771043997

Medición de la distancia en 2D (después de la proyección):

>>> from pyproj import Proj
>>> wgs84 = Proj('+proj=longlat +datum=WGS84 +no_defs') # http://epsg.io/4326
>>> nad27Blm15n = Proj('+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.001016002 +y_0=0 +datum=NAD27 +no_defs') # http://epsg.io/32065 but in meters
>>> from pyproj import transform
>>> p1_projected = transform(wgs84, nad27Blm15n, lon1, lat1)
>>> p2_projected = transform(wgs84, nad27Blm15n, lon2, lat2)
>>> p1_projected
(646301.4612381, 3012741.116573205)
>>> p2_projected
(646465.2249033558, 3013620.015186602)
>>> import math
>>> math.sqrt((p1_projected[0] - p2_projected[0])**2 + (p1_projected[1] - p2_projected[1])**2)
894.0253411891856

Así que, estoy recibiendo 894.1531771043997 y 894.0253411891856 respectivamente que tienen alrededor de 0.128 metros de diferencia.

¿Cuál es la distancia más correcta? ¿Por qué?

(nota: también tengo ejemplos en los que las diferencias son > 1m, pero sólo cuando las distancias son > 2km).

2voto

Zoltan Puntos 284

Todas las proyecciones cambian las distancias, las proyecciones pueden conservar los ángulos o las áreas solamente. Si la distorsión causada por la proyección es inferior a 10 cm/km se considera una proyección muy buena. La distancia real es muy hipotética, si se mide la distancia de la pendiente entre dos puntos, la distancia de la pendiente se reducirá al plano horizontal, luego al nivel del mar y finalmente al plano de proyección para mostrarlo en el mapa. Así pues, tenemos la distancia de la pendiente, la distancia horizontal, la distancia del nivel del mar y la distancia en el plano de proyección. ¿Cuál sería la más correcta?

geod.inv da la distancia del nivel de vista, el sqrt(..) da la distancia en el plano de proyección. Cuanto mayor sea la distancia, mayor será la diferencia.

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