2016-06-21 24 views
0

私はいくつかのポイント(約240億ポイント、400万行)に最も近いラインを見つけようとしています。ポイントは1つのGeoDataFrameに存在し、ラインは別のGeoDataFrameに存在します。 https://github.com/geopandas/geopandas/issues/140、およびこれをしなかった:私はこれに従うことをしようとしたGeoPandas Spatial Indexを線で使うには?

lines_sidx = lines_df['geom'].sindex 
[list(lines_sidx.intersection((points.loc[i,'geom'].y, points.loc[i,'geom'].x))) for i in range(len(points))] 

そして、これだけのリストの空のリストを返します。ここで何が起こっているのですか?

(これを最初の100行と両方のデータセットのポイントに適用しています)。

答えて

1

あなたの質問は、最近隣のクエリを実行しようとしている文脈に先行していますが、あなたの質問は、そのgeopandas交差コードブロックで何が起こっているのかを尋ねます。彼らの序文ではなく、あなたの質問に対処しようとしています。あなたの交差コードロジックがオフであるように見えます。空間的な交差点を持つrtreeを使用する要点は、まず索引で可能なマッチ(いくつかの偽陽性ですが、偽陰性はありません)を見つけ、次に正確なマッチを見つけます。このgeopandas r-tree tutorialで示されているように、このような

何か、:

spatial_index = gdf.sindex 
possible_matches_index = list(spatial_index.intersection(polygon.bounds)) 
possible_matches = gdf.iloc[possible_matches_index] 
precise_matches = possible_matches[possible_matches.intersects(polygon)] 

あなたは点の集合とラインのセットと最近傍探索を行うことをしようとしている場合、それは機能の可能性なしませんあなたの空の設定結果を返す可能性があります。

関連する問題