/** * Create a new point * * @param longitude longitude of the point * @param latitude latitude of the point * @return a new {@link PointBuilder} */ public static PointBuilder newPoint(double longitude, double latitude) { return ShapeBuilders.newPoint(new Coordinate(longitude, latitude)); }
private PolygonBuilder getPolygonBuilder(GeoPolygon geoPolygon) { List<Coordinate> shell = geoPolygon.getOuterBoundary().stream() .map(geoPoint -> new Coordinate(geoPoint.getLongitude(), geoPoint.getLatitude())) .collect(Collectors.toList()); PolygonBuilder polygonBuilder = ShapeBuilders.newPolygon(shell); geoPolygon.getHoles().forEach(hole -> { List<Coordinate> coordinates = hole.stream() .map(geoPoint -> new Coordinate(geoPoint.getLongitude(), geoPoint.getLatitude())) .collect(Collectors.toList()); polygonBuilder.hole(ShapeBuilders.newLineString(coordinates)); }); return polygonBuilder; }
private GeometryCollectionBuilder getGeometryCollectionBuilder(GeoCollection geoCollection) { GeometryCollectionBuilder shapeBuilder = ShapeBuilders.newGeometryCollection(); geoCollection.getGeoShapes().forEach(shape -> shapeBuilder.shape(getShapeBuilder(shape))); return shapeBuilder; }
private LineStringBuilder getLineStringBuilder(GeoLine geoLine) { List<Coordinate> coordinates = geoLine.getGeoPoints().stream() .map(geoPoint -> new Coordinate(geoPoint.getLongitude(), geoPoint.getLatitude())) .collect(Collectors.toList()); return ShapeBuilders.newLineString(coordinates); }
protected static CircleBuilder parseCircle(CoordinateNode coordinates, Distance radius) { return ShapeBuilders.newCircleBuilder().center(coordinates.coordinate).radius(radius); }
protected static EnvelopeBuilder parseEnvelope(CoordinateNode coordinates) { // validate the coordinate array for envelope type if (coordinates.children.size() != 2) { throw new ElasticsearchParseException( "invalid number of points [{}] provided for geo_shape [{}] when expecting an array of 2 coordinates", coordinates.children.size(), GeoShapeType.ENVELOPE.shapename); } // verify coordinate bounds, correct if necessary Coordinate uL = coordinates.children.get(0).coordinate; Coordinate lR = coordinates.children.get(1).coordinate; if (((lR.x < uL.x) || (uL.y < lR.y))) { Coordinate uLtmp = uL; uL = new Coordinate(Math.min(uL.x, lR.x), Math.max(uL.y, lR.y)); lR = new Coordinate(Math.max(uLtmp.x, lR.x), Math.min(uLtmp.y, lR.y)); } return ShapeBuilders.newEnvelope(uL, lR); }
protected static MultiLineStringBuilder parseMultiLine(CoordinateNode coordinates) { MultiLineStringBuilder multiline = ShapeBuilders.newMultiLinestring(); for (CoordinateNode node : coordinates.children) { multiline.linestring(parseLineString(node)); } return multiline; }
protected static MultiPolygonBuilder parseMultiPolygon(CoordinateNode coordinates, final Orientation orientation, final boolean coerce) { MultiPolygonBuilder polygons = ShapeBuilders.newMultiPolygon(orientation); for (CoordinateNode node : coordinates.children) { polygons.polygon(parsePolygon(node, orientation, coerce)); } return polygons; }
private PolygonBuilder getPolygonBuilder(GeoPolygon geoPolygon) { List<Coordinate> shell = geoPolygon.getOuterBoundary().stream() .map(geoPoint -> new Coordinate(geoPoint.getLongitude(), geoPoint.getLatitude())) .collect(Collectors.toList()); PolygonBuilder polygonBuilder = ShapeBuilders.newPolygon(shell); geoPolygon.getHoles().forEach(hole -> { List<Coordinate> coordinates = hole.stream() .map(geoPoint -> new Coordinate(geoPoint.getLongitude(), geoPoint.getLatitude())) .collect(Collectors.toList()); polygonBuilder.hole(ShapeBuilders.newLineString(coordinates)); }); return polygonBuilder; }
private GeometryCollectionBuilder getGeometryCollectionBuilder(GeoCollection geoCollection) { GeometryCollectionBuilder shapeBuilder = ShapeBuilders.newGeometryCollection(); geoCollection.getGeoShapes().forEach(shape -> shapeBuilder.shape(getShapeBuilder(shape))); return shapeBuilder; }
private LineStringBuilder getLineStringBuilder(GeoLine geoLine) { List<Coordinate> coordinates = geoLine.getGeoPoints().stream() .map(geoPoint -> new Coordinate(geoPoint.getLongitude(), geoPoint.getLatitude())) .collect(Collectors.toList()); return ShapeBuilders.newLineString(coordinates); }
private CircleBuilder getCircleBuilder(GeoCircle geoCircle) { return ShapeBuilders.newCircleBuilder() .center(geoCircle.getLongitude(), geoCircle.getLatitude()) .radius(geoCircle.getRadius(), DistanceUnit.KILOMETERS); }
private EnvelopeBuilder getEnvelopeBuilder(GeoRect geoRect) { Coordinate topLeft = new Coordinate(geoRect.getNorthWest().getLongitude(), geoRect.getNorthWest().getLatitude()); Coordinate bottomRight = new Coordinate(geoRect.getSouthEast().getLongitude(), geoRect.getSouthEast().getLatitude()); return ShapeBuilders.newEnvelope(topLeft, bottomRight); }
/** * Create a new point * * @param longitude longitude of the point * @param latitude latitude of the point * @return a new {@link PointBuilder} */ public static PointBuilder newPoint(double longitude, double latitude) { return ShapeBuilders.newPoint(new Coordinate(longitude, latitude)); }
/** * Parse the geometries array of a GeometryCollection * * @param parser Parser that will be read from * @return Geometry[] geometries of the GeometryCollection * @throws IOException Thrown if an error occurs while reading from the XContentParser */ protected static GeometryCollectionBuilder parseGeometries(XContentParser parser, GeoShapeFieldMapper mapper) throws IOException { if (parser.currentToken() != XContentParser.Token.START_ARRAY) { throw new ElasticsearchParseException("geometries must be an array of geojson objects"); } XContentParser.Token token = parser.nextToken(); GeometryCollectionBuilder geometryCollection = ShapeBuilders.newGeometryCollection(); while (token != XContentParser.Token.END_ARRAY) { ShapeBuilder shapeBuilder = GeoShapeType.parse(parser); geometryCollection.shape(shapeBuilder); token = parser.nextToken(); } return geometryCollection; } }
protected static LineStringBuilder parseLineString(CoordinateNode coordinates) { /** * Per GeoJSON spec (http://geojson.org/geojson-spec.html#linestring) * "coordinates" member must be an array of two or more positions * LineStringBuilder should throw a graceful exception if < 2 coordinates/points are provided */ if (coordinates.children.size() < 2) { throw new ElasticsearchParseException("invalid number of points in LineString (found [{}] - must be >= 2)", coordinates.children.size()); } CoordinatesBuilder line = new CoordinatesBuilder(); for (CoordinateNode node : coordinates.children) { line.coordinate(node.coordinate); } return ShapeBuilders.newLineString(line); }
private CircleBuilder getCircleBuilder(GeoCircle geoCircle) { return ShapeBuilders.newCircleBuilder() .center(geoCircle.getLongitude(), geoCircle.getLatitude()) .radius(geoCircle.getRadius(), DistanceUnit.KILOMETERS); }
private EnvelopeBuilder getEnvelopeBuilder(GeoRect geoRect) { Coordinate topLeft = new Coordinate(geoRect.getNorthWest().getLongitude(), geoRect.getNorthWest().getLatitude()); Coordinate bottomRight = new Coordinate(geoRect.getSouthEast().getLongitude(), geoRect.getSouthEast().getLatitude()); return ShapeBuilders.newEnvelope(topLeft, bottomRight); }
/** * Create a new point * * @param longitude longitude of the point * @param latitude latitude of the point * @return a new {@link PointBuilder} */ public static PointBuilder newPoint(double longitude, double latitude) { return ShapeBuilders.newPoint(new Coordinate(longitude, latitude)); }
/** * Create a new point * * @param longitude longitude of the point * @param latitude latitude of the point * @return a new {@link PointBuilder} */ public static PointBuilder newPoint(double longitude, double latitude) { return ShapeBuilders.newPoint(new Coordinate(longitude, latitude)); }