相关疑难解决方法(0)

如何从ElasticSearch中的形状中获取交叉点

我已经将路线存储ElasticSearch为多边形.现在我有一个圆(一个点和一个半径),我能够检查圆点与多边形是否相交(下面是我使用的代码).

问题:如何获得与圆相交的路线中的点?

路线和圈子

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;
}
Run Code Online (Sandbox Code Playgroud)

java geo elasticsearch

7
推荐指数
1
解决办法
753
查看次数

标签 统计

elasticsearch ×1

geo ×1

java ×1