Как найти точки внутри полигона? - PullRequest
0 голосов
/ 04 октября 2019

Я недавно работал с пространством гибернации, и у меня есть такой вопрос. Я хочу получить все точки внутри многоугольника. Как я могу это сделать?

Например, мой дистанционный запрос выглядит так:

    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 Ответ

1 голос
/ 04 октября 2019

Пространственная поддержка Hibernate Search 5 охватывает только дистанционные запросы. Сопоставление точек внутри многоугольника не поддерживается.

Hibernate Search 6 предоставляет предикат "в пределах многоугольника" , но API в Hibernate Search 6 отличаются от API в Search 5. Если выВы можете использовать последнюю бета-версию: http://hibernate.org/search/releases/6.0/. Возможно, вы сначала захотите взглянуть на руководство по началу работы для Hibernate Search 6 , чтобы понять новые API перед миграцией.

Если вам нужно остаться в Hibernate Search 5вам придется использовать lucene-spatial: реализовать мосты для индексации точек, как ожидает lucene-spatial, и генерировать пространственно-пространственные запросы непосредственно с помощью пространственно-ориентированных API-интерфейсов.

...