我已将ElasticSearch中的路径存储为Polygon.现在我有一个圆(一个点和一个半径),我能够检查圆点与多边形是否相交(下面是我使用的代码).
问题:如何获得与圆相交的路线中的点?
public Boolean isMatchingDoc(Long elasticDocId,Double latitude,Double longitude,Long radius) {
Coordinate origin = new Coordinate(latitude,longitude);
ShapeBuilder circleShapeBuilder = ShapeBuilder.newCircleBuilder().center(origin).radius(radius,DistanceUnit.METERS);
GeoShapeQueryBuilder geoShapeQueryBuilder = QueryBuilders.geoShapeQuery("route",circleShapeBuilder);
SearchRequestBuilder finalQuery = client.prepareSearch(INDEX).setTypes(TYPE)
.setQuery(QueryBuilders.termQuery("_id",elasticDocId)).setPostFilter(geoShapeQueryBuilder);
SearchResponse searchResponse = finalQuery.execute().actionGet();
SearchHits searchHits = searchResponse.getHits();
if (searchHits.getTotalHits() > 0) {
return true;
}
return false;
}
本文介绍了一种使用ElasticSearch查询与特定圆圈相交的多边形的方法,并提供了一个示例代码来演示如何实现该功能。讨论了如何定义圆圈并将其应用于地理形状查询中。
1972

被折叠的 条评论
为什么被折叠?



