我在Google地图上绘制了1000个多边形数据(作为一个区域),其数据存储在mongodb中。
现在我必须找到天气点是否位于该多边形内。
我已经使用javascript成功实现了这一目标。但是现在我想将我的函数转换为聚合阶段。
这是我的js代码。
function checkpoint(point, vs) {
let x = point[0], y = point[1];
let inside = false;
let j = vs.length - 1;
for (let i = 0; i < vs.length; j = i++) {
let xi = vs[i][0];
let yi = vs[i][1];
let xj = vs[j][0];
let yj = vs[j][1];
let intersect = ((yi > y) != (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
if (intersect) inside = !inside;
}
return inside;
};
我知道我们可以在聚合内使用条件,但是数组值呢? 我如何遍历每个数组值?聚合内部?
这是我的数据格式
{
"_id":"5bc50c0e85da251e84cb8557",
"location":[
[23.586698,71.203369],
[21.378973,70.049805],
[21.225437,72.203125]
],
"name":"zone x",
"detail":"#ff0000",
"__v":0
}
并且使用聚合代替js函数会好/高效/快速吗?