99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

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

R語言讀取空間數(shù)據(jù)

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

一、矢量數(shù)據(jù)

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

下面列舉幾種。

(1)使用maptools包讀取數(shù)據(jù)

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

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

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

接著定位到我們所需讀取數(shù)據(jù)的工作路徑上,然后就可以開始讀取對應(yīng)的數(shù)據(jù)了。

#設(shè)置工作路徑
getwd()

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


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

library(maptools)

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

plot(x)

#分別使用可以讀取Poly的函數(shù)讀取

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

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

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

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

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

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

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

library(rgdal)

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

plot(rgdaltest)

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

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

library(shapefiles)

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

矢量數(shù)據(jù)讀取主要通過以上幾種方式就可以實現(xiàn)。

二 .柵格數(shù)據(jù)

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

(1)使用GDAL的rgdal包

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

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

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

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

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

讀取ASCII碼文件存儲的數(shù)據(jù)

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

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

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

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

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

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

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

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

plot(rastershange2)

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

運(yùn)用R語言讀取柵格和矢量數(shù)據(jù)的方法大概如上了。

數(shù)據(jù)分析咨詢請掃描二維碼

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

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }