我目前正在做一个分类项目,我使用的数据包括lat/long属性。为了简化模型,我认为用“网格”数字的单个列替换原始坐标可能更容易一些。
我的意思是将坐标覆盖的区域分割成任意数量的网格点,在网格中对每个方格进行编号,然后用网格数替换lat/long数字。例如,9方格可能如下所示:
123
456
789我在这里和谷歌上做了相当多的搜索,似乎找不到解决方案。我能找到的最接近的是环球横向墨卡托坐标系(有些R软件包支持),但是这个网格中的方格太大了。我希望能自己设定网格的大小。
我有点不知所措,并想知道这个论坛的善良的人是否知道任何R包或技术,以实现我想要的。我将附上一个我的lat/long列的例子。谢谢。
Latitude Longitude
41.95469 -87.800991
41.95469 -87.800991
41.994991 -87.769279
41.974089 -87.824812
41.974089 -87.824812
41.9216 -87.666455
41.891118 -87.654491
41.867108 -87.654224
41.867108 -87.654224
41.896282 -87.655232
41.919343 -87.694259发布于 2016-03-30 19:04:01
不是特别优雅,但这个很管用。
pos <- data.frame(lat=c(
41.95469,
41.95469,
41.994991,
41.974089,
41.974089,
41.9216,
41.891118,
41.867108,
41.867108,
41.896282,
41.919343),
long=c(
-87.824812,
-87.769279,
-87.800991,
-87.800991,
-87.824812,
-87.666455,
-87.654491,
-87.654224,
-87.654224,
-87.655232,
-87.694259))
gridx <- seq(from=-87.9,to=-87.6,by=0.01)
gridy <- seq(from=41.8,to=42,by=0.01)
xcell <- unlist(lapply(pos$long,function(x) min(which(gridx>x))))
ycell <- unlist(lapply(pos$lat,function(y) min(which(gridy>y))))
pos$cell <- (length(gridx) - 1) * ycell + xcellhttps://stackoverflow.com/questions/36314711
复制相似问题