Spring Data - MongoDb查找路线周围的最近位置

时间:2016-01-28 20:11:26

标签: java spring mongodb

我的模型包含geojson点。找到最接近弹簧数据的方法很简单,但如何找到最近的位置以获得给定路线?

我从谷歌获取路线信息:

http://maps.googleapis.com/maps/api/directions/xml?origin=48.208174,16.373819&destination=48.340670,16.717540&sensor=false&units=metric&mode=driving

3 个答案:

答案 0 :(得分:3)

来自地图googleapi的路线信息被分解为具有纬度/经度坐标的起始位置和结束位置的步骤。

计算模型中点的距离与路线中的所有起点/终点位置,可以衡量点与路线的距离。路线起点/终点的最小“距离”将是该路线的最近位置。

当计算的距离大于先前的最小累积距离时,您可以通过丢弃任何点来优化计算。

答案 1 :(得分:2)

Google maps api返回路线的“步数”,其中包含该路段边缘的坐标。 您可以使用这些边缘在该直线拉伸上创建外推点。让我们称它们为p1,p2,p3,p4 ...... pN。 然后你在数据库中运行$ near查询这些点,你会的 到达该路线附近的最近位置。

enter image description here

打开街道地图数据库提供路线坐标信息, 您可以使用它来补充您的数据。 详细答案如下:Get exact geo coordinates along an entire route, Google Maps or OpenStreetMap

答案 2 :(得分:1)

首先,你需要得到这个结果然后把它放在一个包含Lat + Lng的数组中。

其次,在您的资源库中创建一个方法,其中包含您希望使用术语"在"内搜索的参数。

示例:

List<MyObject> findByLocationWithin(Box box);

此方法代表相应的条件:

{"location" : {"$geoWithin" : {"$box" : [ [x1, y1], [x2, y2]}}}

如果您需要更多信息,请访问以下链接:

http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongodb.repositories.queries

https://docs.mongodb.org/manual/reference/operator/query/box/