找回密码
 注册
查看: 4347|回复: 0

R地理信息可视化包:plotGoogleMaps

[复制链接]
发表于 2013-6-5 15:00:59 | 显示全部楼层 |阅读模式
plotGoogleMaps包提供在浏览器上处理地理信息数据的互动展示装备,使用Chrome浏览器效果最好。它专为自动创建用户数据与Google Maps结合的网络地图而设计。输入是相对坐标参考系的空间数据。用于空间数据及空间数据操作的类和函数在Applied Spatial Data Analysis with R(Bivand et al, 2008)有详细的描述。2.0以上版本支持时空数据的绘制展示。
plotGoogleMaps基于GoogleMaps API,让非web编程专家也能创建地图mashup,但JavaScript、XML、Ajax、XHTML的基本知识还是需要的。
借助plotGoogleMaps,只需要一个R命令就可以在Google提供的基础地图上添加元素和附加功能。

plotGoogleMaps V2.0的使用示例
——A plotGoogleMaps tutorial,by Milan Kilibarda
安装:
install.packages('plotGoogleMaps')
载入包
library(plotGoogleMaps)
R还会自动载入一些plotGoogleMaps运行依赖的包。
绘制空间点
以默兹(meuse)数据集为例,绘制SpatialPointsDataFrame对象。meuse是1990年收集的关于默兹河(the river Meuse)流域的表土重金属浓度、位置、与河流的距离等数据。

#数据准备
#点数据
data(meuse)
coordinates(meuse)<-~x+y #转换为 SPDF
proj4string(meuse)<-CRS('+init=epsg:28992')
#添加坐标参照系统
#创建点数据的网络地图
m<-plotGoogleMaps(meuse,filename='myMap1.htm')

第一幅创建的地图命名为myMap1.htm,所有位置数据点已经绘制在地图上,而属性数据也可以通过移动鼠标来浏览。
在这个示例中,绘制的参数是锌(zinc),位置图标被锌的标签取代。改变基图,设定图层名称,定义绘制参数。

# zinc labels
ic=iconlabels(meuse$zinc, height=12)
m<-plotGoogleMaps(meuse,zcol='zinc',filename='myMap_z2.htm',
iconMarker=ic, mapTypeId='ROADMAP',layerName = 'MEUSE POINTS')
采样锌浓度可以用比例符号绘制,颜色与实测浓度关联。最大的半径对应最大的浓度。

m<-bubbleGoogleMaps(meuse,zcol='zinc',max.radius = 80,filename='myMap3.htm')
# 移除轮廓
m<-bubbleGoogleMaps(meuse,zcol='zinc',max.radius = 80,
filename='myMap3.htm',strokeOpacity=0)

segmentGoogleMaps()函数提供多元映射功能,可以创建饼图,或更确切地称为“分段圆”。在这个例子,饼图用于表示meuse样本的重金属浓度。

# colPalette defines colors for plot
m<-segmentGoogleMaps(meuse, zcol=c('zinc','dist.m'),
mapTypeId='ROADMAP', filename='myMap4.htm',
colPalette=c('#E41A1C','#377EB8'), strokeColor='black')

ellipseGoogleMaps()函数提供位置不确定性绘制功能。ellipseGoogleMaps()绘制坐标计算的标准误差,以误差椭圆描述二维位置的不确定性。
这个示例展示大地测量网络设计的结果。

# Results of least square
ell<- data.frame(E=c(7456263,7456489,7456305,7457415,7457688),
N=c(4954146 ,4952978, 4952695, 4953038, 4952943),
Name=c('30T', '31T', '3N', '40T', '41T'),
A=c(2.960863 ,4.559694, 7.100088, 2.041084 ,3.375919),
B=c(2.351917, 2.109060, 2.293085, 1.072506, 2.382449),
teta=c(28.35242, 41.04491, 38.47216, 344.73686, 27.53695))
coordinates(ell) <- ~E+N
proj4string(ell) <- CRS("+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999
+x_0=7500000 +y_0=0 +ellps=bessel
+towgs84=574.027,170.175,401.545,4.88786,-0.66524,-
13.24673,0.99999311067 +units=m")
# fillOpacity 100 %
m<-ellipseGoogleMaps( ell,filename="Ellipse.htm",zcol=2:4,
mapTypeId='ROADMAP',fillOpacity=1,strokeOpacity=0)


绘制空间线
plotGoogleMaps提供空间线的绘制功能,与空间点的绘制相似。在这个示例中,线条使用默认颜色,而线条大小(粗细)与线属性相关。这里空间线用于表示与默兹河的距离。
参数strokeWeight定义了线条大小,由线属性level(与默兹河的距离)决定。

# Line data
data(meuse.grid)
coordinates(meuse.grid)<-c('x','y')
meuse.grid<-as(meuse.grid,'SpatialPixelsDataFrame')
im<-as.image.SpatialGridDataFrame(meuse.grid['dist'])
cl<-ContourLines2SLDF(contourLines(im))
proj4string(cl) <- CRS('+init=epsg:28992')
mapMeuseCl<- plotGoogleMaps(cl,zcol='level',strokeWeight=1:9 ,
filename='myMap5.htm',mapTypeId='ROADMAP')

绘制空间多边形
绘制空间多边形需要用到maptools包提供的图形文件(shapefile)。数据是美国北卡罗来纳州100个县的婴儿出生与死亡数字,1974年7月1日至1978年6月30日,以及1979年7月1日至1984年6月30日。
RColorBrewer包用于颜色编码。
这个示例绘制数据nc,从RColorBrewer包获取多边形的色彩设计,白色边是每个县的边界。

nc <- readShapeSpatial( system.file("shapes/sids.shp",package="maptools")[1],
proj4string=CRS("+proj=longlat +datum=NAD27"))
library(RColorBrewer)
m<-plotGoogleMaps(nc,zcol="NWBIR74",filename='MyMap6.htm',
mapTypeId='TERRAIN',colPalette= brewer.pal(7,"Reds"),
strokeColor="white")

绘制空间像素
这个是SpatialPixelsDataFrame绘制的示例。

data(meuse.grid)
coordinates(meuse.grid)<-c('x','y')
meuse.grid<-as(meuse.grid,'SpatialPixelsDataFrame')
proj4string(meuse.grid) <- CRS('+init=epsg:28992')
m=plotGoogleMaps(meuse.grid,zcol='dist',
at=seq(0,0.9,0.1),colPalette= brewer.pal(9,"Reds"))
绘制多个图层
多个图层叠加起来可以让地图更具可读性。 plotGoogleMaps()函数可以由多个图层创建map mashup。函数要包含参数add=TRUE。接下来的绘制要包含前面由plotGoogleMaps包创建的地图的名称,赋值给参数previousMap。

m1<- plotGoogleMaps(cl,zcol='level',
strokeWeight=1:9 ,
colPalette='grey',
add=TRUE)
m2<-bubbleGoogleMaps(meuse,zcol='zinc',
colPalette= brewer.pal(5,"Accent"),
max.radius = 80,
previousMap= m1,
filename='comb.html')

提示:这里的示例默认为是连续的,因而数据导入、数据格式转换都已包含在前面的示例中。

转自 http://www.civn.cn/p/13137.html



回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-25 14:14 , Processed in 0.036117 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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