R绘制空间计量图(需载入GIStools、sp 包)

基于spatial-等类数据,用polygon等绘制地图

#第二章【画图包】

par(mfrow = c(1,2))

plot(y,y2)

polygon(y,y2,col = 'lightgreen')

plot(y,y2,asp=1,type='n')

#坐标比例asp为一比一

#plot画出坐标轴

polygon(y,y2,col = 'lightgreen')

#polygon让画出地图

library(GISTools)

data("georgia")

#画出格鲁吉满一个小镇APPLING的地图

appling=georgia.polys[[1]]

plot(appling,asp=1,type='n',xlab='Easting',ylab='Northing')

polygon(appling,density = 14,angle = 135)

polygon(appling,col = rgb(0.2,0.7,0.4))

#给地图填色,R\G\B各出一个0~1的数调色

polygon(appling,col = '#B3B335')

#一种网络颜色

points(x=runif(500,126,132)*10000,y=runif(500,103,108)*10000,pch=16,col='pink')

#给图形加随机点

text(1287000,1053000,'Appling County',cex = 1.5)

#字号是1.5,字的中心点坐标是(1287000,1053000)

text(1287000,1049000,'Georgia',col = 'darkred')

data("meuse.grid")

#法国北部的缪斯

mat = SpatialPixelsDataFrame(points = meuse.grid[c('x','y')],data = meuse.grid)

par(mfrow=c(1,2))

par(mar=c(2,2,0,0))

#下、左页边距为2行,剩下的边页边距为0行

image(mat,'dist')

library(RColorBrewer)

greenpal=brewer.pal(7,'Greens')

#brewer.pal用来生成好看的颜色,在已有三色基础上

image(mat,'dist',col=greenpal)

#image用来作三维等高图,以z轴来作图

write.csv(appling,file = 'test.csv',row.names = F)

data("georgia")

writePolyShape(georgia,'georgia.shp')

#第三章【世界地图轮廓】

library(GISTools)

data(newhaven)

plot(roads)

class(roads)

head(data.frame(blocks))

#以数据框的形式看一下block这个空间点集的第一行

plot(blocks)

plot(roads,add=TRUE,col='red')

#add表示把road数据添加在blocks数据上

plot(blocks,lwd=0.5,border='grey50')

plot(breach,add=TRUE,col=388,pch=1)

colors()

#查看颜色

#embellishing美化

map.scale(534750,152000,miles2ft(2),'Miles',4,0.5)

#比例尺:在坐标(534750,152000)处显示比例尺,分4段,间隔0.5,0~2

north.arrow(534750,154000,miles2ft(0.25),col=190)

#指北

title('New Heaben,CT.')

#标题

data("georgia")

par(mar=c(2,0,3,0))

plot(georgia,col='thistle',bg='wheat',lty=3,border='gray1')

georgia.outline=gUnaryUnion(georgia)

#边界

plot(georgia.outline,lwd=3,add=TRUE)

title(main = 'The State of Georgia',font.main=2,cex.main=1.5,

      sub = 'and its counties',font.sub=3,col.sub='blue')

data.frame(georgia[,13])

#看一下各州的名字

names(georgia[,])

#看geogia的全部列名

Lat=data.frame(georgia)[,1]

#纬度

Lon=data.frame(georgia)[,2]

#经度

Names=data.frame(georgia)[,13]

#各州名字

par(mar=c(0,0,0,0))

plot(georgia,col=NA)

pl=pointLabel(Lon,Lat,Names,cex = 0.5, offset = 0)

#为各州粘贴标签,横坐标以longitud经度,纵坐标以latitude纬度

county.tmp=c(81,82,83,150,62,53,21,16,124,121,17)

#部分counties的地图

georgia.sub=georgia[county.tmp,]

plot(georgia.sub,col='gold1',border='grey')

plot(georgia.outline,add=TRUE,lwd=2)

title('A subset of Georgia', cex.main=2,font.main=1)

pl=pointLabel(Lon[county.tmp],Lat[county.tmp],Names[county.tmp],offset=3,csx=1.5)

#第五章【做核密度图】

library(GISTools)

data(tornados)

#龙卷风着陆点,tornados是个数据集,里面有两个数据框结构的空间点集torn和torn2

par(mar=c(0,0,0,0))

plot(us_states)

plot(torn,add=TRUE,pch=1,col='#FB6A4A4C',cex=0.4)

#把龙卷风着陆点画出来

summary(torn)

View(us_states@data)

#我们选择感兴趣的州做研究,包括Texas,New Mexico,Oklahoma,Arkansas

#运用R语言的选择符号‘|’做出选择

index=us_states$STATE_NAME=='Texas'|

  us_states$STATE_NAME=='New Mexico'|

  us_states$STATE_NAME=='Oklahoma'|

  us_states$STATE_NAME=='Arkansas'

#把数据框形式的空间点集里 STATE_NAME这列里元素等于‘’的行提取到一个叫index的 逻辑 里

AOI=us_states[index,]

#AOI是原来形式的空间点集中符合条件index逻辑的点集,index逻辑里是行,提取该行对应的所有元素

plot(AOI)

plot(torn,add=TRUE,pch=1,col='#FB6A4A4C')

#但是结果是全国的点和局部的区域

#下面让torn点也变成所选区域内的

AOI.torn=gIntersection(AOI,torn)

#gIntersection方程,在AOI区域内选择torn点组成AOI.torn

#这个方程生成的空间点集只剩下普通空间点集,而缺失了AOI原有的属性

#为了保留原属性,需要在方程中加入参数 byid=TRUE

plot(AOI)

plot(AOI.torn,add=T,pch=1,col='#FB6A4A4C')

head(AOI.torn)

head(row.names(data.frame(AOI.torn)))

AOI.torn1=gIntersection(AOI,torn,byid = TRUE)

plot(AOI)

plot(AOI.torn1,add=TRUE,pch=1,col='#FB6A4A4C')

head(data.frame(AOI.torn1))

head(row.names(data.frame(AOI.torn1)))

#此时的点集与原来的形式相同,可用于提取原来数据框点集的其他信息

#Kernel Dentisy Estimation[核密度估计]

#1.计算KDE.用kde.points()函数,计算了在一堆点中,目标对象处的密度值

#2.画KDE.用level.plot()函数,画出的是满满的contour曲线标出网格线

#3.把KDE图剪切到目标区域内:poly.outer(spatialpolygons/spatialpolygonsdataframe , extend)提供了一个新的spatialpolygons对象

#  然后用add.masking()函数将编辑好的对象加在研究区域内

library(GISTools)

data(newhaven)

#计算密度

breach.dens=kde.points(breach,lims = tracts)

#生成等高线

level.plot(breach.dens)

#沿着街道剪切masker

masker=poly.outer(breach.dens,tracts,extend = 100)

add.masking(masker)

#把道路再次加上去

plot(tracts,add=TRUE)

#第三章【画分级统计图】

library(GISTools)

data(newhaven)

ls()

summary(blocks)

data.frame(blocks)

head(data.frame(blocks))

colnames(data.frame(blocks))

#一直想要的看列名

data.frame(blocks)$P_VACANT

#以数据框的形式看P_VACANT的内容

blocks$P_VACANT

#以空间点集的形式获取P_VACANT的内容

attach(data.frame(blocks))

hist(P_VACANT)

#看P_VACANT的直方图

detach(data.frame(blocks))

breach.dens=kde.points(breach,lims = tracts)

#计算密度,是一个空间像素数据框

summary(breach.dens)

head(data.frame(breach.dens))

#第一列是每个像素的内容,第二第三列是坐标

breach.dens.grid=as(breach.dens,'SpatialGridDataFrame')

#把空间像素点转化成空间网格线数据框,名叫breach.dens.grid

#贡献值——分级统计图函数choropleth

choropleth(breach,blocks$P_VACANT)

##以VACANT值得大小把一些点描黑以区别于其他地区

vacant.shades=auto.shading(blocks$P_VACANT)

#计算一下我们vacant数据的结构,看到各个阶段部分(默认0~20%~40%~80%~100%五个结构,可通过设置n= 改变)所包含的点数,以及各自用什么颜色表示

vacant.shades

choro.legend(533000,161000,vacant.shades)

display.brewer.all()

#查看全部颜色

brewer.pal(5,'Blues')

#用法

par(mar=c(0,3,0,0))

vacant.shades = auto.shading(blocks$P_VACANT,n=10,cols = brewer.pal(10,'PuRd'))

#1.(要在图中显示的变量,分为7个层次)

choropleth(blocks,blocks$P_VACANT,shading = vacant.shades)

#2.(空间点集,要画的对象,以哪种方法)分级统计图

choro.legend(533000,161000,vacant.shades)

#3.添加图例legend

data("quakes")

head(quakes)

coords.tmp=cbind(quakes$long,quakes$lat)

#1.定义坐标数值

quakes.spdf=SpatialPointsDataFrame(coords.tmp,data = data.frame(quakes))

#2.生成空间点集数据框

par(mfrow=c(1,1))

plot(quakes.spdf,pch=16)

shades=auto.shading(quakes$mag,n=6,cols = brewer.pal(6,'Blues'))

choropleth(quakes.spdf,quakes$mag,pch=16,shading = shades)

library(RgoogleMaps)

Lat=as.vector(quakes$lat)

Long=as.vector(quakes$long)

MyMap=MapBackground(lat = Lat,lon = Long,zoom = 10)

#谷歌地图需要收费,不能用

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容