在R中映射空间分布

时间:2013-04-06 16:11:49

标签: r map distribution spatial

我的数据集包括17个站,每个站有24个小时的温度值。 我想在每小时映射每个站点的值,并在所有时间内这样做。 我想做的就是形象。

enter image description here

数据采用以下格式:

     N2     N3     N4    N5     N7     N8    N10    N12   N13    N14   N17   N19    N25    N28   N29    N31    N32
1 1.300 -0.170 -0.344 2.138  0.684  0.656  0.882  0.684 1.822  1.214 2.046 2.432  0.208  0.312 0.530  0.358  0.264
2 0.888 -0.534 -0.684 1.442 -0.178 -0.060  0.430 -0.148 1.420  0.286 1.444 2.138 -0.264 -0.042 0.398 -0.196 -0.148
3 0.792 -0.564 -0.622 0.998 -0.320  1.858 -0.036 -0.118 1.476  0.110 0.964 2.048 -0.480 -0.434 0.040 -0.538 -0.322
4 0.324 -1.022 -1.128 1.380 -0.792  1.042 -0.054 -0.158 1.518 -0.102 1.354 2.386 -0.708 -0.510 0.258 -0.696 -0.566
5 0.650 -0.774 -0.982 1.124 -0.540  3.200 -0.052 -0.258 1.452  0.028 1.022 2.110 -0.714 -0.646 0.266 -0.768 -0.532
6 0.670 -0.660 -0.844 1.248 -0.550  2.868 -0.098 -0.240 1.380 -0.012 1.164 2.324 -0.498 -0.474 0.860 -0.588 -0.324
  MeteoSwiss
1       -0.6
2       -1.2
3       -1.0
4       -0.8
5       -0.4
6       -0.2

其中N2,N3,... m MeteoSwiss是站点,每行显示每小时站点的温度值。

id  Longitude   Latitude
2   7.1735          45.86880001
3   7.17254         45.86887001
4   7.171636    45.86923601
5   7.18018         45.87158001
7   7.177229    45.86923001
8   7.17524         45.86808001
10  7.179299    45.87020001
12  7.175189    45.86974001
13  7.179379    45.87081001
14  7.175509    45.86932001
17  7.18099  45.87262001
19  7.18122  45.87355001
25  7.15497  45.87058001
28  7.153399 45.86954001
29  7.152649 45.86992001
31  7.154419 45.87004001
32  7.156099 45.86983001
MeteoSwiss  7.184    45.896

1 个答案:

答案 0 :(得分:4)

我定义了一个或多或少类似于您的数据的玩具示例:

vals <- matrix(rnorm(24*17), nrow=24)
cds <- data.frame(id=paste0('N', 1:17),
                  Longitude=rnorm(n=17, mean=7.1),
                  Latitude=rnorm(n=17, mean=45.8))
vals <- as.data.frame(t(vals))
names(vals) <- paste0('H', 1:24)

sp包定义了几个要存储的类和方法 显示空间数据。对于你的例子,你应该使用 SpatialPointsDataFrame课程:

library(sp)

mySP <- SpatialPointsDataFrame(coords=cds[,-1], data=data.frame(vals))

和显示信息的spplot方法:

spplot(mySP, as.table=TRUE,
       col.regions=bpy.colors(10),
       alpha=0.8, edge.col='black')

spplot.points

此外,您可能会发现spacetime包有用 (paper at JSS)。