4 votos

¿Qué es un algoritmo eficiente para dibujar una línea recta de puntos?

Tengo algunos de la sección transversal de los datos de la encuesta, que es como este:

X Y Z pt_dt
2970969.635 359725.0088 83.4242 1-x
2970968.278 359722.2182 83.2591 1-x
2970941.771 359670.127  83.0655 1-x
2970961.369 359708.6424 83.4785 1-x
2970950.888 359688.048  85.2994 1-x
2970955.084 359696.2922 83.6479 1-x
2970953.47  359693.1165 84.9628 1-x
2970948.813 359683.977  83.1451 1-x
2970931.904 359650.7413 83.1042 1-x

Cuando yo uso la X y la Y para hacer puntos, puedo ver los puntos en el mapa como este: enter image description here

Lo que necesito hacer ahora es conseguir los puntos en orden lineal (es decir, de izquierda a derecha, o de derecha a izquierda), de modo que yo pueda crear una línea 3D, que puede servir como el de la sección Transversal del perfil.

Mi algoritmo actual, es calcular la distancia entre cada par de puntos(Para una determinada sección transversal, el cual está indicado por pt_dt). La pareja, que tiene el máximo de distancia, son los puntos más exteriores. Yo, a continuación, organizar los puntos en función de la distancia desde uno de los puntos más exteriores. He implementado este algoritmo en python, y funciona.

Este algoritmo es O(n2); Mi todo el conjunto de datos se compone de alrededor de 5000 tipo de encuestas, por lo que cualquier complejidad que puedo reducir va a ser beneficioso.

Entonces, ¿hay una manera más eficiente, o el algoritmo para hacer esto?

4voto

Steven Parkes Puntos 625

Teniendo en Comentario de cuenta Andre y por el bien de aprendizaje he modificado de otro usuario respuesta para crear una línea 3D de los datos de la muestra. Espero que o alguien más podría ser útil:

enter image description here


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