Esto debería haber sido un precursor obvio (que no pregunté) a mi otra pregunta: ¿Cómo crear diagramas de araña (líneas de cubo) en PostGIS?
Si no conozco la relación entre un punto en la capa A (tiendas) y un punto en la capa B (clientes), en general me gustaría decir "La tienda más cercana atiende al Cliente 1". Si bien me doy cuenta de que este hecho puede no ser cierto, puede ser un sustituto decente.
Usando PostGIS, cuál es la forma más eficiente de asignar la ID del punto más cercano en la capa A (tiendas) a cada punto en la capa B (clientes). El resultado que estoy buscando es algo como a continuación.
Customer | Store
1 | A
2 | A
3 | B
4 | C
postgis
geoprocessing
business
nearest-neighbor
RyanKDalton
fuente
fuente
Parece que si tiene muchos más clientes que tiendas, entonces podría ser más eficiente crear una capa de polígonos voronoi para las tiendas, luego hacer una unión espacial de clientes contra los polígonos de la tienda.
fuente
Las discusiones sobre algunas soluciones vecinas más cercanas se pueden encontrar aquí: http://www.bostongis.com/?content_name=postgis_nearest_neighbor#120
/ Nicklas
fuente
De http://www.bostongis.com/?content_name=postgis_nearest_neighbor :
Esto encontrará distancias mínimas de hasta 300 unidades. Por lo tanto, primero debe verificar sus datos y averiguar qué tan grandes serán sus distancias mínimas.
fuente
Debe encontrar el par más corto en un cuadro de búsqueda y, si el cuadro no contiene nada, amplíelo. No es bonito pero funciona. Hay un ejemplo de código PL / PgSQL aquí http://trac.osgeo.org/postgis/wiki/UsersWikiNearest
fuente
Gracias por el aporte de todos. Finalmente fui con una combinación de las sugerencias de Eprand y Underdark. El código final que utilicé fue:
Luego creé un diagrama de voronoi en la capa de tiendas para confirmar que los resultados funcionaron correctamente, lo que por supuesto lo hicieron. Gracias por el gran trabajo de todos!
fuente