如何在多边形内找到点?

How to find points within Polygon?

我最近在使用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);

但是我可以用什么来获取这个多边形内的点呢?

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/ . You might want to have a look at the getting started guide for Hibernate Search 6,以便在迁移之前了解新的 API。

如果您需要继续使用 Hibernate Search 5,则必须使用 lucene-spatial:按照 lucene-spatial 的预期实现索引点的桥接,并直接使用 lucene-spatial 生成 lucene-spatial 查询API。