Cela aurait dû être un précurseur évident (que je n'ai pas posé) à mon autre question: comment créer des diagrammes d'araignée (lignes de moyeu) dans PostGIS?
Si je ne connais pas la relation entre un point de la couche A (magasins) et un point de la couche B (clients), je voudrais généralement dire «le client 1 est desservi par le magasin le plus proche». Bien que je réalise que ce fait n'est peut-être pas vrai, il peut être un substitut décent.
À l'aide de PostGIS, quelle est la manière la plus efficace d'attribuer l'ID du point le plus proche dans la couche A (magasins) à chaque point dans la couche B (clients). La sortie que je recherche est quelque chose comme ci-dessous.
Customer | Store
1 | A
2 | A
3 | B
4 | C
la source
Il semble que si vous avez beaucoup plus de clients que de magasins, il pourrait être plus efficace de créer une couche de polygones voronoi pour les magasins, puis de faire une jointure spatiale des clients par rapport aux polygones du magasin.
la source
Vous trouverez des discussions sur certaines solutions de base du plus proche voisin ici: http://www.bostongis.com/?content_name=postgis_nearest_neighbors#120
/ Nicklas
la source
Sur http://www.bostongis.com/?content_name=postgis_nearest_neighbors :
Cela permettra de trouver des distances minimales jusqu'à 300 unités. Donc, vous devez d'abord vérifier vos données et savoir quelle sera l'ampleur de vos distances minimales.
la source
Vous devez trouver la paire la plus courte dans une zone de recherche, et si la zone ne contient rien, développez-la. Ce n'est pas joli mais ça marche. Il y a un exemple de code PL / PgSQL ici http://trac.osgeo.org/postgis/wiki/UsersWikiNearest
la source
Merci pour la contribution de tout le monde. J'ai finalement opté pour une combinaison de suggestions d'eprand et d'Underdark. Le code final que j'ai utilisé était:
J'ai ensuite créé un diagramme voronoi sur la couche magasins pour confirmer que les résultats ont fonctionné correctement, ce qui bien sûr, ils l'ont fait. Merci pour votre excellent travail!
la source