Isso deveria ter sido um precursor óbvio (que eu não perguntei) para minha outra pergunta: Como criar diagramas de aranha (linhas de cubo) no PostGIS?
Se eu não souber a relação entre um ponto na camada A (lojas) e um ponto na camada B (clientes), gostaria de dizer geralmente "O cliente 1 é atendido pela loja mais próxima". Embora eu saiba que esse fato pode não ser verdade, pode ser um substituto decente.
Usando o PostGIS, qual é a maneira mais eficiente de atribuir o ID do ponto mais próximo na camada A (lojas) a cada ponto na camada B (clientes). A saída que estou procurando é algo como abaixo.
Customer | Store
1 | A
2 | A
3 | B
4 | C
postgis
geoprocessing
business
nearest-neighbor
RyanKDalton
fonte
fonte
Parece que se você tem muito mais clientes do que as lojas, pode ser mais eficiente criar uma camada de polígonos voronoi para as lojas e fazer uma junção espacial de clientes contra os polígonos da loja.
fonte
Discussões sobre algumas soluções básicas para vizinhos mais próximos podem ser encontradas aqui: http://www.bostongis.com/?content_name=postgis_nearest_neighbor#120
/ Nicklas
fonte
Em http://www.bostongis.com/?content_name=postgis_nearest_neighbor :
Isso encontrará distâncias mínimas de até 300 unidades. Portanto, você deve primeiro verificar seus dados e descobrir o tamanho das distâncias mínimas.
fonte
Você precisa encontrar o par mais curto em uma caixa de pesquisa e, se a caixa não tiver nada, expanda-o. Não é bonito, mas funciona. Há um exemplo de código PL / PgSQL aqui http://trac.osgeo.org/postgis/wiki/UsersWikiNearest
fonte
Obrigado pela contribuição de todos. Finalmente, fui com uma combinação de sugestões de eprand e underdark. O código final que usei foi:
Criei um diagrama de voronoi na camada de lojas para confirmar que os resultados funcionaram corretamente, o que é claro que eles fizeram. Obrigado pelo excelente trabalho de todos!
fonte