11

約 100000 ポイントのデータセットと、約 3000 ポリゴンの別のデータセットがあります。ポイントごとに、最も近いポリゴン (空間一致) を見つける必要があります。ポリゴン内のポイントは、そのポリゴンと一致する必要があります。

すべてのペアの距離を計算することは可能ですが、必要以上に時間がかかります。この種のマッチング問題に空間インデックスを利用する R パッケージはありますか?

spパッケージと機能は知っていoverますが、ドキュメントにはインデックスについて何も書かれていません。

4

2 に答える 2

-1

R については何も知りませんが、PostGIS を使用した解決策を 1 つ提供します。PostGIS にデータをロードして、R だけを使用するよりも高速に処理できる場合があります。

2 つのテーブルplanet_osm_point(80k 行) とplanet_osm_polygon(30k 行) がある場合、次のクエリは約 30 秒で実行されます。

create table knn as 
select 
    pt.osm_id point_osm_id, 
    poly.osm_id poly_osm_id
from planet_osm_point pt, planet_osm_polygon poly
where poly.osm_id = (
    select p2.osm_id 
    from planet_osm_polygon p2 
    order by pt.way <-> p2.way limit 1
);

結果は、ポイントとポリゴンのバウンディング ボックスの中心点 (ポリゴン自体の中心点ではありません)との間の距離に基づく近似値です。もう少し作業を行うと、このクエリは、ポリゴン自体の中心点に基づいて最も近いポリゴンを取得するように適応させることができますが、実行速度は遅くなります。

于 2013-11-20T13:10:21.177 に答える