Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将同一地点1 km和#xB2的人群分组;地区_Javascript_Node.js - Fatal编程技术网

Javascript 将同一地点1 km和#xB2的人群分组;地区

Javascript 将同一地点1 km和#xB2的人群分组;地区,javascript,node.js,Javascript,Node.js,是否有办法将同一地点1 km²区域的人员分组。我得到了人们的经度和广度,我想根据这些经度和广度对他们进行分组,以识别共享1 km²区域相同位置的人群 我是node.js的新手 谢谢大家我认为您最好的方法是使用标准化的网格系统,周围有很多,例如北约使用的网格系统,可以给我们提供不同程度的准确性 我们可以使用一个模块,例如为用户的lat/long获取网格参考,然后我们可以使用lodash等对这些用户进行分组。我们也可以使用Array.reduce来实现这一目的,但是z.groupBy对于这类问题非常

是否有办法将同一地点1 km²区域的人员分组。我得到了人们的经度和广度,我想根据这些经度和广度对他们进行分组,以识别共享1 km²区域相同位置的人群

我是node.js的新手


谢谢大家

我认为您最好的方法是使用标准化的网格系统,周围有很多,例如北约使用的网格系统,可以给我们提供不同程度的准确性

我们可以使用一个模块,例如为用户的lat/long获取网格参考,然后我们可以使用lodash等对这些用户进行分组。我们也可以使用Array.reduce来实现这一目的,但是z.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'
        }
      ]
}

我认为你最好的方法是使用一个标准化的网格系统,周围有很多,例如北约使用的网格系统,可以给我们不同程度的准确性

我们可以使用一个模块,例如为用户的lat/long获取网格参考,然后我们可以使用lodash等对这些用户进行分组。我们也可以使用Array.reduce来实现这一目的,但是z.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'
        }
      ]
}

我认为这个问题的回答严重不足。如果您有一组点,可以通过多种方式将它们分组到区域中。事实上,这些组可以有多种形状,并满足1km2面积约束。如果这些形状是以某种方式定义的,您可以测试每个人它所属的区域,并有一个集合地图(甚至一个数组)。但是,如上所述,这个问题太开放了。你应该添加信息,并说明你尝试过什么,以及这种方法的问题是什么。我认为这个问题的回答严重不足。如果您有一组点,可以通过多种方式将它们分组到区域中。事实上,这些组可以有多种形状,并满足1km2面积约束。如果这些形状是以某种方式定义的,您可以测试每个人它所属的区域,并有一个集合地图(甚至一个数组)。但是,如上所述,这个问题太开放了。您应该添加信息,并指定您尝试过什么以及该方法存在的问题。谢谢,这真的很有帮助!谢谢,能帮上忙真的很有帮助!