Apa yang dilakukan database seperti PostGIS untuk mempercepat ini adalah pertama-tama melakukan indeks, membandingkan kotak. Pertama-tama ia menemukan semua poligon yang memiliki kotak pengikat saling berhubungan dengan kotak pengikat garis. Masalah dalam kasus Anda mungkin adalah linestring yang panjang dan akan memiliki kotak pembatas yang sangat besar memotong banyak poligon yang tidak menarik.
Jika garis sangat panjang Anda mungkin harus bekerja dengan fungsi geodetik yang jauh lebih kompleks dan lambat daripada fungsi planar.
Mungkin cukup rumit untuk membuat segalanya berjalan mulus.
Mengapa Anda tidak ingin mengandalkan database? Itu tidak akan menyelesaikan semua masalah Anda, tetapi ada banyak optimisasi bawaan di PostGIS misalnya. Di sana Anda juga memiliki perhitungan geodetik persimpangan jika Anda membutuhkannya.
Pembaruan:
Saya membaca pertanyaan Anda lagi dan menyadari bahwa Anda tidak menggunakan linestring bentuk trac tetapi setiap titik.
Saya pikir Anda berada di trac yang salah;)
Keduanya karena Anda tidak memeriksa untuk memeriksa apakah ujung antara titik sudut memotong poligon dan karena Anda memindahkan iterasi antara titik titik ke python daripada beberapa implementasi C yang menurut saya jauh lebih cepat . Maka Anda memiliki masalah dengan indeks. Untuk membuat segalanya lebih cepat, Anda harus membangun dan menangani semacam indeks spasial.
Di sisi lain, jika Anda melakukan banyak pekerjaan dalam kode Anda sendiri, mengapa Anda tidak melakukan tes persimpangan juga. Tes itu hanya titik dalam tes poligon jika Anda berurusan dengan titik titik. Google untuk "titik dalam poligon" dan Anda akan menemukan beberapa algoritma.
Tapi, saya akan menggunakan pendekatan berbasis data. Itu akan memberi Anda kemungkinan untuk menggunakan indeks spasial.
/ Nicklas