R軟體繪製中國地圖程序以及必備底圖資料

2021-02-07 經管聯盟

下面是利用這個數據進行的基本處理,尤其是白化操作(即將繪製區域之外的部分抹去),供大家參考!
# rm(list=ls())
# setwd('d:/zlh/zlh cs/Rmap/')
# library('geoR')
# library('maps')
# library('GISTools')
# library("akima")
# library("tseries")
# library('sp')
# library('ggplot2')
# library('ggmap')
# # library(animation)
# # library(XML) 

#生成R色卡
# pdf.color="bar.pdf"
# pdf(pdf.color,height=120)
# par(mar=c(0,10,3,0)+0.1,yaxs='i')
# barplot(rep(1,length(colors())),
#         col=rev(colors()),
#         names.arg=rev(colors()),horiz=T,las=1,xaxt='n',
#         main=expression("Bars of different colors in function"
#                         ~italic(colors())))
# dev.off()
# shell.exec(pdf.color)



#1---關於中國底圖繪製:填色底圖:polygon(lon,lat,col='red') #polygon {graphics}
#1-1 從世界地圖中提取,但存在邊界不準確問題 map {maps}
# map("world","China")
# map中提取經緯度數據方式
# borders=map("world","China")
# borders=data.frame(lon=borders$x,lat=borders$y)
# naloc=which(is.na(borders[,1])==T)
# borders=borders[-naloc,]
#1-2 從shapefile中提取,bou1_4l.shp、bou2_4l表示帶省界和不帶省界底圖readShapeLines {maptools}
# zg=readShapeLines('Rmap/bou1_4l.shp');# readShapePoly 讀取多邊形文件
# plot(c(70,140),c(18,55),type='n')
# plot(zg,add=T,col='blue',lty=1)
# map.axes()
# zg=readShapeLines('Rmap/bou2_4l.shp')
# plot(c(70,140),c(18,55),type='n')
# plot(zg,add=T,col='blue',lty=1)
#1-3 從surfer文件提取的邊界經緯度散點值,這種包含了右下角南海區域
# map_china=read.table("Rmap/china_map.txt",header=F)
# plot(map_china,col='black',type='l',lty=1,lwd=1.5,xlim=c(75,134),ylim=c(18.7,55),xlab='',ylab='')
# 116.863415373, 20.6994643144
# 135.062889024, 20.1632372666---參考坐標系(用於後期平移南海縮放圖到合適區域
#2---閾值場空間分布圖
#1-4 從shape文件中提取想要的區域邊界經緯度文件
#1-4-1 從輪廓文件*l.shp中提取邊界線
# zg=readShapeLines('Rmap/bou1_4l.shp');
# names(zg);
# unique(zg$GBCODE)    
# plot(china_bj)
# plot(zg[zg$GBCODE==61020,],col='red')
# zg=readShapeLines('Rmap/bou2_4l.shp');
# names(zg)
# unique(zg$GBCODE)    
# plot(china_bj)
# plot(zg[zg$GBCODE==61020,],col='red')
#1-4-2 從輪廓文件*p.shp中提取省區邊界線
# zg=readShapePoly('Rmap/bou2_4p.shp');
# names(zg)
# plot(china_bj)
# plot(zg[zg$GBCODE==61020,],col='red')
# plot(zg[zg$NAME=="河北省",])


#2---白化功能:關於在給定邊界情形下選取內部點,外部點設為NA值
# #2-1 均勻化格點產生方式
# #2-1-1 expand.grid {base} 類似於排列組合 combn函數
# gr=expand.grid(lon=seq(73.37,136,by=0.5),lat=seq(17.5,53.54,by=0.5))
# #2-1-2 pred_grid {geoR}
# gr=pred_grid(rplot[,1:2],by=0.5);names(gr)=c("lon","lat")
# #2-2 判斷位於邊界之內的格點,並給出對應位置
# #2-2-0 封閉邊界線:
# borders=read.table('Rmap/china_bj_mainland_simple.txt',header=F)
# #plot(borders,type='l')
# names(borders)=c("lon","lat")
# #2-2-1 locations.inside {geoR}
#   gr.in1 <- locations.inside(gr,borders)
#   loc1=paste(as.character(gr$lon),as.character(gr$lat),sep='+')
#   loc2=paste(as.character(gr.in1$lon),as.character(gr.in1$lat),sep='+')
#   loc=pmatch(loc2,loc1,dup=T)
# #2-2-2 polygrid {geoR}  vec=T 控制輸出位於邊界之內的點所在位置
#   gr.in2<-polygrid(seq(73.569,134.569,by=0.5),seq(20.33,53.33,by=0.5),borders,vec=F)
#   loc=which(gr.in2$vec.inout==T)
# #2-2-3 over {sp}  克服上述不能用於多個封閉區域的缺點,通過形狀文件來進行
# #  2-2-3-1 通過提取的txt的surfer格式數據來進行
#  mainland=read.table('Rmap/china_bj_mainland.txt',header=F,sep='')
#  hainan=read.table('Rmap/china_bj_hainan.txt',header=F,sep='')
#  taiwan=read.table('Rmap/china_bj_taiwan.txt',header=F,sep='')
#  china_bj = SpatialPolygons(list(
#  Polygons(list(Polygon(mainland)), ID="mainland"),
#  Polygons(list(Polygon(hainan)), ID="hainan"),
#  Polygons(list(Polygon(taiwan)), ID="taiwan")))   
# #  plot(china_bj)
#  z=over(pts,china_bj);locout=which(is.na(z)==T) 
#  plot(map_china,col='black',type='l',lty=1,lwd=1.5,xlim=c(75,134),ylim=c(18.7,53.5),xlab='',ylab='')
#  points(gr[-locout,],pch=21,bg='red',cex=0.25)
#  2-2-3-2 通過提取shp格式文件數據來進行
#  china_bj=readShapePoly("Rmap/bou1_4p.shp")
#  pts = SpatialPoints(gr);  
#  z=over(pts,china_bj);locout=which(is.na(z[,1])==T) 
#  plot(map_china,col='black',type='l',lty=1,lwd=1.5,xlim=c(75,134),ylim=c(18.7,53.5),xlab='',ylab='')
#  points(gr,pch=21,bg='black',cex=0.005)
#  points(gr[-locout,],pch=21,bg='red',cex=0.25)


附件說明:

連結:https://pan.baidu.com/s/1CmQaEY9XkUFYHhTkRHNUrg 密碼:lp2k
#1--- ArcGis中國區域shapefile文件,bou1_4*,bou2_4*分別為包含省界和不包含省界的底圖
[1] "bou1_4l.dbf"                                                     
[2] "bou1_4l.shp"                                                     
[3] "bou1_4l.shx"                                                     
[4] "bou1_4p.dbf"                                                     
[5] "bou1_4p.shp"                                                     
[6] "bou1_4p.shx"                                                     
[7] "bou2_4l.dbf"                                                     
[8] "bou2_4l.shp"                                                     
[9] "bou2_4l.shx"                                                     
[10] "bou2_4p.dbf"                                                     
[11] "bou2_4p.shp"                                                     
[12] "bou2_4p.shx"                                                     
#2--- R 軟體專用的中國底圖                                               
[13] "Rmap_1_china_map_with_southsea_revision.txt" :
      精細版中國底圖,包含南海縮小右放的底圖和長江、黃河(修正了surfer版本中長江、黃河不夠準確的情況)
[14] "Rmap_2_china_map_china_no_southsea_revision.txt" :
      同上,但不包含南海縮放小圖 
[15] "Rmap_3_southsea_simple_smallsize_box_revision.txt":
      依據上述文件提取的單獨南海縮放小圖底圖,依據需要通過左右增加位移量放置不同位置,參考坐標為:【17.5,29.751】;【126.0148,136】
[16] "Rmap_4_changjiang_revision.txt":
      精細版長江底圖                   
[17] "Rmap_5_huanghe_revision.txt":
      精細版黃河底圖        
#3--- R 軟體使用白化封閉區域,依據Rmap_1_china_map_with_southsea_revision.txt提取的各個區域單獨文件            
[18] "Rmap_6_1_china_bj_mainland_revision.txt" :大陸底圖         
[19] "Rmap_6_2_china_bj_hainan_revision.txt":   海南底圖            
[20] "Rmap_6_3_china_bj_taiwan_revision.txt":     臺灣底圖 
#4--- R 提取的簡單化邊界和同比例南海底圖     
[21] "Rmap_7_southsea_comp_revision.txt":精細化同比例南海底圖,缺點是正常的九段線變為八段線,少了一個,因為同比例,需要特殊處理才能縮放用                
[22] "Rmap_8_china_bj_mainland_simple_revision.txt":簡單化大陸底圖,因為只有大陸,所以白化使用起來還是需要結合前面海南、臺灣等封閉線進行   

相關焦點

  • 使用Python和R繪製數據地圖的十七個經典案例
    我還列出了資源,以便你可以了解每個教程中突出顯示的每個包以及進一步的用戶分析,從而獲得更多的靈感。 前言 為了探索目的而創建一個簡單的地圖不再需要你學習如何操作shapefile或想像投影。並且,無論你喜歡在R或Python,都有快速和簡單的方法把你的數據展現在地圖上。
  • R筆記7:ggplot繪製商務圖表--地圖上的迷你柱形圖
    本例用ggplot來繪製商業圖表仿的第025號案例,地圖上的迷你柱形圖。
  • 如何獲得可編輯的專題分析地圖底圖?
    微思城市肌理底圖功能推出以來,受到了大家的一致關注。於是我們又在城市肌理底圖的基礎上,追加了兩個特色功能。一個是直接保存為圖片。
  • 一鍵獲取CAD設計底圖...
    今天,很開心和大家一起交流高端設計總平圖、分析圖"底圖"的製作思路和方法--文末附:開掛教程+素材庫--設計CAD底圖·往往是設計師在完成方案設計、繪製平面圖必備的一類圖紙然而、很多夥伴還在用最最最傳統的方法利用下載的百度地圖導入CAD、進行描圖
  • 如何正確繪製中國示意性地圖?編輯給您提建議
    對於公開出版、傳播和展示的地圖,我國有嚴格的審核流程。科技期刊中涉及到的中國地圖大多是「示意性」地圖,若地圖中存在錯誤不能通過審查,則需要修改後再次送審;反覆送審將影響到論文的出版,並嚴重延長論文的出版周期。那麼,作者在繪製中國示意性地圖時常見的錯誤有哪些呢?現將編輯工作中遇到的常見問題進行歸納總結,並以實例進行說明。
  • 數據地圖
    嚴格繪製數據地圖並不是一件簡單的事情。專業的做法應當使用 GIS(地理信息系統)的專業軟體。
  • 數據分享|使用 R 語言繪製全球各國(地區)省級行政區劃地圖矢量數據 & 代碼
    R 語言繪圖代碼,考慮到這份數據裡面和中國相關的地圖數據都是不準確的,所以我刪除了中國和印度的數據。1 個 geojson 文件:GEOJSON 數據;1 個 R 文件:R 繪製使用該地圖數據繪製地圖的示例代碼;1 個 pdf 文件:R 語言繪製的效果預覽,由於圖片是自動生成的,所以比較粗糙。
  • 實用技術 | 如何用R繪製並填充相對正確的世界地圖
    ggplot() + geom_sf(data = worlddata, aes(fill = estimate), colour = "#525252",size=0.3)+ #繪製世界地圖並按照estimate欄位中的數據上色 geom_sf(data = SCSislands, colour = "#525252")+ #繪製南海諸島
  • 畫插畫用什麼軟體?必備插畫繪製軟體
    畫插畫用什麼軟體?必備插畫繪製軟體!學習插畫要用什麼軟體?零基礎學插畫用什麼軟體好?關於插畫繪製軟體的選擇具體要看你想發展哪個風格,下面給大家帶來了九大繪畫必備軟體!給想學插畫的小夥伴參考一下,快來選擇一個適合自己的繪畫軟體吧!
  • 必備入門級圖形繪製軟體
    其中計劃階段包括搜集資料、找出問題、找出主要問題、制定計劃措施四個步驟,處理階段包括制定標準並形成規章制度,找出遺留問題並轉入下一個循環兩個步驟。PDCA循環是指按照以上四階段八步驟的順序進行質量管理,並且不停頓地周而復始運轉的科學程序。PDCA循環圖被廣泛應用於全面質量管理。
  • R語言可以這麼玩 | 繪製地圖與地點數據可視化
    這次,我們用R來畫地圖吧,利用可視化工具,我們更能輕鬆地得出結論哦~R語言裡的ggmap包是繪製地圖的利器。在確保電腦可以上外網的情況下(為了保證進入google地圖的URL),ggmap包幫助我們輕鬆下載google map,再加上和ggplot2製圖包的疊加,可以輕鬆、方便地繪製可視化地圖。
  • 開源軟體分享-基於JS的三維地圖,可加載3D模型/BIM模型
    加載天地圖底圖同時支持地形圖設置,我們可以從天地圖加載全國或者全球地形圖。這裡先科普一波,啥是天地圖。天地圖是國家地理信息公共服務平臺,我們申請帳號就可以調用天地圖裡面的服務了,裡面包括很多API服務,例如矢量底圖、影像底圖、地形暈渲染、全球地形圖、以及數據API(水系要素、道路要素、交通要素、居民地要素)原生支持多種三維幾何對象:CesiumJS 支持點、線、虛線、管道
  • 使用 hchinamap / highcharter 繪製交互式中國地圖及中國各省地圖
    China  遼寧      46#>  7 China  吉林      67#>  8 China  黑龍江    80#>  9 China  上海       8#> 10 China  江蘇      50#> # … with 517 more rows繪製中國地圖
  • 使用REmap繪製中國地圖
    上次我們介紹了使用ggplot2繪製中國熱力地圖,需要溫習的同學可以點擊以下連結 使用ggplot2繪製中國地圖  。
  • 中國將繪製新版《中國癌症地圖集》
    原標題: 中國將繪製新版《中國癌症地圖集》  東方網9月15日消息:記者15日從科技部獲悉,2014年由科技基礎性工作專項部署的「《中國癌症地圖集》編制」項目已經啟動,將繪製、出版以縣(區)為單位的新版癌症地圖集,建立區域性癌症流行情況大型元資料庫和共享資料庫。
  • 如何使用R、ArcMap 和 Tableau繪製二元分級統計地圖?
    因分級統計法繪製地圖常用色級表示,故也稱色級統計地圖。地圖上每個分區的數量採用不同的色級表示,較典型的方法有:(1)由一個顏色到另一個顏色混合漸變;(2)單一的色調漸變;(3)由透明到不透明;(4)由明到暗;(5)用一個完整的色譜變化。Choropleth 地圖依靠顏色等來表現數據內在的模式,因此地圖配色非常重要,當數據的值域大或者數據的類型多樣時,選擇合適的顏色映射相當有挑戰性。
  • 基於R的生存資料預測模型構建與Nomogram繪製
    案例與操作本章我們以[案例 1]的數據,介紹生存資料預後模型的建立與Nomogram圖形繪製。為了便於讀者閱讀與練習模仿,筆者對數據進行了簡化處理。研究目的就是要根據1215例乳腺癌患者的生存資料構建預測模型並繪製 Nomogram。表1. 1215例乳腺癌患者的生存資料表2.變量定義、賦值及說明
  • 想不到十九世紀美國女學生地圖繪製得這麼好
    「如果你見到這種地圖的話,那麼它有可能是繪製於1800年到1835年期間。」    當年女學生繪製的地圖深受收藏家喜愛,通常每幅價值數百上千美元。我初次見到這類作品是在去年波士頓公共圖書館舉辦的「製圖學中的女性」展上。它從遠處看上去就像是一張小型印刷地圖,只有20釐米來寬。當你靠近時就會發現它是一幅手繪地圖,然而只有當你站在地圖前面時,或許才能從上面的文字猜出它是出自一位學生之手。
  • 用R語言繪製動態地圖
    q <- getBaiduMap('北京大學', width=600, height=600, zoom=18, scale = 2, messaging=FALSE)ggmap(q) #繪製地圖getCoordinate函數根據地址得到經緯度# 參考文檔getCoordinate(address,