【发布时间】:2015-05-29 15:00:47
【问题描述】:
我已使用$near 命令返回我坐标附近的城市列表。
Villages.find({loc: {$near: [lat,long], $maxDistance: 2}},
{fields: {name: 1, _id: 0}},
{limit: 1}
);
这可行,但我遇到了这样的问题:您可以靠近大城市的边缘,但在技术上仍然比您所在的城市更靠近下一个相邻城市的中心。因此,我会喜欢根据人口对结果进行加权(只有数据我必须猜测一个城市是否大)。因为我不相信我可以用$near 做到这一点,所以我需要手动(haversine 或其他)选择最近的城市。我该怎么办?
【问题讨论】:
-
什么是流星/芒果?您是否愿意为您的数据寻找替代来源?如果是这样,只需在 Google 上搜索数据或询问 OpenData.SE 的人员在哪里可以找到市中心。
-
Meteor 是一个类似 Node.js 的 javascript 框架,而 MongoDB 是一个 NoSQL 风格的数据库引擎。我正在使用 Geonames.org 数据库来获取我的城市名称和位置。他们有人口数据,但位置只是城市中心的坐标,而不是区域形状几何。
-
您可以根据总体更改 mongo 查询中的最大距离,即)population=20m 表示 maxdistance=2 population =40m 表示 maxdistance=4 这样
-
@Vignesh 有没有办法扭转这种规模,让更多的人口显示得更近?
标签: javascript mongodb meteor coordinates distance