Saya memiliki satu set garis yang mewakili jalur bus. Beberapa jalur tumpang tindih dan mengambil jalan yang sama.
Saya dapat mengekstrak node.
Namun saya tertarik mengekstraksi penyeberangan seperti ini:
Bagaimana saya bisa melakukan ini? Saya mencari cara dengan QGIS atau Python.
Saya mencoba metode persimpangan dari GDAL Python tetapi ini pada dasarnya mengembalikan saya hanya simpul.
The Jalur Persimpangan Metode dari QGIS kembali saya penyeberangan jika dua garis silang. Namun dalam kasus bahwa dua jalur bus pergi jauh dari rute mereka di jalan yang sama, itu tidak memberi saya titik di mana mereka bergabung.
Jawaban:
Simpul:
Anda menginginkan dua hal, titik akhir dari polyline (tanpa titik tengah) dan titik persimpangan. Ada masalah tambahan, beberapa titik akhir polyline juga merupakan titik persimpangan:
Solusinya adalah dengan menggunakan Python dan modul Shapely dan Fiona
1) Baca shapefile:
2) Temukan Poin akhir dari garis ( bagaimana cara mendapatkan titik akhir dari polyline? ):
3) Hitung persimpangan (iterasi melalui pasangan geometri di lapisan dengan modul itertools ). Hasil dari beberapa persimpangan adalah MultiPoints dan kami ingin daftar poin:
4) Hilangkan duplikat antara titik akhir dan titik persimpangan (seperti yang Anda lihat pada gambar)
5) Simpan shapefile yang dihasilkan
Hasil akhir:
Segmen garis
Jika Anda ingin juga segmen antara node, Anda perlu "planarize" ( Grafik Planar , tidak ada ujung yang saling bersilangan) shapefile Anda. Ini dapat dilakukan dengan fungsi unary_union dari Shapely
sumber
result = endpts.extend([pt for pt in inters if pt not in endpts])
karena tampaknya.extend
metode memodifikasiendpt
. Dalam kasus sayaresult = None
setelah operasi itu. Iniendpts
yang akhirnya berisi hasil sett