熱線電話:13121318867

登錄
首頁精彩閱讀R語言讀取空間數據
R語言讀取空間數據
2018-06-29
收藏

R語言讀取空間數據

空間數據類型主要包括了三種:矢量數據(以最普遍的的shapefile為例),柵格(raster,這個格式就比較多了,不過大同小異),地理數據庫(geodatabase也就是.gdb文件,Esri的數據庫),本文對運用R語言讀取矢量數據和柵格數據進行總結

一、矢量數據

矢量數據其實主要包括了三類:點,線和面,能讀取的方式有很多種。

下面列舉幾種。

(1)使用maptools包讀取數據

先從點線面分別讀取的方式來看,主要包括readShapePoints(讀取點),readShapeLines(讀取線要素),readShapePoly(讀取面要素)。這幾個函數都是maptools包里面的。

所以第一步如果沒安裝的話請先安裝。

install.packages(‘maptools’)
library(maptools)

接著定位到我們所需讀取數據的工作路徑上,然后就可以開始讀取對應的數據了。

#設置工作路徑
getwd()

setwd("C:/Users/HuFeiHu/Documents/HeiHe")


#使用可以讀取三類要素Poly,Points,Lines的函數讀取矢量數據

library(maptools)

X<-readShapeSpatial('data/MiddleNodeType/SoilNET.shp',verbose = TRUE)

plot(x)

#分別使用可以讀取Poly的函數讀取

y<-readShapePoints('data/UpperBondary/Babaohe_Booundary.shp')

y<-readShapeLines('data/UpperBondary/Babaohe_Booundary.shp')

y<-readShapePoly('data/UpperBondary/Babaohe_Booundary.shp')

如果不需要什么其他操作,讀取數據只需要填入文件名字作為傳入的參數即可。這幾個函數完整的參數大體差不多,主要包括下面幾個。
fn——文件名,一般能讀的是.shp文件,.shx文件和.dbf文件
       proj4string = CRS(as.character(NA))——坐標系的CRS字符串,關于坐標系的問題,這里不詳講。其實就是一個坐標系對應一個ID,把對應ID讀進去,按照對應坐標系讀取,這個是遵循規范的。
一般前兩個參數用得多。后面這些只介紹這三個函數共有的參數,其他參數就請參照幫助文檔。
       verbose = FALSE——默認為False,這個主要是在讀取數據后是否返回讀入要素的類型和數量。
       repair=FALSE——這個參數的話,主要是考慮到.shx索引文件太大,默認False會跳過讀取數據,TRUE的話,會進行內部修復,讀取這類文件。

事實上,maptools提供的函數讀取只能傳輸較差分辨率的空間數據,所以更推薦的是用rgdal包的OGR驅動程序來讀取。

(2)使用GDAL的R語言包rgdal讀取矢量數據,這種方法也能夠讀取高精度數據(推薦使用)

讀取方式如下,參數也是傳入文件名即可簡單讀取,不過這個參數可以讀具體文件也可以讀文件夾名。對應上面proj4string也有一個參數p4s,其他參數參照文檔。

library(rgdal)

rgdaltest<-readOGR('data/MiddleNodeType/SoilNET.shp')

plot(rgdaltest)

(3)使用shapefiles包讀取數據文件

此外還有shapefiles包也可以進行讀取。讀取方式(可以讀取shp和shx,shx讀取結果為空間索引)如下:

library(shapefiles)

x<-read.shp('data/UpperBondary/Babaohe_Booundary.shp')

矢量數據讀取主要通過以上幾種方式就可以實現。

二 .柵格數據

柵格數據的話,格式還是多種多樣的。這邊主要提供幾種不同格式的讀取方法(.img文件,.tif文件,ASCII碼文件和.asc文件)。

(1)使用GDAL的rgdal包

柵格數據讀取主要是基于rgdal包,讀取方式如下,img和tif都可以通過readGDAL直接讀取。

data<-readGDAL(“data/UpperBondary/Babaohe_Booundary.img”)

data<-readGDAL(“data/UpperBondary/Babaohe_Booundary.tif”)

這里面的參數我就不詳細介紹了,主要解釋幾個個人認為比較重要的參數。有興趣的同學可以去查詢官方文檔。
band——波段數,單純柵格無所謂。做遙感影像數據處理時就會遇到需要幾個波段的問題,如果缺省的話,是全部導入。
p4s——等同于上面的proj4string

type——像素深度:8bit,16bit等

讀取ASCII碼文件存儲的數據

rastershange1=readGDAL('rasterTest/test.txt')
plot(rastershange1)

(2)用raster包讀取柵格數據

通過raster包進行讀取.img文件和.tif文件,這個更方便些。讀取方式如下

data<-raster(“data/UpperBondary/Babaohe_Booundary.image”)

data<-raster(“data/UpperBondary/Babaohe_Booundary.tif”)

(3)運用sp包讀取ASCII碼文件

當然柵格數據還有較為普遍的以ASCII碼文件存儲的方式。這里也提供下如何讀取ASCII碼文件,這個方法是基于sp包的,所以需要先安裝和載入sp包,這個包是R語言空間數據的基礎包,指定了空間數據庫的方法和對象。

rastershange2=read.asciigrid('rasterTest/test.txt')

plot(rastershange2)

當然ASCII碼文件可能是以.asc文件存儲的,只需把后綴名改成.asc即可讀取。

運用R語言讀取柵格和矢量數據的方法大概如上了。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢