【发布时间】:2019-06-07 11:42:03
【问题描述】:
我正在尝试创建一个脚本,该脚本将为给定的一组坐标生成二维地形图或等高线图。我的目标类似于
contour(volcano)
但对于用户设置的任何位置。事实证明,这具有惊人的挑战性!我试过了:
library(elevatr)
library(tidyr)
# Generate a data frame of lat/long coordinates.
ex.df <- data.frame(x=seq(from=-73, to=-71, length.out=10),
y=seq(from=41, to=45, length.out=10))
# Specify projection.
prj_dd <- "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
# Use elevatr package to get elevation data for each point.
df.sp <- get_elev_point(ex.df, prj = prj_dd, src = "epqs")
# Convert from spatial to regular data frame, remove extra column.
# Use tidyr to convert to lat x lon table with elevation as fill.
# Sorry for the terrible code, I know this is sloppy.
df <- as.data.frame(df.sp)
df$elev_units <- NULL
df.w <- df %>% spread(y, elevation)
df.w <- as.matrix(df.w)
这将创建一个类似于volcano 数据集的矩阵,但填充了NAs,除了包含高程数据的 10 个纬度/经度对。 contour 可以处理NAs,但contour(df.w) 的结果只有一条细线。我不知道从这里去哪里。我只是需要更多积分吗?提前感谢您的帮助——我对 R 很陌生,我想我已经咬掉了这个项目,我无法咀嚼。
【问题讨论】:
-
是的,您需要更多数据。用
ex.df <- expand.grid(x = seq(-73, -71, length.out = 100), y = seq(41, 45, length.out = 100))之类的东西制作ex.df