Hay un número de maneras de acercarse a este y varios listo para ir a los módulos de python a tu disposición. Sin embargo, yo directamente no se puede comentar en el Qgis llamadas pero estoy seguro de que la mayoría si no todos de estos procesos y documentos en la API: http://docs.qgis.org/1.8/html/en/docs/user_manual/index.html
Va en el orden de sus peticiones:
> la división de todas las líneas en las intersecciones
Usted puede probar primero a ver que las líneas se cruzan y, a continuación, encontrar los puntos de intersección entre dos líneas.
Hay un excelente ejemplo de cómo hacer esto en python en compiledreams.com:
Parte 1) Pruebas para la línea de intersección
Parte 2) Encontrar el punto de intersección
Alternativamente, usted puede utilizar el módulo de python bien formada, que ofrece un sólido conjunto de relaciones geométricas métodos, incluida la intersección. Fiona también fue escrito para trabajar muy bien con bien formada y puede proporcionar un medio de la estructura de datos de traducción (suponiendo que usted va a utilizar un amistoso GDAL/ORG formato)
Qgis ofrece capacidades similares, pero dependiendo del tamaño del conjunto de datos podría ser bastante tiempo.
> eliminación de segmentos idénticos (con algunos espacial de tolerancia)
No estoy seguro de donde usted estaría consiguiendo segmentos idénticos, ya que son esencialmente de romper una línea característica en el punto y hacer que lo que fue uno de los dos separar las funciones de línea.
> crear puntos al final de cada nuevo segmento de línea
Así que si partimos de una línea de a = [(2,0),(2,1),(2,2),(2,3)]
en el punto de intersección de la línea de b = [(0,2),(1,2),(2,2),(3,2)]
obtendríamos a1 = [(2,0),(2,1),(2,2)]
y a2 = [(2,2),(2,3)]
de retorno. No hay duplicados de las geometrías y los puntos finales de las líneas sería el primer y último vértice en la matriz. Así que para a1 habría estaciones e1 = (2,0) y e2 = (2,2).
>búfer fin de la línea, y contar el número de puntos cerca de/en cada línea
Así que de nuevo bien formada ofrece un método muy fácil para hacer esto por cualquier número de unidades que usted elija (mismas unidades que los datos de entrada).
Alternativamente, se podría definir un radio alrededor de cada punto y crear una entidad poligonal que actúa como tampón. [Voy a renunciar a escribir el algoritmo aquí porque me cabe duda de que esto es lo que realmente quieres hacer].
A continuación, habría que probar para ver los puntos que caen dentro del búfer de polígono, manteniendo un simple recuento.
Similar a la prueba de si las líneas se cruzan ejemplo anterior, usted puede comprobar si un punto está dentro de un polígono utilizando un algoritmo como el que se definen aquí:
http://www.ariel.com.au/a/python-point-int-poly.html
Sin embargo, puede simplemente encontrar todos los puntos de intersección dentro de una cierta distancia de cualquier intersección con algunos umbral de distancia. Esto también le ahorra la necesidad de crear búfer de polígonos y la realización de diversas pruebas.
Sin saber mucho acerca de su objetivo final, usted también puede tratar de la red de polilíneas igual que por medio de un tratamiento como un gráfico de la red. Esto podría simplificar el proceso mediante Networkx, que también permite la lectura en los shapefiles. Aunque las relaciones topológicas entre las características de línea debe ser exacta ya (lo que significa tener ya rompió las líneas en los puntos de intersección). El recuento de las intersecciones es entonces sólo una cuestión de cálculo de la red de estadística de "grado", que a su vez es una simple llamada de método en Networkx.