如何在多边形内查找点?

时间:2019-10-04 09:47:28

标签: hibernate hibernate-search hibernate-spatial

我最近在休眠空间中工作,我有一个问题。我想获取多边形内的所有点。我该怎么办?

例如,我的距离查询看起来像这样:

    final Coordinates coordinates = Point.fromDegrees(searchDistanceParameters.getLatitude(), searchDistanceParameters.getLongitude());
    final Query fromCoordinates = SpatialQueryBuilderFromCoordinates.buildDistanceQuery(coordinates, searchDistanceParameters.getDistance(), "location");
    final FullTextSession fullTextSession = Search.getFullTextSession(session);
    final FullTextQuery textQuery = fullTextSession.createFullTextQuery(fromCoordinates, GeoPointModel.class);

我创建一个这样的多边形:

        GeometryFactory geometryFactory = new GeometryFactory();
        Polygon polygon = geometryFactory.createPolygon(coordinates);

但是我可以用来在该多边形内获取点吗?

1 个答案:

答案 0 :(得分:1)

Hibernate Search 5的空间支持仅涵盖距离查询。不支持多边形内的匹配点。

Hibernate Search 6确实提供了a "within polygon" predicate,但是Hibernate Search 6中的API与Search 5中的API不同。 如果可以的话,您可以使用最新的Beta:http://hibernate.org/search/releases/6.0/。您可能需要先看看getting started guide for Hibernate Search 6,以便在迁移之前了解新的API。

如果您需要停留在Hibernate Search 5上,则必须使用lucene-spatial:按照lucene-spatial的期望实现到索引点的桥接,并直接使用Lucene-Spatial API生成Lucene-Spatial查询。