5 votos

Cómo consultar indexado capa vectorial (encontrar puntos cercanos)

Me pueden encontrar cerca de características en una capa con QgsSpatialIndex: Encontrar la línea más cercana a un punto en QGIS? Usando este método, tenemos que alimentar en todas las funciones existentes y realizar una consulta con un punto para llegar de nuevo a la cercana características.

Sin embargo me pregunto ¿qué es indexado capa vectorial, la opción que se puede activar cuando se crea una nueva capa en memoria. Pensé que se llevaría a cabo la indexación de todas las características y daría un mejor rendimiento durante la consulta. Por lo tanto, debe haber una manera para emitir una cercanos consulta en la capa de sí mismo, sin explícitamente inicializar QgsSpatialIndex, o de lo contrario ¿por qué debo activar la opción de índice?

Puedo encender índice en Layer Properties > General > Create spatial index o será activado por defecto, si puedo crear un rasguño temporal de la capa. Me doy cuenta de que mejora la velocidad de procesamiento.

Ahora en mi PyQGIS script, ¿cómo puedo aprovechar el existente índice sin crear un QgsSpatialIndex clase de consulta de entidades cercanas o haciendo cualquier vecino más cercano análisis?

spIndex = QgsSpatialIndex()
for pointFeatures in pointsLayer.getFeatures():
    spIndex.insertFeature(pointFeat)
nearbyPointFeatureIds = spIndex.nearestNeighbor(testPoint, 3)

Mi preocupación es la razón por la que debo crear mi propio índice en la memoria de nuevo en las tres primeras líneas arriba. He perdido que puedo conseguir algo parecido a un QgsVectorLayer.spatialIndex.nearestNeighbor() de la capa de sí mismo?

1voto

Ricardo Reyes Puntos 3428

Primera pregunta es "¿cuál es el formato de sus datos almacenados como'?

Si usted está hablando de una tabla PostGIS, por ejemplo, el índice espacial se utiliza por defecto.

Con respecto a otros formatos de datos, esta pregunta indica que un spatialite espacial se utiliza el índice.

Sí. Lo hace como se desprende de mirar el código fuente para el Proveedor de Datos Spatialite.

Y de que, quiero suponer que si existe un índice, que va a ser utilizado. El QGIS QgsSpatialIndex() función es útil para su uso si el conjunto de datos no tiene un índice.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X