作者:黄天元

HopeR:R语言空间数据分析(零)

最近对空间分析比较感兴趣,所以准备开始系统学习一下R中的空间数据挖掘。国外资料已经非常多,知难行易,一点一点夯实基础。主要资料如下:

CASA0005 Geographic Information Systems and Science

Spatial Data Science

Geocomputation with R

Geodesic geometry

下面做一个简单的上手案例,就是读取shape格式文件,然后进行观察和可视化。一般来说,shape格式文件需要有三个文件,才能够成为一个完整的整体(分别是".shp", ".shx"与 ".dbf"文件,具体参考shapefile文件_百度百科)。我们演示的原始文件来自于:https://github.com/andrewmaclachlan/CASA0005repo/tree/master/prac10_data/statistical-gis-boundaries-london/ESRI,分别是以下3个文件:




R语言创建空间权重矩阵 r语言空间统计分析_R语言创建空间权重矩阵


我把它们放在data目录下,实现代码如下:


library(pacman)
p_load(sf)

shape <- st_read("data/London_Borough_Excluding_MHW.shp")


这样,就可以把shape格式的文件读入到R中,现在放到shape变量中了。它本质上是一个带有元信息的数据框,可以用summary来观察它的数据结构:


summary(shape)


R语言创建空间权重矩阵 r语言空间统计分析_数据科学_02


同时可以进行可视化:


plot(shape)


R语言创建空间权重矩阵 r语言空间统计分析_空间数据分析与r语言实践_03


我们可以看到,如果是分类变量,那么就会利用不同的离散颜色做区分;如果是数值变量,则会自动调用冷暖色调来做数值区分。此外,如果属性中只有缺失值,那么地理空间中将会是一片空白(如SUB_2009)。我们也可以只提取其地理属性(边界),然后进行可视化:


shape %>% 
  st_geometry() %>%
  plot()


R语言创建空间权重矩阵 r语言空间统计分析_ci_04


tmap包提供了较好的可视化功能,不过包的加载可能会花费一些时间。比如,我们来对HECTARES变量进行可视化:


p_load(tmap)
tmap_mode("plot")
qtm(shape,fill = "HECTARES")


R语言创建空间权重矩阵 r语言空间统计分析_空间数据分析与r语言实践_05


这里图例位置显然安排不合理,但是以后再来提如何修改这些细节。