World Wind 高效渲染大量多边形
Efficiently render large number of polygon in World Wind
我有很多多边形,我想在世界风中渲染它们。所以我使用他们的多边形 class 如下:
ShapeAttributes normalAttributes = new BasicShapeAttributes();
normalAttributes.setInteriorMaterial(Material.YELLOW);
normalAttributes.setOutlineWidth(2);
normalAttributes.setOutlineOpacity(0.5);
normalAttributes.setDrawInterior(true);
normalAttributes.setDrawInterior(true);
//define the coordinates position
ArrayList<Position> positions = new ArrayList<Position>();
positions.add(Position.fromDegrees(52, 10, 5e4));
positions.add(Position.fromDegrees(55, 11, 5e4));
positions.add(Position.fromDegrees(55, 11, 5e4));
positions.add(Position.fromDegrees(52, 14, 5e4));
positions.add(Position.fromDegrees(52, 10, 5e4));
Polygon poly = new Polygon(positions);
它适用于小数据集,但是当多边形数量增加(~45k)时,它会耗尽内存(4GB),或者对于较小的数量运行缓慢。有人可以建议一些技术来有效地呈现如此大的数据集。
谢谢,
您可能需要简化多边形中的点数。一种方法是使用 Ramer-Douglas-Peucker algorithm。使用它,您可以大大减少多边形内的点数,同时保持其形状。
此算法有许多可用的实现,具体取决于许可,包括 simplify-java (MIT licence)。
我有很多多边形,我想在世界风中渲染它们。所以我使用他们的多边形 class 如下:
ShapeAttributes normalAttributes = new BasicShapeAttributes();
normalAttributes.setInteriorMaterial(Material.YELLOW);
normalAttributes.setOutlineWidth(2);
normalAttributes.setOutlineOpacity(0.5);
normalAttributes.setDrawInterior(true);
normalAttributes.setDrawInterior(true);
//define the coordinates position
ArrayList<Position> positions = new ArrayList<Position>();
positions.add(Position.fromDegrees(52, 10, 5e4));
positions.add(Position.fromDegrees(55, 11, 5e4));
positions.add(Position.fromDegrees(55, 11, 5e4));
positions.add(Position.fromDegrees(52, 14, 5e4));
positions.add(Position.fromDegrees(52, 10, 5e4));
Polygon poly = new Polygon(positions);
它适用于小数据集,但是当多边形数量增加(~45k)时,它会耗尽内存(4GB),或者对于较小的数量运行缓慢。有人可以建议一些技术来有效地呈现如此大的数据集。 谢谢,
您可能需要简化多边形中的点数。一种方法是使用 Ramer-Douglas-Peucker algorithm。使用它,您可以大大减少多边形内的点数,同时保持其形状。
此算法有许多可用的实现,具体取决于许可,包括 simplify-java (MIT licence)。