找回密码
 立即注册
查看: 6448|回复: 1

空间数据分析专题||第三周:空间数据处理及可视化—绘制点线面和网格

[复制链接]
发表于 2015-3-11 11:29:43 | 显示全部楼层 |阅读模式
本帖最后由 R语言微信号 于 2015-3-11 11:39 编辑


2015-03-11xxiao513


上期内容回顾
上一期我们介绍了空间数据如何在R语言的中sp对象和GIS通常所使用的外部格式数据对象间进行转换。在统一的坐标系基础上,我们能将不同类型的空间数据、地图元素组合在一起进行可视化。
温馨提示:温故而知新,点击文章末尾“阅读原文”查看上期内容~~

本期内容导读
本期介绍R传统绘图系统下的空间数据可视化方法,主要基于由sp包提供的Spatial类继承对象的绘图方法。

sp包提供了增强传统R语言绘图系统(plot,image,lines,points等)的绘图方法,以及一个使用Trellis系统(特别是lattice包中的xyplot或levelplot)并能用于条件绘图的spplot方法。

1.绘制点、线、多边形和栅格
以sp包自带的默兹河数据为例,分别绘制点、线、多边形和栅格。
library(sp)
#加载meuse数据集,该数据集为河流地区的重金属污染采样点数据
data(meuse)

#创建采样点的SpatialPointsDataFrame并绘图
coordinates(meuse)<-c("x", "y")
plot(meuse)
title("points")

#将采样点按顺序连接构造SpatialLines并绘图
cc <-coordinates(meuse)
m.sl <-SpatialLines(list(Lines(list(Line(cc)), "line1")))
plot(m.sl)
title("lines")

#加载河流边界数据构造SpatialPolygons并绘图
data(meuse.riv)
meuse.lst <-list(Polygons(list(Polygon(meuse.riv)),"meuse.riv"))
meuse.pol <-SpatialPolygons(meuse.lst)
plot(meuse.pol, col="grey")
title("polygons")

#加载河流区域数据构造SpatialPixels并绘图
data(meuse.grid)
coordinates(meuse.grid)<-c("x", "y")
meuse.grid <-as(meuse.grid, "SpatialPixels")
image(meuse.grid, col="grey")
title("grid")
可视化的四个图形如下:


2.空间对象的叠加显示
可以通过plot的add=TRUE参数实现多种空间对象的叠加显示
#使用add参数实现图形叠加(点和多边形)
plot(meuse)
plot(meuse.pol, add =TRUE)
3.使用spplot的Trellis/Lattice绘制地图
除了sp自带的plot函数绘图外,第二种绘图方式是使用spplot函数来绘图,该函数源于lattice包的绘图功能,同时保持了lattice绘图所有的灵活性还允许向地图中添加地理参考元素。spplot函数能以多个面板(lattice)的方式整合显示图的四维信息:地理坐标x和y,以彩色显示的属性值和面板标示符和多个面板方式显示的时间维信息。以河流数据为例,同时显示河流地区监测站点的4种重金属浓度分布图:

##使用spplot函数进行多面板绘图
library(sp)
#颜色系统选择
library(lattice)
trellis.par.set(sp.theme())
#加载数据
data(meuse)
coordinates(meuse)=~x+y
data(meuse.riv)
#构造河流的SpatialPolygons对象
meuse.sr =SpatialPolygons(list(Polygons(list(Polygon(meuse.riv)),"meuse.riv")))
rv=list("sp.polygons", meuse.sr, fill ="lightblue")
#构造比例尺对象
scale=list("SpatialPolygonsRescale", layout.scale.bar(),
offset=c(180500,329800), scale=500, fill=c("transparent","black"), which=4)
text1 =list("sp.text", c(180500,329900), "0", cex =.7, which=4)
text2 =list("sp.text", c(181000,329900), "500 m", cex =.7, which=4)
#构造指北针对象
arrow=list("SpatialPolygonsRescale", layout.north.arrow(),
offset=c(181300,329800),
scale=400, which=4)
#属性的颜色梯度划分
cuts =c(.2,.5,1,2,5,10,20,50,100,200,500,1000,2000)
#综合所有对象绘图
spplot(meuse, c("cadmium", "copper", "lead", "zinc"), do.log =TRUE,
       key.space ="right", as.table =TRUE,
       sp.layout=list(rv, scale, text1, text2,arrow),
main="Heavy metals(top soil), ppm", cex =.7, cuts = cuts)

拓展总结
R传统的空间绘图函数都是基于spatial对象构造的增强型plot函数,sp包中的spplot函数基于lattice绘图功能,能够整合多种地图元素和空间数据一起进行绘图,其灵活程度非常高。更多spplot函数实例可以参考其实例库:http://rspatial.r-forge.r-project.org/gallery/。下一期将为大家介绍GIS中常用的几种专题图制作方法,如等值线图、区域分布图、栅格地图等。

关注我们
—官方网站—
R语言中文网  www.r-china.net
—官方QQ群—
R语言中文论坛-2(1000人群):427060123
R语言中文论坛(2000人群,已满):74076289
Biostatistician(500):186701945
—官方微博—
新浪微博:@R语言中文网官网
—官方微信—
微信名:R语言中文网  微信号:rchinanet


点击“阅读原文”回顾第二周:空间数据处理及可视化—R的空间数据导入导出!
回复关键字“0311”获取文中示例中程序文件~
喜欢就点鼓励一下,多谢~

qrcode_for_gh_4a747f323181_344.jpg



微信扫一扫
关注该公众号




回复

使用道具 举报

发表于 2015-3-18 12:41:56 | 显示全部楼层
大赞!{:soso__10169062262133571330_1:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-29 10:35 , Processed in 0.035701 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表