如何用R从指定经纬度创建等间距1×4网格(间距150米)
在R中基于指定起点创建经纬度网格(间距150米)
当然可以用R实现,推荐用geosphere包处理经纬度的距离偏移计算,以下是针对你需求的具体方案:
情况1:2×2网格(对应你给出的4点排列)
你的代码示例显示4个点排列为2行2列,即左上角起点,横向、纵向各偏移150米:
1. 安装加载依赖包
install.packages("geosphere") library(geosphere)
2. 定义起点坐标
注意geosphere函数要求经度在前,纬度在后:
# 左上角起点Point1 start_point <- c(lon = 0.885039037, lat = 51.83985301)
3. 计算所有网格点
用destPoint()函数,通过方位角和距离计算偏移点:
- 正东方向方位角为90°,正南方向为180°
- 距离单位为米
# Point2:Point1向东150米 point2 <- destPoint(p = start_point, b = 90, d = 150) # Point3:Point1向南150米 point3 <- destPoint(p = start_point, b = 180, d = 150) # Point4:Point2向南150米(或Point3向东150米,结果一致) point4 <- destPoint(p = point2, b = 180, d = 150)
4. 整理结果
grid_2x2 <- data.frame( 点名称 = c("Point1", "Point2", "Point3", "Point4"), 经度 = c(start_point[1], point2[1], point3[1], point4[1]), 纬度 = c(start_point[2], point2[2], point3[2], point4[2]) ) # 输出高精度结果 print(grid_2x2, digits = 9)
输出示例:
点名称 经度 纬度 1 Point1 0.885039037 51.83985301 2 Point2 0.886912154 51.83984098 3 Point3 0.885027872 51.83855302 4 Point4 0.886901000 51.83854099
情况2:1×4横向网格
如果是一行4个点(从起点开始依次向东偏移150米),代码如下:
# 依次向东偏移150米生成4个点 point1 <- start_point point2 <- destPoint(point1, b = 90, d = 150) point3 <- destPoint(point2, b = 90, d = 150) point4 <- destPoint(point3, b = 90, d = 150) # 整理结果 grid_1x4 <- data.frame( 点名称 = c("Point1", "Point2", "Point3", "Point4"), 经度 = c(point1[1], point2[1], point3[1], point4[1]), 纬度 = c(point1[2], point2[2], point3[2], point4[2]) ) print(grid_1x4, digits = 9)
内容的提问来源于stack exchange,提问作者mikejwilliamson
相关产品推荐
相关产品推荐

