2012-08-08 85 views
1

表答:如何在POSTGIS中找到最近的點?

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查詢來解決這個問題?

回答

3

如果您使用的是最新版本的軟件,您可以使用KNN-GiST技術快速找到PostGIS中某個點的K個最近鄰居。 K值小是最快的,1是小到他們得到的,所以這對你來說應該很好。我只使用KNN-GiST和文本卦,但我知道他們也可以使用PostGIS - 我只是不知道要開始閱讀的最佳頁面。網絡搜索「postgis knn gist」顯示了很多可能的候選人。