Estoy buscando ayuda para calcular la distancia entre una secuencia de puntos que están en un solo Shapefile en QGIS. A continuación se muestra cómo se ven mis datos y una columna de distancia en blanco que agregué para mostrar cómo me gustaría que se vea la distancia. Quiero saber la distancia entre el punto 1 y 2, 2 y 3, etc. Me gustaría que la distancia esté en metros o Km, pero actualmente mi Shapefile está en una proyección cuyas unidades son grados decimales.
ID LAT LON TIME DISTANCE
1 10.08527 124.59833 21:24:37 0
2 10.08523 124.59830 21:25:07 ?
3 10.08526 124.59832 21:25:37 ?
4 10.08526 124.59831 21:26:07 ?
Varias personas han formulado preguntas similares, pero ninguna ha entendido lo que quiero hacer. Esta publicación está cerca, pero está en PostGIS, no en QGIS Calcular distancias entre series de puntos en postgis
Esta publicación me consiguió parte del camino, pero como soy nuevo en QGIS, la respuesta no me proporciona suficientes detalles. Por ejemplo, una vez que instalé el complemento GRASS, creo que necesito guardar / importar el Shapefile con mi serie de puntos GPS en GRASS para poder usar el módulo v.distance, pero no sé cómo hacerlo. . QGIS calcula la distancia del punto a lo largo de una línea
¿El módulo GRASS v.distance es el único camino a seguir? ¿O hay una manera más directa? Si v.distance es la única forma en que alguien podría señalarme o explicarme más paso a paso cómo hacerlo.
Respuestas:
Vuelvo a este problema porque es muy similar a ¿Cómo encuentro el rumbo de línea vectorial en QGIS o GRASS? y se puede resolver con Python de la misma manera:
1) distancia de Haversine
Uno puede encontrar muchos scripts buscando en Haversine distancia con Python en Internet y elijo uno de ellos en Haversine Formula en Python (demora y distancia entre dos puntos GPS)
Tenemos una serie de líneas (puntos) en el archivo que deben tratarse en pares (punto1 - punto2) para calcular la distancia. Para esto usaremos un iterador simple de la forma más pitónica para obtener el elemento anterior
Ahora es posible leer el archivo (ejemplo de Kerrie) en pares de líneas / puntos
Luego cree un archivo shape que contenga los campos originales del archivo csv y un nuevo campo para la distancia con los módulos Python Shapely y Fiona de Sean Gillies:
y el resultado:
También es posible hacerlo con PyQGIS, pero es más complejo que Fiona, que utiliza diccionarios simples para crear archivos de forma.
Puede usar otra función para calcular la distancia de Haversine ( ¿Por qué la ley de cosenos es más preferible que la de Haversine al calcular la distancia entre dos puntos de latitud y longitud? ) Sin ningún problema, solo cambia el cálculo de la distancia, no el proceso de creación del shapefile.
fuente
Si está familiarizado con r, intente usar una combinación del paquete 'sp' y 'dismo'.
Por ejemplo así (suponiendo que tenga puntos con coordenadas x, y):
fuente
¿Quizás la herramienta de matriz de distancia podría ayudar? Está debajo del menú Vector. Para cada punto, esto calculará la distancia a cada uno de los otros puntos y almacenará el resultado en un archivo CSV.
Si desea las distancias en metros, creo que tendría sentido transformar sus puntos de lat / lon a un archivo de forma proyectado (posiblemente UTM51 en su caso) antes de usar la herramienta.
NORTE.
fuente
Use v.to.db en GRASS (por ejemplo, a través del complemento Sextante) con option = length (longitud de línea).
Ejemplo de carga de longitudes de línea (en metros) de cada línea de vector a la tabla de atributos (complete los campos correspondientes en la GUI):
v.to.db map=roads option=length type=line col=linelength units=me
fuente
Creo que este problema es más fácil de resolver trabajando en una hoja de cálculo, no use los gis. El trabajo de Chris Veness me pareció muy útil.
http://www.movable-type.co.uk/scripts/latlong.html
Si desplaza el párrafo inferior, encontrará enlaces a dos hojas de Excel, que son;
http://www.movable-type.co.uk/scripts/latlong-distance+bearing.xls
http://www.movable-type.co.uk/scripts/latlong-dest-point.xls
Ver también;
¿Por qué es más preferible la ley de cosenos que la de Haversine cuando se calcula la distancia entre dos puntos de latitud y longitud?
y puedes buscar gis.se para haversine.
salud
fuente