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)