5 votos

Devolución de varios vecinos más próximos

Estoy tratando de replicar un análisis de vecino más cercano que devuelve X (uno O más de uno) vecinos en QGIS o PyQGIS.

Por ejemplo: enter image description here

En este resultado, tengo un conjunto de ubicaciones (estrellas rojas) que se conectan a los centros de destino (círculos azules) mediante el análisis del vecino más próximo (líneas rosas). Lo que me gustaría es encontrar el segundo, tercer, cuarto, etc. vecino más cercano de mi conjunto de ubicaciones para relacionarlas con los nodos.

Hay muchos métodos disponibles para realizar esto en PostGIS y en ArcGIS/ArcPy pero parece que no hay un método explícito para devolver más de un vecino usando Distance to Hubs o el plugin NNJoin.

Idealmente, el mejor método estaría basado en PyQGIS/Python o sería fácilmente replicable a través de la interfaz del modelador de QGIS.

Algunos otros ejemplos de la red:

¿Cómo obtener el segundo vecino más cercano entre dos patrones de puntos en R?

Búsqueda por vecindad más próxima indexada en PostGIS

0 votos

Intento aclararlo más añadiendo capturas de pantalla y ejemplos. No estoy seguro de lo que no está claro.

2 votos

¿Ha probado a utilizar la función Matriz de distancias ¿herramienta? Calcula las distancias de cada punto a cada otro punto y lo guarda en un archivo .csv. A continuación, puedes ordenarlo con un programa de hojas de cálculo o con el programa Estadísticas de grupo plugin para encontrar x número de vecinos más cercanos.

3voto

EmilyJ Puntos 227

Después de Joseph la respuesta está en realizar un cálculo de la matriz de distancias utilizando la función Algoritmo PyQGIS diseñado para ello. A partir de aquí puede determinar los vecinos más próximos K y devolver una tabla de resultados. Exactamente lo que necesitaba para mis propósitos.

1voto

matzeri Puntos 176

La herramienta que busca se ha introducido en QGIS 3.8: join attributes by nearest . Se puede encontrar en la caja de herramientas de procesamiento.

enter image description here

Une una capa con los atributos del x vecino más cercano y añade la distancia así como las coordenadas. Las características de las capas de entrada se duplicarán x veces.


Si desea conectarlos adicionalmente por líneas después, podría hacerlo por ejemplo con geometry by expression en la capa recién unida, así:

make_line($geometry, geometry(get_feature_by_id('LayerName Of InputLayer2 From JoinByNearest',"JoinedIdFieldName")))

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