¿Cómo convertir una línea shapefile en un CSV con nodos y enlaces?

12

¿Hay alguna manera de convertir un archivo de forma lineal en un archivo CSV con el siguiente formato:

Node_1, Node_2, attribute_1, ...., attribute_x
     1       2       "hello"        567845.334

He mirado GDAL / OGR2OGR y PostGIS y no creo que ninguno convierta los datos al formato que quiero.

No me importa escribir un guión para hacerlo, si me guían en la dirección correcta.

Dassouki
fuente
En su ejemplo, Nodo_1, Nodo_2 son las coordenadas reales de su entidad, ¿verdad? Quiero decir, a partir de su ejemplo, supondría que desea exportar la topología desde el archivo de forma; como en el Nodo_1 es su FNODE, el Nodo_2 es ​​su TNODE y la geometría se almacena solo una vez. Si es así, la respuesta es muy diferente y necesitará algo además de OGR para construir la topología.
Ragi Yaser Burhum
@rburhum quiero implementar mi tabla en un algoritmo de red clásico. El formato suele ser, nodo 1 a nodo 2 con un costo de X
dassouki

Respuestas:

8

Los programas de utilidad incluidos en OGR (OGR2OGR) no lo harán directamente, pero será muy fácil usar OGR para lograrlo.

Debería escribir un script / programa en cualquiera de los idiomas admitidos por OGR. Podrías simplemente abrir el archivo de forma, leer cada característica y escribir los puntos + datos en formato CSV.

El código C ++ de muestra en el Wiki en realidad muestra casi todas las llamadas a la API de OGR requeridas para esto.

Reed Copsey
fuente
Gracias por la rápida respuesta. Estoy mirando gdal.org/ogr/ogr%5Fapitut.html primer ejemplo de Python, que sale de un archivo SHP a CSV. El ejemplo se hace para una capa de puntos, ¿hay alguna diferencia significativa para convertirlo en una capa de línea? ¿Cuál sería el formato del nombre del nodo? ¿Será un número? ¿Puedo vincularlo a otra capa de puntos que tenga todos los nombres de nodo?
dassouki el
En una línea, las características serán ogr.wkbLine en lugar de ogr.wkbPoint. Puede devolver el nombre como una cadena usando feature.GetFieldAsString (col). No hay forma de manejar "vinculación" directamente en OGR, por lo que tendría que abrir la otra tabla de datos y buscarla usted mismo, o copiar primero los nombres en GIS.
Reed Copsey
Eso tiene sentido; bueno, lo probaré y te mantendré informado sobre cómo me desenvuelvo. Estoy haciendo todo esto para poder hacer un análisis de red en una capa de línea.
dassouki