/** * Creates a MultiLineString from the given LineStrings. * * @param lineStrings The {@link LineString} sequence. * @return MultiLineString. */ public static MultiLineString of(LineString... lineStrings) { return of(Arrays.asList(lineStrings)); }
/** * Converts to a {@link MultiLineString}. * * @return this. */ public MultiLineString toMultiLineString() { return new MultiLineString(positions()); }
/** * Converts to a {@link Polygon}. * * @return Polygon * @throws IllegalArgumentException if this MultiLineString contains an open {@link LineString} or it is empty. */ public Polygon toPolygon() { return new Polygon(positions()); }
/** * Creates a MultiLineString from the given LineStrings. * * @param lineStrings The Iterable of {@link LineString}. * @return MultiLineString. */ public static MultiLineString of(Iterable<LineString> lineStrings) { AreaPositions.Builder positionsBuilder = AreaPositions.builder(); for(LineString lineString : lineStrings) { positionsBuilder.addLinearPosition(lineString.positions()); } return new MultiLineString(positionsBuilder.build()); }
@Override public com.vividsolutions.jts.geom.MultiLineString fromGeometry(MultiLineString src) { return this.geometryFactory.createMultiLineString( StreamSupport.stream(src.lineStrings().spliterator(), false) .map(this::toJtsLineString) .toArray(com.vividsolutions.jts.geom.LineString[]::new) ); } }
/** * Converts to a {@link Polygon}. * * @return Polygon * @throws IllegalArgumentException if this MultiLineString contains an open {@link LineString} or it is empty. */ public Polygon toPolygon() { return new Polygon(positions()); }
/** * Creates a MultiLineString from the given LineStrings. * * @param lineStrings The Iterable of {@link LineString}. * @return MultiLineString. */ public static MultiLineString of(Iterable<LineString> lineStrings) { AreaPositions.Builder positionsBuilder = AreaPositions.builder(); for(LineString lineString : lineStrings) { positionsBuilder.addLinearPosition(lineString.positions()); } return new MultiLineString(positionsBuilder.build()); }
@Override public com.vividsolutions.jts.geom.MultiLineString fromGeometry(MultiLineString src) { return this.geometryFactory.createMultiLineString( StreamSupport.stream(src.lineStrings().spliterator(), false) .map(this::toJtsLineString) .toArray(com.vividsolutions.jts.geom.LineString[]::new) ); } }
/** * Creates a MultiLineString from the given LineStrings. * * @param lineStrings The {@link LineString} sequence. * @return MultiLineString. */ public static MultiLineString of(LineString... lineStrings) { return of(Arrays.asList(lineStrings)); }
/** * Converts to a {@link MultiLineString}. * * @return this. */ public MultiLineString toMultiLineString() { return new MultiLineString(positions()); }
/** * Returns the {@link LineString} Iterable contained by this MultiLineString. * * @return Guava lazy {@code Iterable<LineString>}. */ public List<LineString> lineStrings() { return positions().children().stream() .map(LineString::new) .collect(Collectors.toList()); }
private Geometry<?> buildGeometry(final Geometry.Type type, final Positions positions, final Geometry<?> geometries) { switch (type) { case GEOMETRY_COLLECTION: return geometries; case MULTI_POLYGON: return new MultiPolygon((MultiDimensionalPositions) positions); case POLYGON: return new Polygon((AreaPositions) positions); case MULTI_LINE_STRING: return new MultiLineString((AreaPositions) positions); case LINEAR_RING: case LINE_STRING: return ((LinearPositions) positions).isClosed() ? new LinearRing((LinearPositions) positions) : new LineString((LinearPositions) positions); case MULTI_POINT: if (positions instanceof SinglePosition) { return new MultiPoint(LinearPositions.builder().addSinglePosition((SinglePosition) positions).build()); } else { return new MultiPoint((LinearPositions) positions); } case POINT: return new Point(((SinglePosition) positions)); default: throw new IllegalArgumentException("Cannot build a geometry for type: " + type); } }
/** * Creates a MultiLineString from the given LineStrings. * * @param lineStrings The Iterable of {@link LineString}. * @return MultiLineString. */ public static MultiLineString of(Stream<LineString> lineStrings) { return of(lineStrings.collect(Collectors.toList())); }
/** * Returns the {@link LineString} Iterable contained by this MultiLineString. * * @return Guava lazy {@code Iterable<LineString>}. */ public List<LineString> lineStrings() { return positions().children().stream() .map(LineString::new) .collect(Collectors.toList()); }
private Geometry<?> buildGeometry(final Geometry.Type type, final Positions positions, final Geometry<?> geometries) { switch (type) { case GEOMETRY_COLLECTION: return geometries; case MULTI_POLYGON: return new MultiPolygon((MultiDimensionalPositions) positions); case POLYGON: return new Polygon((AreaPositions) positions); case MULTI_LINE_STRING: return new MultiLineString((AreaPositions) positions); case LINEAR_RING: case LINE_STRING: return ((LinearPositions) positions).isClosed() ? new LinearRing((LinearPositions) positions) : new LineString((LinearPositions) positions); case MULTI_POINT: if (positions instanceof SinglePosition) { return new MultiPoint(LinearPositions.builder().addSinglePosition((SinglePosition) positions).build()); } else { return new MultiPoint((LinearPositions) positions); } case POINT: return new Point(((SinglePosition) positions)); default: throw new IllegalArgumentException("Cannot build a geometry for type: " + type); } }
/** * Creates a MultiLineString from the given LineStrings. * * @param lineStrings The Iterable of {@link LineString}. * @return MultiLineString. */ public static MultiLineString of(Stream<LineString> lineStrings) { return of(lineStrings.collect(Collectors.toList())); }
@Override public MultiLineString toGeometry(com.vividsolutions.jts.geom.MultiLineString src) { return MultiLineString.of(StreamSupport.stream(JtsLineStringIterable.of(src).spliterator(), false) .map(AbstractJtsCodec::fromJtsLineString)); }
@Override public MultiLineString toGeometry(com.vividsolutions.jts.geom.MultiLineString src) { return MultiLineString.of(StreamSupport.stream(JtsLineStringIterable.of(src).spliterator(), false) .map(AbstractJtsCodec::fromJtsLineString)); }
@Test public void shouldHandleMultiLineStringWithSingleLineString() { MultiLineString source = MultiLineString.of( LineString.of(Point.from(14.5, 47.3), Point.from(42.19, 3.8)) ); MultiLineString parsed = this.toTest.fromJson(this.toTest.toJson(source), MultiLineString.class); assertThat(parsed, equalTo(source)); }
@Test public void shouldHandleMultiLineString() { MultiLineString source = MultiLineString.of( LineString.of(Point.from(14.5, 47.3), Point.from(42.19, 3.8)), LineString.of(Point.from(11.3, 44.3), Point.from(42.9, 2.8), Point.from(10.1, 46.1)) ); MultiLineString parsed = this.toTest.fromJson(this.toTest.toJson(source), MultiLineString.class); assertThat(parsed, equalTo(source)); }