1

表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    
...

表Bの同じコードを持つすべてのポイントと比較して、各ポイント(開始ポイントと終了ポイント)の最も近いポイントを見つけたいですか?

これを解決するための最良のPostGIS関数/PostgreSQLクエリは何ですか?

4

2 に答える 2

4

ソフトウェアの最新バージョンを使用している場合は、KNN-GiST手法を使用して、PostGIS内のポイントに最も近いK個の近傍をすばやく見つけることができます。Kの小さな値が最も速く、1はそれらが得るのとほぼ同じくらい小さいので、これはあなたにとって非常にうまくいくはずです。私はテキストトリグラムでKNN-GiSTのみを使用しましたが、PostGISでも機能することは知っています-それを始めるために読むのに最適なページがわかりません。「postgisknngist」のウェブ検索では、多くの有望な候補が表示されます。

于 2012-08-08T17:47:25.800 に答える
0

長い間質問した後、私は「最近傍」の解決策を見つけました http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgis_nearest_neighbor_generic

于 2012-09-12T08:31:17.227 に答える