Bagaimana Menyederhanakan Topologi Jaringan Pengawetan?

9

Saya memiliki Shapefile (terdiri dari jalan-jalan utama Eropa) dengan sekitar 250.000 Segmen yang harus saya sederhanakan untuk pgrouting. Tapi sepertinya saya tidak bisa menemukan cara untuk melakukannya dengan benar.

Seperti inilah tampilannya:

http://i.stack.imgur.com/qJ2OJ.png

dan seperti inilah seharusnya:

http://i.stack.imgur.com/FN4Z6.png

Saya entah bagaimana harus menghapus setiap Point of the Lines yang terhubung ke kurang dari 3 Lines (bukan persimpangan) sambil menjaga koneksi topologi antara poin yang tersisa. Jika ada yang punya ide, itu akan sangat dihargai!

salam Hormat

EDIT: Saya mencoba menerapkan gagasan @dkastl dan berhasil mendapatkan hanya simpul yang tidak perlu (node ​​dengan hanya 2 linestrings yang berdekatan) dari jaringan saya dengan kode di bawah ini (pembuatan jaringan diambil dari blog underdark http://underdark.wordpress.com / 2011/02/07 / a-beginners-guide-to-pgrouting / ):

SELECT * FROM
   (SELECT tmp.id as gid, node.the_geom FROM 
     (SELECT id, count(*) FROM network 
     JOIN node 
     ON (start_id = id OR end_id = id) AND (end_id = id OR start_id = id)
     GROUP BY id ORDER BY id) as tmp
   JOIN node ON (tmp.id = node.id)
   WHERE tmp.count = 2) as unn_node;

Jadi, yang harus saya lakukan sekarang adalah menggabungkan garis. Namun, saya tidak tahu caranya. Saya membayangkan itu harus menjadi sebuah loop yang untuk setiap baris hasil kueri di atas mendapat garis yang berdekatan dan menggabungkannya. Maka itu akan membangun kembali jaringan sepenuhnya dan ulangi proses sampai permintaan di atas mengembalikan hasil kosong.

chriserik
sumber
1
Mengapa Anda harus melakukan ini untuk pgRouting? Jika Anda sudah memiliki ID sumber / target yang ditetapkan, Anda dapat membuat geometri baru dengan linestrings hanya berisi ID sumber dan target. Seharusnya terlihat seperti gambar kedua Anda.
dkastl
Masalahnya adalah bahwa garis-garis tersegmentasi (jika Anda melihat gambar pertama yang saya posting, setiap titik yang Anda lihat memulai / mengakhiri segmen baru), pendekatan Anda menyederhanakan geometri (yang baik) tetapi bukan topologi.
chriserik
1
Saya tidak berpikir itu jelas dari gambar Anda bahwa setiap titik memulai geometri linestring baru. Apakah Anda sudah menjalankan fungsi assign_vertex_id dari pgRouting untuk mengisi kolom sumber / target? Jika demikian, Anda nanti dapat melakukan beberapa kueri untuk mengidentifikasi ID sumber / target yang hanya ada dua kali, yang berarti bahwa Anda harus dapat menggabungkan dua segmen garis pada titik ini. Dalam hal sumber / target ID ada lebih dari dua kali itu harus persimpangan.
dkastl
@dkastl: Ide yang sangat bagus! Saya memperbarui pertanyaan saya yang menunjukkan seberapa jauh saya mendapatkannya.
chriserik

Jawaban: