Я пытаюсь выполнить запрос в ES для строки (в Java). Проблема в том, что он дает мне 2 очка с буфером, который не собирается точно выполнять пересечение с другими записями.
Я хочу посмотреть, пересекает ли что-нибудь фактическую линию, включая связь между точками. Возможно ли это?
if (literalValue instanceof LineString) {
Coordinate[] coords = ((LineString) literalValue).getCoordinates();
Arrays.stream(coords)
.forEach(
coordPair -> {
GeoDistanceQueryBuilder distanceBuilder =
new GeoDistanceQueryBuilder(Metacard.ANY_GEO);
distanceBuilder.point(coordPair.getOrdinate(1), coordPair.getOrdinate(0));
distanceBuilder.distance(
filter.getDistance(), DistanceUnit.fromString(filter.getDistanceUnits()));
boolQueryBuilder.should(distanceBuilder);
});
return boolQueryBuilder;
}
Это не удалось:
{
"query":{
"bool": {
"filter": {
"geo_shape": {
"GEO.WKT": {
"shape": {
"type": "linestring",
"coordinates" : [[29, 44], [24, 35], [34, 43]]
},
"relation": "intersects"
}
}
}
}
}
}