【问题标题】:Spring Data - MongoDb finding nearest locations around a routeSpring Data - MongoDb 查找路线周围最近的位置
【发布时间】:2016-05-06 09:29:17
【问题描述】:

我有一个模型包含 geojson 点。使用弹簧数据查找最近的位置非常容易,但如何检索给定路线的最近位置?

我正在从 google 获取路线信息:

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

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: java spring mongodb


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    其次,在您的存储库中创建一个方法,其中包含您要使用“Within”一词搜索的参数。

    例子:

    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/

    【讨论】:

      【解决方案3】:

      Google 地图 API 返回路线的“步数”,其中包含该路段边缘的坐标。 您可以使用这些边在该直线段上创建外插点。让我们称它们为 p1,p2,p3,p4...pN。 然后您在数据库中针对这些点运行 $near 查询,您将 获取该路线附近最近的位置。

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

      【讨论】:

        猜你喜欢
        • 2021-08-07
        • 1970-01-01
        • 1970-01-01
        • 2021-10-28
        • 2015-03-17
        • 2016-06-08
        • 2011-09-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多