これを高速化するためにPostGISのようなデータベースが行うことは、最初にインデックスと境界ボックスの比較を行うことです。まず、ラインのバウンディングボックスと交差するバウンディングボックスを持つすべてのポリゴンを検索します。あなたの場合の問題は、ラインストリングが長く、関心のない多くのポリゴンと交差する非常に大きなバウンディングボックスを持つことです。
ラインが非常に長い場合は、おそらく、平面関数よりもはるかに複雑で遅い測地関数を使用する必要があります。
物事をスムーズに実行するのはかなり複雑かもしれません。
なぜデータベースに依存したくないのですか?これですべての問題が解決するわけではありませんが、たとえばPostGISには多くの組み込みの最適化があります。必要に応じて、交差点の測地計算もできます。
更新:
私はもう一度あなたの質問を読みましたが、tracフォームのラインストリングではなく、各頂点を使用していることに気付きました。
私はあなたが間違っ
たトラックにいると思います;)頂点ポイント間のエッジがポリゴンと交差するかどうかを確認するために欠落していることと、頂点ポイント間の反復をC実装ではなくPythonに移動しているため。次に、インデックスに問題があります。物事をより速くするためには、ある種の空間インデックスを構築して処理する必要があります。
一方、これだけの作業を独自のコードで実行している場合は、交差テストも実行してみませんか。頂点のポイントを扱っている場合、そのテストはポリゴンテストの単なるポイントです。「多角形のポイント」を表すGoogleといくつかのアルゴリズムがあります。
しかし、私はデータベース主導のアプローチを採用します。これにより、空間インデックスを使用できるようになります。
/ニクラス