我试图使用OSRM来获得一个位置列表,这些位置是根据它们之间的距离来排序的。为此,我使用了Trip服务(https://github.com/Project-OSRM/osrm-backend/blob/master/docs/http.md#trip-service)。
给定编码的折线:
omq~Fji_vOg@sHQcnAjCtrAkCs|AvHpcBwCeeB
我收到以下消息:
"waypoints": [
{
"waypoint_index": 0,
"trips_index": 0,
"hint": "RzfEg1U3xIPaAAAAJgAAAAAAAAAAAAAANgAAAAoAAAAAAAAAAAAAAHM6AACFecb6__B-AoR5xvoQ8X4CAACPBd_PZ4A=",
"name": "",
"location": [
-87.656059,
41.873663
]
},
{
"waypoint_index": 2,
"trips_index": 0,
"hint": "OTfEg5M4xINDAwAAnwEAAAAAAAAAAAAA0AAAAGgAAAAAAAAAAAAAAHM6AACJf8b6xvF-Aoh_xvrY8X4CAADPEN_PZ4A=",
"name": "",
"location": [
-87.654519,
41.873862
]
},
{
"waypoint_index": 5,
"trips_index": 0,
"hint": "WuVchFzlXIQ6AwAAbwUAAAAAAAAAAAAAzgAAAFwBAAAAAAAAAAAAAHM6AAD3sMb6EPN-Avywxvoy8n4CAACfBd_PZ4A=",
"name": "",
"location": [
-87.641865,
41.874192
]
},
{
"waypoint_index": 1,
"trips_index": 0,
"hint": "PDfEg343xIOuAQAAggQAAAAAAAAAAAAAawAAACEBAAAAAAAAAAAAAHM6AACsfMb6su9-Aq58xvp2734CAADPEN_PZ4A=",
"name": "",
"location": [
-87.655252,
41.87333
]
},
{
"waypoint_index": 3,
"trips_index": 0,
"hint": "VuVchFjlXITqAQAA0QEAAAAAAAC1BAAAegAAAHUAAAAAAAAALQEAAHM6AACYtsb6L_J-AjK3xvoy8n4CAABvFt_PZ4A=",
"name": "",
"location": [
-87.640424,
41.873967
]
},
{
"waypoint_index": 6,
"trips_index": 0,
"hint": "6WJUhBgEhoTTBAAAdgQAAAAAAAAAAAAANAEAAB4BAAAAAAAAAAAAAHM6AAAJesb6H-x-Alh4xvoa7H4CAAB_Ft_PZ4A=",
"name": "",
"location": [
-87.655927,
41.872415
]
},
{
"waypoint_index": 4,
"trips_index": 0,
"hint": "TOVchFDlXIRTAgAAhQEAACoAAADuAAAAlAAAAGIAAAAKAAAAPAAAAHM6AAAtuMb6FvB-Aja4xvoS734CAQCPBd_PZ4A=",
"name": "",
"location": [
-87.640019,
41.87343
]
}
]用于测试的URL:vOg@sHQcnAjCtrAkCs|AvHpcBwCeeB)?overview=false
(为了更好地理解),他们是这样绘制的:

如果我正确地理解了文档,那么waypoint_index应该按距离提供位置的顺序。如果是这样的话,考虑到结果,它似乎不起作用。在这里检查一下:
想要
Group 1
lat: 41.87368, lon: -87.65606
lat: 41.87388, lon: -87.65452
lat: 41.87327, lon: -87.65525
lat: 41.87241, lon: -87.65636
Group 2
lat: 41.87317, lon: -87.64001
lat: 41.87397, lon: -87.64186
lat: 41.87397, lon: -87.64027实际
Group 1
lat: 41.873663, lon: -87.656059
lat: 41.87333, lon: -87.655252
lat: 41.873862, lon: -87.654519
Group 2
lat: 41.873967, lon: -87.640424
lat: 41.87343, lon: -87.640019
lat: 41.874192, lon: -87.641865
Group 1
lat: 41.872415, lon: -87.655927如您所见,waypoint_index在下提供的顺序,实际确实将最后一项排除在其假定的组(1)之外。我认为这可能与往返选项有关,是这样的吗?如果是的话,我可以在旅行服务上设置一个选项来提供我所需要的结果吗?
或者,是否有另一个服务将接收一个位置列表并根据它们之间的距离返回它们?因为我不能提供开始/结束。
我只想发送一个位置列表,并收到它们的顺序,通过接近,而不是使用往返(如果这是打破了以前的要求)。
谢谢!
发布于 2018-03-20 19:04:34
按他们之间的距离排列
如果您需要访问所有的路径点,那么trip服务所做的就是以最小化总驱动时间的方式对它们进行排序,而不是按直线距离对它们进行聚类。
如果您查看实际生成的路径,则顺序是有意义的:这是一次循环旅行,包括所有提供的位置(至少看起来是最佳的)。

https://stackoverflow.com/questions/48893038
复制相似问题