表A:
lat | long | the_geom | code | sign
13.8433095 | 100.6360357 | 0101000020E61.... | ABC | start_point
13.7544738 | 100.5459646 | 0101000020E6..... | ABC | end_point
13.4124215 | 100.6232332 | 0101000020E61.... | DEF | start_point
13.2423438 | 100.2324426 | 0101000020E6..... | DEF | end_point
表B:
lat | long | the_geom | code
13.7546285 | 100.5458729 | 0101000020E.... | ABC
13.7546698 | 100.5458513 | 0101000020E.... | ABC
13.7547107 | 100.5458233 | 0101000020E.... | DEF
...
我想找到每个点的最近点(开始和结束pojnt)与表B中相同代码的每个点进行比较?
解决此问题的最佳PostGIS函数/ PostgreSQL查询是什么?
答案 0 :(得分:3)
如果您使用的是最新版本的软件,则可以使用KNN-GiST技术快速找到PostGIS中某个点的K个最近邻居。 K的小值是最快的,1和它们一样小,所以这对你来说应该很好。我只使用带有文本三元组的KNN-GiST,但我知道它们也适用于PostGIS - 我只是不知道要开始阅读的最佳页面。对“postgis knn gist”的网络搜索显示了很多可能的候选人。
答案 1 :(得分:0)
经过长时间的问题,我刚刚找到了“最近邻”的解决方案 http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgis_nearest_neighbor_generic