我是这部分的新手,所以我希望有经验的人可以给出一些建议。
我有一个形状文件文档,其中包含许多形状。需要处理的数据是大量的点。我尝试为shapefile生成四叉树索引,然后找到这些点。我找到了一个适合它的课程。
以下是我的代码
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 :(得分:0)
quad-tree是一类数据结构的成员,称为bounding volume hierarchies (BVH)。具体地,四叉树递归地将有限的二维空间细分为四个象限。在您的情况下,您需要手动执行此操作,方法是创建Node对象的层次结构并向其添加形状,或者通过{{{{{{{{{{{{{{ 1}}。不幸的是,文档在正确使用方面并不是很清楚。
您需要注意的一件事是insert()
类如何处理与多个四叉树节点相交的形状。乍一看,这个库是否为您分割形状并不清楚,因此您可能需要提出自己的解决方案。