我是这一部分的新手,所以我希望有人经历了这一点可以提供一些建议。
我有一个形状文件文档,其中包含许多形状。需要处理的数据是大量点。我尝试为ShapeFile生成一个Quadtree索引,然后找到这些点。我找到了一个适合它的课程。
http://docs.geotools.org/latest/javadocs/org/geotools/data/data/shapefile/index/quadtree/quadtree/quadtree.html#insert-quadtr.insert-org.geotool.geotool.geotool.s.data-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);
问题是,下一步我需要如何做?我需要手动插入所有多边形吗?我该如何用这棵树搜索点?
Quad-Tree是称为边界卷层次结构(BVH(的一类数据结构的成员。特别是二次树将有限的二维空间递归地分为4个象限。在您的情况下,看起来您要么必须通过创建节点对象的层次结构并向它们添加形状来手动执行此操作,要么通过通过insert()
插入树上的形状来为您添加形状。不幸的是,该文档在适当的用法上并不十分清楚。
您需要意识到的一件事是,QuadTree
类如何处理由多个Quad-Tree节点相交的形状。乍一看,该库是否为您拆分形状,因此您可能需要提出自己的解决方案。