R

时间:2015-05-08 17:04:53

标签: r csv coordinates interpolation

尝试使用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.rangey.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中的错误(点,容差,圆):     无法从单个点导出网格参数!

1 个答案:

答案 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是否是单个点(是的,它是),然后查看它的定义位置。