Lo que una base de datos como PostGIS hace a la velocidad de este es en primer lugar hacer un índice, cuadro delimitador comparar. Se busca en primer lugar todos los polígonos que tienen las cajas de contorno interersecting con el cuadro delimitador de la línea. El problema en tu caso, podría ser que la cadena de línea es larga y va a tener un gran cuadro delimitador de intersección de muchos polígonos que no es de ningún interés.
Si las líneas son muy largas probablemente también a trabajar con geodésico funciones que es mucho más complejo y lento que planar funciones.
Podría ser bastante complejo para que las cosas funcionen suave.
¿Por qué no quieren depender de una base de datos? Que no va a resolver todos sus problemas, pero hay un montón de optimizaciones en PostGIS, por ejemplo. Allí también tienes la geodésico cálculos de intersección si la necesita.
Actualización:
He leído tu pregunta de nuevo y se dio cuenta de que no está utilizando el linestring el trac formas, pero cada vértice.
Creo que usted está en el mal trac ;)
Tanto porque le falta para comprobar si el borde entre la vertexpoints cruza el polígono y porque se mueven de la iteración entre los vértices los puntos a python en lugar de algunos implementación en C que creo que es mucho más rápido. Entonces usted tiene ese problema con los índices. Para hacer las cosas más rápido, usted tendrá que construir y manejar algún tipo de índice espacial.
En el otro lado, si usted está haciendo esto mucho de la obra en su propio código, ¿por qué no hacer la intersección de la prueba. Esa prueba es sólo un punto en el polígono de la prueba, si se trata de los puntos de vértice. Google por "punto en el polígono" y usted encontrará varios algoritmos.
Pero, yo iría a por un enfoque basado en la base de datos. Que le dará las posibilidades de uso de los índices espaciales.
/Nicklas