gps相关计算

 

db.ShopGPS.ensureIndex({'coordinate':'2d'});

 

db.ShopGPS.find({'coordinate':{$near: [121.4905, 31.2646], $maxDistance:1}}) 

 

db.runCommand( { geoNear: "ShopGPS", near: [ 121.4905, 31.2646 ], spherical: true,

 maxDistance:1/6371,distanceMultiplier: 6371})

 

 

使用geoNear获得的结果里dis的单位,有两种情况:

1)spherical设为false(默认),dis的单位与坐标的单位保持一致
如果保存的是longitude/latitude,则dis的单位就是经度(或者纬度,单位是一致的)
如果保存的是meter,则dis的单位就是meter

2)spherical设为true,dis的单位是弧度

想要换算成公里(km)的话,
要么在程序里做,要么使用distanceMultiplier参数来定义转换方式:

对应于1)
如果要保存的坐标是经纬度,要计算的是公里,可设置 distanceMultiplier: 111
如果要计算英里,可将111换成69

对应于2)
如果要计算公里,可设置 distanceMultiplier: 6371
如果要计算英里,则需要把6371换成3959

猜你喜欢

转载自gutou9.iteye.com/blog/2249251
GPS