Những gì một cơ sở dữ liệu như PostGIS làm để tăng tốc độ này là trước tiên thực hiện một chỉ mục, so sánh hộp giới hạn. Đầu tiên, nó tìm thấy tất cả các đa giác có các hộp giới hạn xen kẽ với hộp giới hạn của dòng. Vấn đề trong trường hợp của bạn có thể là dòng dõi dài và sẽ có một hộp giới hạn rất lớn giao với nhiều đa giác không đáng quan tâm.
Nếu các dòng quá dài, có lẽ bạn cũng sẽ phải làm việc với các chức năng trắc địa phức tạp và chậm hơn nhiều so với các hàm phẳng.
Nó có thể khá phức tạp để làm cho mọi thứ chạy trơn tru.
Tại sao bạn không muốn dựa vào cơ sở dữ liệu? Điều đó sẽ không giải quyết được tất cả các vấn đề của bạn, nhưng có rất nhiều tối ưu hóa được xây dựng trong PostGIS chẳng hạn. Ở đó bạn cũng có các tính toán trắc địa của giao lộ nếu bạn cần nó.
Cập nhật:
Tôi đọc lại câu hỏi của bạn và nhận ra rằng bạn không sử dụng các biểu mẫu theo dõi mà là từng đỉnh.
Tôi nghĩ rằng bạn đang trên trac sai;)
Cả hai vì bạn đang thiếu để kiểm tra xem các cạnh giữa vertexpoints cắt đa giác và bởi vì bạn đang di chuyển lặp giữa các điểm đỉnh để python thay vì thực hiện một số C mà tôi nghĩ là nhanh hơn nhiều . Sau đó, bạn có vấn đề với các chỉ mục. Để làm cho mọi thứ nhanh hơn, bạn sẽ phải xây dựng và xử lý một số loại chỉ số không gian.
Mặt khác, nếu bạn đang thực hiện phần lớn công việc này trong mã của riêng bạn, tại sao bạn không thực hiện bài kiểm tra giao lộ. Bài kiểm tra đó chỉ là một điểm trong bài kiểm tra đa giác nếu bạn đang xử lý các điểm đỉnh. Google cho "điểm trong đa giác" và bạn sẽ tìm thấy một số thuật toán.
Nhưng, tôi sẽ đi cho một cách tiếp cận hướng cơ sở dữ liệu. Điều đó sẽ cung cấp cho bạn khả năng sử dụng các chỉ mục không gian.
/ Nicklas