Search in sources :

Example 1 with LatLonBounds

use of org.apache.lucene.spatial3d.geom.LatLonBounds in project lucene-solr by apache.

the class Geo3dShape method getBoundingBox.

@Override
public Rectangle getBoundingBox() {
    //volatile read once
    Rectangle bbox = this.boundingBox;
    if (bbox == null) {
        LatLonBounds bounds = new LatLonBounds();
        shape.getBounds(bounds);
        double leftLon;
        double rightLon;
        if (bounds.checkNoLongitudeBound()) {
            leftLon = -180.0;
            rightLon = 180.0;
        } else {
            leftLon = bounds.getLeftLongitude().doubleValue() * DistanceUtils.RADIANS_TO_DEGREES;
            rightLon = bounds.getRightLongitude().doubleValue() * DistanceUtils.RADIANS_TO_DEGREES;
        }
        double minLat;
        if (bounds.checkNoBottomLatitudeBound()) {
            minLat = -90.0;
        } else {
            minLat = bounds.getMinLatitude().doubleValue() * DistanceUtils.RADIANS_TO_DEGREES;
        }
        double maxLat;
        if (bounds.checkNoTopLatitudeBound()) {
            maxLat = 90.0;
        } else {
            maxLat = bounds.getMaxLatitude().doubleValue() * DistanceUtils.RADIANS_TO_DEGREES;
        }
        bbox = new RectangleImpl(leftLon, rightLon, minLat, maxLat, ctx).getBuffered(ROUNDOFF_ADJUSTMENT, ctx);
        this.boundingBox = bbox;
    }
    return bbox;
}
Also used : Rectangle(org.locationtech.spatial4j.shape.Rectangle) RectangleImpl(org.locationtech.spatial4j.shape.impl.RectangleImpl) LatLonBounds(org.apache.lucene.spatial3d.geom.LatLonBounds)

Example 2 with LatLonBounds

use of org.apache.lucene.spatial3d.geom.LatLonBounds in project lucene-solr by apache.

the class Geo3dShapeRectRelationTestCase method getBoundingBox.

protected GeoBBox getBoundingBox(final GeoShape path) {
    LatLonBounds bounds = new LatLonBounds();
    path.getBounds(bounds);
    double leftLon;
    double rightLon;
    if (bounds.checkNoLongitudeBound()) {
        leftLon = -Math.PI;
        rightLon = Math.PI;
    } else {
        leftLon = bounds.getLeftLongitude().doubleValue();
        rightLon = bounds.getRightLongitude().doubleValue();
    }
    double minLat;
    if (bounds.checkNoBottomLatitudeBound()) {
        minLat = -Math.PI * 0.5;
    } else {
        minLat = bounds.getMinLatitude().doubleValue();
    }
    double maxLat;
    if (bounds.checkNoTopLatitudeBound()) {
        maxLat = Math.PI * 0.5;
    } else {
        maxLat = bounds.getMaxLatitude().doubleValue();
    }
    return GeoBBoxFactory.makeGeoBBox(planetModel, maxLat, minLat, leftLon, rightLon);
}
Also used : LatLonBounds(org.apache.lucene.spatial3d.geom.LatLonBounds)

Aggregations

LatLonBounds (org.apache.lucene.spatial3d.geom.LatLonBounds)2 Rectangle (org.locationtech.spatial4j.shape.Rectangle)1 RectangleImpl (org.locationtech.spatial4j.shape.impl.RectangleImpl)1