有没有办法将1 km²范围内相同位置的人聚集在一起?我正在获取人们的经度和经度,我想根据它将它们分组在一个数字中,以便识别共享相同位置的1 km²区域的人群。
我是node.js的新手。
感谢所有人
发布于 2020-12-01 21:28:26
我认为你最好的方法是使用标准化的网格系统,周围有很多系统,例如MGRS就是北约使用的系统,可以为我们提供不同级别的准确性。
我们可以使用诸如mgrs之类的模块来获取用户经纬度的网格参考,然后我们可以使用例如lodash的groupBy对这些用户进行分组。人们也可以使用Array.reduce来实现这个目的,但是_.groupBy对于解决这类问题非常方便。
const mgrs = require("mgrs");
const _ = require("lodash");
// Some sample users living within a few kms
let users = [
{ first: 'Andreias', last: 'Aragão', lat: 51.51697, lon: -0.11894 },
{ first: 'Babür', last: 'Erberk', lat: 51.50041, lon: -0.12823 },
{ first: 'William', last: 'Jørgensen', lat: 51.49879, lon: -0.13041 },
{ first: 'Clyde', last: 'Crawford', lat: 51.50928, lon: -0.1226 },
{ first: 'Silvijn', last: 'Werts', lat: 51.49843, lon: -0.12066 },
{ first: 'Jokubas', last: 'Laastad', lat: 51.50517, lon: -0.12312 },
{ first: 'Rebecca', last: 'Lawson', lat: 51.5018, lon: -0.12786 },
{ first: 'Oscar', last: 'Opland', lat: 51.50123, lon: -0.13245 },
{ first: 'Cláudio', last: 'Costa', lat: 51.50354, lon: -0.13123 },
{ first: 'Juan', last: 'Ruiz', lat: 51.50796, lon: -0.12884 }
]
// Add user MGRS grid square
users = users.map(user => {
// Get MGRS grid location accurate to ~1km
user.mgrs = mgrs.forward([user.lon, user.lat], 2);
return user;
})
const usersByLocation = _.groupBy(users, "mgrs");
console.log(usersByLocation);这将为我们提供如下所示的输出:
{
'30UXC9911': [
{
first: 'Andreias',
last: 'Aragão',
lat: 51.51697,
lon: -0.11894,
mgrs: '30UXC9911'
}
],
'30UXC9909': [
{
first: 'Babür',
last: 'Erberk',
lat: 51.50041,
lon: -0.12823,
mgrs: '30UXC9909'
},
{
first: 'William',
last: 'Jørgensen',
lat: 51.49879,
lon: -0.13041,
mgrs: '30UXC9909'
},
{
first: 'Silvijn',
last: 'Werts',
lat: 51.49843,
lon: -0.12066,
mgrs: '30UXC9909'
},
{
first: 'Jokubas',
last: 'Laastad',
lat: 51.50517,
lon: -0.12312,
mgrs: '30UXC9909'
},
{
first: 'Rebecca',
last: 'Lawson',
lat: 51.5018,
lon: -0.12786,
mgrs: '30UXC9909'
},
{
first: 'Oscar',
last: 'Opland',
lat: 51.50123,
lon: -0.13245,
mgrs: '30UXC9909'
},
{
first: 'Cláudio',
last: 'Costa',
lat: 51.50354,
lon: -0.13123,
mgrs: '30UXC9909'
}
],
'30UXC9910': [
{
first: 'Clyde',
last: 'Crawford',
lat: 51.50928,
lon: -0.1226,
mgrs: '30UXC9910'
},
{
first: 'Juan',
last: 'Ruiz',
lat: 51.50796,
lon: -0.12884,
mgrs: '30UXC9910'
}
]
}https://stackoverflow.com/questions/65089440
复制相似问题