当前位置: 首页 > 知识库问答 >
问题:

聚合一个点中具有相同坐标的点

陶睿
2023-03-14

我有一个关于R中空间聚合的问题。我的数据集有纬度/经度坐标,有些彼此接近,有些不接近。我想为彼此接近的纬度/经度坐标做一个点。
我不确定如何做到这一点。我是否将纬度/经度坐标作为组列出,并使求平均值以使一个点表示每个组?因为我对这类事情没什么经验。我希望你们中的任何人可能有一些有用的指导/可能的解决方案。

Time Received   Speed   Latitude    Longitude
1.47917E+12      1.5    38.9295887  -77.2478945
1.47917E+12       1     38.9295048  -77.247922
1.47917E+12       3     38.9294865  -77.2479055
1.47917E+12       5     38.9294865  -77.2479055
1.47917E+12       2     38.9294771  -77.2478712
1.47917E+12       2     38.9294772  -77.2478712
1.47917E+12      1.5    38.9294771  -77.2477417
1.47917E+12      1.5    38.9294771  -77.2477417

例如,如果我可以将下面的纬度/经度坐标设为一个点:

     38.9294771 -77.2478712
     38.9294772 -77.2478712
     38.9294771 -77.2477417
     38.9294771 -77.2477417

例如,如下所示,不影响时间和速度值:

38.9294771  -77.24774117

共有1个答案

司徒兴德
2023-03-14

您可以使用我在round_中找到的下面给出的函数,dplyr是否有任何等效函数?将坐标四舍五入到所需的精度。在下面的示例中,我使用0.1。

fakedata <- data.frame(time = 1:100, 
                       speed = sample(3, 100, replace=TRUE),
                       latitude = seq(from=20, by=0.01, length.out=100),
                       longitude = seq(from=30, by=0.01, length.out=100))


round_any = function(x, accuracy, f=round){f(x/ accuracy) * accuracy}

library(dplyr)

fakedata %>%
  mutate(latitude_round = round_any(latitude, accuracy = 0.1),
         longitude_round = round_any(longitude, accuracy = 0.1))

然后使用dplyr::group_by()根据舍入的坐标进行分组,并根据需要聚合时间和速度值。

 类似资料:
  • 引入插件 import VueAMap from 'vue-amap'; VueAMap.initAMapApiLoader({ key: 'YOUR CODE', plugin: [..., 'MarkerClusterer'] }); <vuep template="#example"></vuep> <template> <div class="amap-page-cont

  • 簇是在“我的地图”上创建的,但当标记具有相同的地址时,单击簇时,工具提示不会显示。我正在使用Gmaps标记聚类器。代码示例:`function initMap(){//map options var options={zoom:7,center:{lat:53.3938131,lng:-7.858913}}}var map=new google.maps.map(document.getEleme

  • 所以我想在10x10坐标系中转换不同支点之间的三个点 想象我想要什么: 这是我的第一个坐标系 翻译成: 现在,这些点必须保持在不同系统之间的同一点上,因此只有这些点的坐标应该更改。首先,我想我应该把之前的原点添加到转换后的坐标中,这对A和B是有效的,但C是不同的,也许我使用了一个错误的公式或其他东西 请你帮帮我

  • 我一直在尝试在聚集中添加超时,以避免等待每个流都完成。但是当我添加超时时,它不起作用,因为聚合器等待每个流完成。 E、 在我的流中,其中一个有2秒的延迟,另一个有4秒的延迟 我使用遗嘱执行人。newCachedThreadPool()以并行运行。我想释放包含的每条消息,直到超时完成 我一直在测试的另一种方法是使用默认的gatherer,并在scatterGather中设置GathereTimeou

  • 这是我想做的:将用户连接到他们观看的视频,就像用户- 我是如何做到的: CSV文件有2列,标题为用户和视频。用户下面是一个标识每个用户的数字,视频下面是一个标识每个视频的数字。一个用户对一个视频。有时用户的名字会在列表中再次出现在不同的视频中。有时视频编号会再次出现,因为它是由不同的用户观看的。 但是,这将返回关系用户在每个关系中查看1个视频。因此,每个用户和视频都有多个节点。 我想做的:创建更多

  • 本文向大家介绍MongoDB在不同文档中聚合具有相似ID的元素,包括了MongoDB在不同文档中聚合具有相似ID的元素的使用技巧和注意事项,需要的朋友参考一下 对于此类文档分组,请在MongoDBgregation()中使用$group。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是聚合不同文档中具有相似ID的元素的查询- 这将产生以下