use of org.opensearch.geometry.Line in project OpenSearch by opensearch-project.
the class GeometryIndexerTests method testLine.
public void testLine() {
Line line = new Line(new double[] { 3, 4 }, new double[] { 1, 2 });
Geometry indexed = line;
assertEquals(indexed, indexer.prepareForIndexing(line));
line = new Line(new double[] { 160, 200 }, new double[] { 10, 20 });
indexed = new MultiLine(Arrays.asList(new Line(new double[] { 160, 180 }, new double[] { 10, 15 }), new Line(new double[] { -180, -160 }, new double[] { 15, 20 })));
assertEquals(indexed, indexer.prepareForIndexing(line));
line = new Line(new double[] { 200, 160 }, new double[] { 10, 20 });
indexed = new MultiLine(Arrays.asList(new Line(new double[] { -160, -180 }, new double[] { 10, 15 }), new Line(new double[] { 180, 160 }, new double[] { 15, 20 })));
assertEquals(indexed, indexer.prepareForIndexing(line));
line = new Line(new double[] { 160, 200, 160 }, new double[] { 0, 10, 20 });
indexed = new MultiLine(Arrays.asList(new Line(new double[] { 160, 180 }, new double[] { 0, 5 }), new Line(new double[] { -180, -160, -180 }, new double[] { 5, 10, 15 }), new Line(new double[] { 180, 160 }, new double[] { 15, 20 })));
assertEquals(indexed, indexer.prepareForIndexing(line));
line = new Line(new double[] { 0, 720 }, new double[] { 0, 20 });
indexed = new MultiLine(Arrays.asList(new Line(new double[] { 0, 180 }, new double[] { 0, 5 }), new Line(new double[] { -180, 180 }, new double[] { 5, 15 }), new Line(new double[] { -180, 0 }, new double[] { 15, 20 })));
assertEquals(indexed, indexer.prepareForIndexing(line));
line = new Line(new double[] { 160, 180, 180, 200, 160, 140 }, new double[] { 0, 10, 20, 30, 30, 40 });
indexed = new MultiLine(Arrays.asList(new Line(new double[] { 160, 180 }, new double[] { 0, 10 }), new Line(new double[] { -180, -180, -160, -180 }, new double[] { 10, 20, 30, 30 }), new Line(new double[] { 180, 160, 140 }, new double[] { 30, 30, 40 })));
assertEquals(indexed, indexer.prepareForIndexing(line));
line = new Line(new double[] { -70, 180, 900 }, new double[] { 0, 0, 4 });
indexed = new MultiLine(Arrays.asList(new Line(new double[] { -70, 180 }, new double[] { 0, 0 }), new Line(new double[] { -180, 180 }, new double[] { 0, 2 }), new Line(new double[] { -180, 180 }, new double[] { 2, 4 })));
assertEquals(indexed, indexer.prepareForIndexing(line));
line = new Line(new double[] { 160, 200, 160, 200, 160, 200 }, new double[] { 0, 10, 20, 30, 40, 50 });
indexed = new MultiLine(Arrays.asList(new Line(new double[] { 160, 180 }, new double[] { 0, 5 }), new Line(new double[] { -180, -160, -180 }, new double[] { 5, 10, 15 }), new Line(new double[] { 180, 160, 180 }, new double[] { 15, 20, 25 }), new Line(new double[] { -180, -160, -180 }, new double[] { 25, 30, 35 }), new Line(new double[] { 180, 160, 180 }, new double[] { 35, 40, 45 }), new Line(new double[] { -180, -160 }, new double[] { 45, 50 })));
assertEquals(indexed, indexer.prepareForIndexing(line));
}
use of org.opensearch.geometry.Line in project OpenSearch by opensearch-project.
the class GeometryIO method readMultiLine.
private static MultiLine readMultiLine(StreamInput in) throws IOException {
int size = in.readVInt();
List<Line> lines = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
lines.add(readLine(in));
}
return new MultiLine(lines);
}
use of org.opensearch.geometry.Line in project OpenSearch by opensearch-project.
the class GeoPointShapeQueryTests method testQueryLine.
public void testQueryLine() throws Exception {
XContentBuilder xcb = createDefaultMapping();
client().admin().indices().prepareCreate("test").addMapping("_doc", xcb).get();
ensureGreen();
Line line = new Line(new double[] { -25, -25 }, new double[] { -35, -35 });
try {
client().prepareSearch("test").setQuery(QueryBuilders.geoShapeQuery(defaultGeoFieldName, line)).get();
} catch (SearchPhaseExecutionException e) {
assertThat(e.getCause().getMessage(), containsString("does not support " + GeoShapeType.LINESTRING + " queries"));
}
}
use of org.opensearch.geometry.Line in project OpenSearch by opensearch-project.
the class GeometryTestUtils method randomLine.
public static Line randomLine(boolean hasAlts) {
// we use nextPolygon because it guarantees no duplicate points
org.apache.lucene.geo.Polygon lucenePolygon = GeoTestUtil.nextPolygon();
int size = lucenePolygon.numPoints() - 1;
double[] lats = new double[size];
double[] lons = new double[size];
double[] alts = hasAlts ? new double[size] : null;
for (int i = 0; i < size; i++) {
lats[i] = lucenePolygon.getPolyLat(i);
lons[i] = lucenePolygon.getPolyLon(i);
if (hasAlts) {
alts[i] = randomAlt();
}
}
if (hasAlts) {
return new Line(lons, lats, alts);
}
return new Line(lons, lats);
}
Aggregations