Bagaimana cara mengubah garis shapefile menjadi CSV dengan node dan tautan?

12

Apakah ada cara untuk mengubah linear shapefile menjadi file CSV dengan format berikut:

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

Saya telah melihat GDAL / OGR2OGR dan PostGIS dan saya tidak berpikir baik mengubah data ke format yang saya inginkan.

Saya tidak keberatan menulis naskah untuk melakukannya, jika saya dibimbing ke arah yang benar.

dassouki
sumber
Dalam contoh Anda, Node_1, Node_2 adalah koordinat sebenarnya dari fitur Anda, bukan? Maksud saya, dari contoh Anda, saya benar-benar akan berasumsi bahwa Anda ingin mengekspor topologi dari shapefile; seperti pada Node_1 adalah FNODE Anda, Node_2 adalah TNODE Anda dan geometri disimpan hanya sekali. Jika demikian, jawabannya sangat berbeda dan Anda akan memerlukan sesuatu selain OGR untuk membangun topologi.
Ragi Yaser Burhum
@ rburhum saya ingin mengimplementasikan tabel saya dalam algoritma jaringan klasik. Formatnya biasanya, simpul 1 ke simpul 2 dengan biaya X
dassouki

Jawaban:

8

Program utilitas yang termasuk dalam OGR (OGR2OGR) tidak akan melakukan ini secara langsung, tetapi akan sangat mudah untuk menggunakan OGR untuk mencapai ini.

Anda perlu menulis skrip / program dalam bahasa apa pun yang didukung oleh OGR. Anda bisa membuatnya membuka shapefile, membaca setiap fitur, dan menuliskan poin + data dalam format CSV.

The C sampel ++ kode pada Wiki sebenarnya menunjukkan hampir setiap OGR API panggilan diperlukan untuk ini.

Reed Copsey
sumber
Terima kasih atas tanggapan cepatnya. Saya sedang melihat contoh python pertama gdal.org/ogr/ogr%5Fapitut.html , yang dihasilkan dari file SHP ke CSV. Contohnya dilakukan untuk layer titik, apakah ada perbedaan yang signifikan untuk mengubahnya menjadi layer garis? Apa yang akan menjadi format nama Node? Apakah itu angka? Bisakah saya menautkannya ke lapisan titik lain yang memiliki semua nama simpul di dalamnya?
dassouki
Dalam satu baris, fitur-fiturnya adalah ogr.wkbLine dan bukan ogr.wkbPoint. Anda dapat mengembalikan nama sebagai string menggunakan fitur.GetFieldAsString (col). Tidak ada cara untuk menangani "menautkan 'langsung di OGR, jadi Anda harus membuka tabel data lain dan mencarinya sendiri, atau menyalin nama-nama itu di dalam GIS terlebih dahulu.
Reed Copsey
Itu masuk akal; baik saya akan mencobanya dan membuat Anda diperbarui tentang bagaimana saya tahu. Saya melakukan semua ini sehingga saya dapat melakukan beberapa analisis jaringan pada lapisan garis.
dassouki