use of org.opensearch.geometry.Line in project OpenSearch by opensearch-project.
the class GeoJsonParserTests method testParseMultiLineString.
@Override
public void testParseMultiLineString() throws IOException {
XContentBuilder multilinesGeoJson = XContentFactory.jsonBuilder().startObject().field("type", "MultiLineString").startArray("coordinates").startArray().startArray().value(100.0).value(0.0).endArray().startArray().value(101.0).value(1.0).endArray().endArray().startArray().startArray().value(102.0).value(2.0).endArray().startArray().value(103.0).value(3.0).endArray().endArray().endArray().endObject();
MultiLine expected = new MultiLine(Arrays.asList(new Line(new double[] { 100.0, 101.0 }, new double[] { 0.0, 1.0 }), new Line(new double[] { 102.0, 103.0 }, new double[] { 2.0, 3.0 })));
assertGeometryEquals(expected, multilinesGeoJson);
}
use of org.opensearch.geometry.Line in project OpenSearch by opensearch-project.
the class GeoJsonParserTests method testParseLineString.
@Override
public void testParseLineString() throws IOException {
XContentBuilder lineGeoJson = XContentFactory.jsonBuilder().startObject().field("type", "LineString").startArray("coordinates").startArray().value(100.0).value(0.0).endArray().startArray().value(101.0).value(1.0).endArray().endArray().endObject();
Line expected = new Line(new double[] { 100.0, 101.0 }, new double[] { 0.0, 1.0 });
try (XContentParser parser = createParser(lineGeoJson)) {
parser.nextToken();
assertEquals(expected, new GeoJson(false, false, new GeographyValidator(true)).fromXContent(parser));
}
}
use of org.opensearch.geometry.Line in project OpenSearch by opensearch-project.
the class GeometryTestUtils method randomMultiLine.
public static MultiLine randomMultiLine(boolean hasAlt) {
int size = OpenSearchTestCase.randomIntBetween(3, 10);
List<Line> lines = new ArrayList<>();
for (int i = 0; i < size; i++) {
lines.add(randomLine(hasAlt));
}
return new MultiLine(lines);
}
use of org.opensearch.geometry.Line in project OpenSearch by opensearch-project.
the class GeoWKTShapeParserTests method testParseLineString.
@Override
public void testParseLineString() throws IOException, ParseException {
List<Coordinate> coordinates = randomLineStringCoords();
LineString expected = GEOMETRY_FACTORY.createLineString(coordinates.toArray(new Coordinate[coordinates.size()]));
assertExpected(jtsGeom(expected), new LineStringBuilder(coordinates), true);
double[] lats = new double[coordinates.size()];
double[] lons = new double[lats.length];
for (int i = 0; i < lats.length; ++i) {
lats[i] = coordinates.get(i).y;
lons[i] = coordinates.get(i).x;
}
assertExpected(new Line(lons, lats), new LineStringBuilder(coordinates), false);
}
use of org.opensearch.geometry.Line in project OpenSearch by opensearch-project.
the class GeoWKTShapeParserTests method testParseMultiLineString.
@Override
public void testParseMultiLineString() throws IOException, ParseException {
int numLineStrings = randomIntBetween(0, 8);
List<LineString> lineStrings = new ArrayList<>(numLineStrings);
MultiLineStringBuilder builder = new MultiLineStringBuilder();
for (int j = 0; j < numLineStrings; ++j) {
List<Coordinate> lsc = randomLineStringCoords();
Coordinate[] coords = lsc.toArray(new Coordinate[lsc.size()]);
lineStrings.add(GEOMETRY_FACTORY.createLineString(coords));
builder.linestring(new LineStringBuilder(lsc));
}
List<Line> lines = new ArrayList<>(lineStrings.size());
for (int j = 0; j < lineStrings.size(); ++j) {
Coordinate[] c = lineStrings.get(j).getCoordinates();
lines.add(new Line(Arrays.stream(c).mapToDouble(i -> i.x).toArray(), Arrays.stream(c).mapToDouble(i -> i.y).toArray()));
}
Geometry expectedGeom;
if (lines.isEmpty()) {
expectedGeom = GeometryCollection.EMPTY;
} else if (lines.size() == 1) {
expectedGeom = new Line(lines.get(0).getX(), lines.get(0).getY());
} else {
expectedGeom = new MultiLine(lines);
}
assertExpected(expectedGeom, builder, false);
assertMalformed(builder);
MultiLineString expected = GEOMETRY_FACTORY.createMultiLineString(lineStrings.toArray(new LineString[lineStrings.size()]));
assumeTrue("JTS test path cannot handle empty multilinestrings", numLineStrings > 1);
assertExpected(jtsGeom(expected), builder, true);
}
Aggregations