Example usage for com.google.common.geometry S2Cell getVertex

List of usage examples for com.google.common.geometry S2Cell getVertex

Introduction

In this page you can find the example usage for com.google.common.geometry S2Cell getVertex.

Prototype

public S2Point getVertex(int k) 

Source Link

Usage

From source file:org.esa.beam.occci.MerisCoverageMain.java

public static void main(String[] args) throws ParseException {
    S2Polygon polygon = S2EoProduct.createPolygon(poly);
    //        System.out.println("polygon = " + polygon);

    S2RegionCoverer coverer = new S2RegionCoverer();
    coverer.setMinLevel(0);//from w w  w. ja va  2  s .co m
    coverer.setMaxLevel(5);
    coverer.setMaxCells(500);
    S2CellUnion covering = coverer.getCovering(polygon);

    final GeometryFactory factory = new GeometryFactory();
    List<S2CellId> s2CellIds = covering.cellIds();
    System.out.println("s2CellIds.size() = " + s2CellIds.size());
    List<Polygon> polys = new ArrayList<>();

    for (S2CellId s2CellId : s2CellIds) {
        //            System.out.println("s2CellId = " + s2CellId);
        ArrayList<double[]> coordList = new ArrayList<double[]>();

        //System.out.println("s2CellId = " + s2CellId);
        S2Cell s2Cell = new S2Cell(s2CellId);
        //System.out.println("s2Cell = " + s2Cell);
        S2LatLng s2LatLng = new S2LatLng(s2Cell.getVertex(0));
        coordList.add(new double[] { s2LatLng.lat().degrees(), s2LatLng.lng().degrees() });

        s2LatLng = new S2LatLng(s2Cell.getVertex(1));
        coordList.add(new double[] { s2LatLng.lat().degrees(), s2LatLng.lng().degrees() });

        s2LatLng = new S2LatLng(s2Cell.getVertex(2));
        coordList.add(new double[] { s2LatLng.lat().degrees(), s2LatLng.lng().degrees() });

        s2LatLng = new S2LatLng(s2Cell.getVertex(3));
        coordList.add(new double[] { s2LatLng.lat().degrees(), s2LatLng.lng().degrees() });

        s2LatLng = new S2LatLng(s2Cell.getVertex(0));
        coordList.add(new double[] { s2LatLng.lat().degrees(), s2LatLng.lng().degrees() });

        final Coordinate[] coordinates = new Coordinate[coordList.size()];
        for (int i1 = 0; i1 < coordinates.length; i1++) {
            final double[] coord = coordList.get(i1);
            coordinates[i1] = new Coordinate(coord[1], coord[0]);
        }
        Polygon p = factory.createPolygon(factory.createLinearRing(coordinates));
        //System.out.println(p);
        polys.add(p);
    }
    MultiPolygon multiPolygon = factory.createMultiPolygon(polys.toArray(new Polygon[polys.size()]));

    Geometry simplify = TopologyPreservingSimplifier.simplify(multiPolygon, 0.01);
    System.out.println(multiPolygon);
    System.out.println(simplify);
    Geometry origin = new WKTReader().read(poly);
    Geometry both = multiPolygon.union(origin);
    System.out.println(both);

}