在MongoDB中计算多边形到点的距离

时间:2018-09-25 12:39:42

标签: mongodb polygon distance geonear

我可以使用2dsphere索引计算MongoDB中从点到点的距离。

但是,现在我需要计算从给定点到多边形的距离。

我正在使用以下代码:

  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 :(得分:0)

我使用mongo驱动程序解决了该问题:

mongoTemplate.geoNear(                             NearQuery.near(new Point(new Point(pin.getDinamycPoint()。getPointId()。getY(),pin.getDinamycPoint()。getPointId()。getX())))。spherical(true)                                     .inKilometers()。query(new Query()。addCriteria(Criteria.where(“ locationId”)。is(locationId)))),                             Location.class);

这为我提供了从一个点到GeoJsonPolygon中最近的点的正确距离。

必须在集合的GeoJsonPolygon字段中创建2dsphere索引。