2017-04-26 3 views
0

私はこの部分を初めて使うので、これを経験した人がいくつかのアドバイスを与えることを願っています。クアッドツリーを使用して多数の点を見つける

私は多くの図形を含む形状ファイル文書を持っています。処理する必要があるデータは多数のポイントです。私は、シェイプファイルのためのquadtreeインデックスを生成し、これらのポイントを見つけることを試みる。そして私はそれに適したクラスを見つける。以下は

http://docs.geotools.org/latest/javadocs/org/geotools/data/shapefile/index/quadtree/QuadTree.html#insert-org.geotools.data.shapefile.index.quadtree.Node-int-com.vividsolutions.jts.geom.Envelope-int-

問題はどのように私は次に何をする必要があります、ということです私のコード

ShpFiles shpFile = new ShpFiles(shpFileName); 
    IndexFile indexShapeFile = new IndexFile(shpFile,true); 
    int numShapes = indexShapeFile.getRecordCount(); 
    com.vividsolutions.jts.geom.Envelope eRoot = new com.vividsolutions.jts.geom.Envelope(-85,85,-180,180); 
    QuadTree t1 = new QuadTree(numShapes,eRoot,indexShapeFile); 

のですか?手動ですべてのポリゴンを挿入する必要はありますか?そして、この木でどのようにポイントを検索できますか?

答えて

0

quad-treeは、bounding volume hierarchies (BVH)と呼ばれるデータ構造のクラスのメンバーです。具体的には、クワッドツリーは、有限の2次元空間を4つの象限に再帰的に細分する。あなたの場合は、Nodeオブジェクトの階層を作成してそれらにシェイプを追加するか、insert()を介してツリーにシェイプを挿入することで手動で行う必要があります。残念ながら、ドキュメントは適切な使用法についてはあまり明確ではありません。

あなたが気づく必要があることの1つは、QuadTreeクラスが複数のクワッドツリーノードによって交差するシェイプを処理する方法です。一見すると、このライブラリがあなたのために図形を分割するかどうかは分かりませんので、あなた自身の解決策を考え出す必要があります。

+0

ご回答いただきありがとうございます。この図書館の資料はわたしにとっては理解しがたいものですが、私はそれを長い間読んでいます。これらのノードが作成された後に、対応するノードにシェイプを追加する方法がわかりません。ですから、 'insert(int recno、Envelope bounds)'を使って形を挿入しようとすると、あなたの視点からの境界の意味は何ですか? –

+0

封筒が図形の境界ボックスを表しているようです:http://docs.geotools.org/latest/javadocs/org/geotools/geometry/Envelope2D.html – Corillian

+0

これが見つかりました。インデックス四分木が正常に生成された場合は、どのようにしてポイントの配置に使用できますか?つまり、境界内の図形(?)を見つけるのに便利な 'search(Envelope bounds)'関数しかありません。ポイントを見つけるのに便利ですか? –

関連する問題