Вычислить расстояние от полигона до точки в MongoDB - PullRequest
0 голосов
/ 25 сентября 2018

Я могу рассчитать расстояния в MongoDB от точки до точки, используя 2dsphere index.

Однако теперь мне нужно вычислить расстояние от данной точки до многоугольника.

Яиспользуя следующий код:

  Document commandNoIntersect = new Document("geoNear", "Location")
                            .append("near", new com.mongodb.client.model.geojson.Point(new Position(Longitude, Latitude)))
                            .append("spherical", true)
                            .append("query", new Document(new Document("location", locationId)))
                            .append("distanceMultiplier", 0.001);

database.runCommand (commandNoIntersect);

Мой индекс 2dsphere - это координаты многоугольника.Результаты не согласованы, как в расстояниях от точки к точке.

Я ценю ваши отзывы,

1 Ответ

0 голосов
/ 26 сентября 2018

Я решил проблему с помощью драйвера монго:

mongoTemplate.geoNear (NearQuery.near (новая точка (новая точка (pin.getDinamycPoint (). GetPointId (). GetY (), pin.getDinamycPoint ().getPointId (). getX ()))). spherical (true) .inKilometer (). query (new Query (). addCriteria (Criteria.where ("locationId"). is (locationId))), Location.class);

Это дает мне правильные расстояния от точки до ближайшей точки в GeoJsonPolygon.

В поле GeoJsonPolygon в коллекции должен быть создан 2-сферный индекс.

...