Tengo una lista que contiene más de 100,000 puntos en formato lat / long que he importado a qgis.
Ahora, lo que estoy tratando de hacer aquí es agrupar todos estos puntos en grupos de cuadros y con eso quiero decir que quiero dividir el mapa en cuadros delimitadores.
Mis requisitos son los siguientes:
- ningún grupo en caja debe tener MENOS DE 100 y NO MÁS DE 200 puntos
- ningún punto debe ubicarse en más de un grupo
- todos los puntos deben basarse en su vecino más cercano
¿Cómo podría lograr esto a través de qgis?
Supongo que se puede pasar un código de consulta personalizado y guardar los resultados o los cuadros creados como un archivo de forma ¿correcto? ¿Podría alguien explicar cómo se podría hacer esto y cómo se vería el código?
Como se mencionó, mi objetivo es mostrar un montón de cuadros cuadrados como una capa de archivo de forma donde dentro de cada cuadro hay no menos de 100 propiedades y no más de 200.
Respuestas:
Puedo conseguirle parte del camino suponiendo que ha descubierto cómo solicitar (a) la mitad más oriental de un conjunto de puntos y (b) la mitad más septentrional de un conjunto de puntos. De estos puede, por supuesto, obtener fácilmente (c) la mitad más occidental o (d) la mitad más meridional. (No sé QGIS, pero una forma de hacer (a) en general es solicitar la coordenada x mediana y luego buscar todos los puntos cuyas coordenadas x exceden eso. Las soluciones para (b) - (d) son similares .)
Usando esta capacidad, la solución se obtiene con una recursión fácil. Para describirlo, supongamos que hay un procedimiento
Half
, que implementa las operaciones anteriores, que toma dos argumentos: el primero es un conjunto de puntos y el segundo es un código igual atrue
cuando se desea la partición este-oeste e igual a lofalse
contrario. Devuelve dos subconjuntos de su entrada que lo particionan según lo solicitado.En este pseudocódigo, R y S partición P; Box (R,! I, n) es una partición de R en la dirección ortogonal , Box (S,! I, n) es una partición de S en la dirección ortogonal, "+" significa formar la unión de la teoría de conjuntos, y {} designa un conjunto. (Al alternar la dirección de división, se crean cuadros en lugar de tiras). El parámetro n especifica el tamaño mínimo de un grupo en la partición; El tamaño máximo es 2 n .
Aquí, como ilustración, hay un conjunto P de 12,891 puntos aleatorios divididos
Box(P,true,100)
en grupos de tamaño entre 100 y 200. El algoritmo crea 128 cajas de las cuales 37 tienen 100 puntos y 91 tienen 101 puntos.fuente