尝试使用IDW插入一组数据。我能够引入csv并将其转换为空间点数据帧。我的列标题是lat和lon而不是x和y。
由于csv代表农民田地,坐标距离非常小。因此,代码认为x和y的最小和最大坐标是相同的,因为as.numeric
丢弃小数点并舍入坐标。
这就是代码出错的地方,因为当我尝试运行expand.grid
时,x.range[1]
和x.range[2]
没有区别。
有没有人看到可以修复的东西?有没有办法在我的坐标中携带更多的小数点,以确保x.range[1]
和x.range[2]
之间存在差异,y.range
同样如此?
path<- setwd()
library(ggplot2)
library(gstat)
library(sp)
library(maptools)
#Checking rgeos availability: TRUE
nuclides <- read.csv("fieldnuclides.csv")
#convert this basic data frame into a spatial points data frame
coordinates(nuclides) = ~ lon + lat
## Create a grid from the values in your points dataframe
## first get the range in data
x.range <- as.numeric(range(nuclides@coords[,1]))
y.range <- as.numeric(range(nuclides@coords[,2]))
nuclides.grd <- expand.grid(x = seq(from = x.range[1], to = x.range[2], by = 3.5), y = seq(from = y.range[1], to = y.range[2], by = 3.5))
#
# ## convert grid to SpatialPixel class
coordinates(nuclides.grd) <- ~ x+y
gridded(nuclides.grd) <- TRUE
#
我的x.range
和y.range
摘要位于
summary(x.range)
Min. 1st Qu. Median Mean 3rd Qu. Max.
-80.65 -80.64 -80.64 -80.64 -80.64 -80.63
summary(y.range)
Min. 1st Qu. Median Mean 3rd Qu. Max.
43.42 43.43 43.43 43.43 43.43 43.43
所以有区别,但是coordinates(nuclides.grd)
给出了以下错误,说明了它的单点,但根据摘要存在差异
坐标(nuclides.grd)&lt; - ~x + y
gridded(nuclides.grd)&lt; - TRUE
points2grid中的错误(点,容差,圆):
无法从单个点导出网格参数!
答案 0 :(得分:0)
根据您的摘要,x
的范围是0.02,y
的范围是0.01。但是,在expand.grid
来电中,您需要从最小到最大的序列,步长为3.5。因此,您的seq
来电将分别返回1个值,而您的expand.grid
将是单个点。
我建议您在by = 3.5
来电中使用length.out = 10
替换seq
。然后,您将在序列中获得多个值,并在网格中获得多个点。
作为调试技术,请检查您的输入!您说错误是coordinates(nuclides.grd)
说它是单点。这很容易验证!检查nuclides.grd
是否是单个点(是的,它是),然后查看它的定义位置。