首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R-将纬度和经度转换为网格数

R-将纬度和经度转换为网格数
EN

Stack Overflow用户
提问于 2016-03-30 16:34:48
回答 1查看 1.6K关注 0票数 0

我目前正在做一个分类项目,我使用的数据包括lat/long属性。为了简化模型,我认为用“网格”数字的单个列替换原始坐标可能更容易一些。

我的意思是将坐标覆盖的区域分割成任意数量的网格点,在网格中对每个方格进行编号,然后用网格数替换lat/long数字。例如,9方格可能如下所示:

代码语言:javascript
复制
123
456
789

我在这里和谷歌上做了相当多的搜索,似乎找不到解决方案。我能找到的最接近的是环球横向墨卡托坐标系(有些R软件包支持),但是这个网格中的方格太大了。我希望能自己设定网格的大小。

我有点不知所措,并想知道这个论坛的善良的人是否知道任何R包或技术,以实现我想要的。我将附上一个我的lat/long列的例子。谢谢。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-30 19:04:01

不是特别优雅,但这个很管用。

代码语言:javascript
复制
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 + xcell
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36314711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档