Tengo un shapefile de puntos y otro de polígonos. Me gustaría seleccionar todos los polígonos que tienen al menos un punto en ellos.
El problema con el que me encuentro es el tiempo que lleva esto. Tengo 1 millón de puntos y unos 320.000 polígonos, por lo que utilizar la consulta espacial lleva demasiado tiempo. He oído que tendría que escribir un script en Python con indexación espacial para obtener un resultado factiblemente rápido, pero no tengo ni idea de cómo abordar esto.
No me importa que sea un poco inexacto si corre mucho más rápido.
Lo que he tratado de improvisar a partir de otras preguntas de stack overflow es:
pointProvider = self.pointLayer.dataProvider()
all_point = pointProvider.getFeatures()
delta = 0.1
for point in all_point:
searchRectangle = QgsRectangle(point.x() - delta, point.y() - delta, point.x() + delta, point.y() + delta)
candidateIDs = line_index.intesects(searchRectangle)
for candidateID in candidateIDs:
candFeature == rotateProvider.getFeatures(QgsFeatureRequest(candidateID)).next()
if candFeature.geometry().contains(point):
break
Esto arroja un NameError:
el nombre 'self' no está definido