R語言地理空間分析(一)讀寫空間數據文件文件


讀取shp文件


R包:sf
數據來源:.shp

library(sf)
#st_read()函數可以讀取.shp文件
data<-st_read("Income_schooling.shp")

注意:文件路徑上不要出現漢字和空格,否則讀出的空間數據會出現亂碼
查看空間數據data的前幾條記錄

head(data,n=4)

# Simple feature collection with 4 features and 5 fields
# Geometry type: MULTIPOLYGON
# Dimension:     XY
# Bounding box:  xmin: 379071.8 ymin: 4936182 xmax: 596500.1 ymax: 5255569
# Projected CRS: NAD83 / UTM zone 19N
# NAME Income   NoSchool NoSchoolSE IncomeSE                       geometry
# 1   Aroostook  21024 0.01338720 0.00140696  250.909 MULTIPOLYGON (((513821.1 51...
# 2    Somerset  21025 0.00521153 0.00115002  390.909 MULTIPOLYGON (((379071.8 50...
# 3 Piscataquis  21292 0.00633830 0.00212896  724.242 MULTIPOLYGON (((445039.5 51...
# 4   Penobscot  23307 0.00684534 0.00102545  242.424 MULTIPOLYGON (((472271.3 49...

geometry為多邊形的頂點信息
進行可視化表達:

#得到各個屬性的可視化表達,若屬性值為連續變量,則會自動 調用冷暖色調來做數值區分;如果是類別變量,利用不同的顏色區分
plot(data)

數據框創建空間數據類

有時候我們沒有.shp文件,只有點的信息數據。這時候可以利用st_as_sf函數進行創建空間sf類。

df <- data.frame(lon = c(-68.783, -69.6458, -69.7653),
                 lat = c(44.8109, 44.5521, 44.3235),
                 Name= c("Bangor", "Waterville", "Augusta"))

#coords=設置坐標,crs=設置坐標系,4326代表WGS84坐標系
point<-st_as_sf(df, coords = c("lon", "lat"), crs = 4326)
point

讀取柵格文件

R包:raster

library(raster)
img<-raster("elev.img")

sf類轉換為其他空間數據類

轉換函數as()

#data為sp類
data.sp<-as(data,"Spatial")
class(data.sp)
#[1] "SpatialPolygonsDataFrame"

#將sf多邊形類轉換為owin類
#需要maptools包
library(maptools)
data.owin<-as(data,"owin")

#將sf點數據轉換為ppp類,ppp類和spatstat包關聯
#需要先把sf類轉換為sp類,然后將sp類轉為ppp類
#需要maptools包
library(maptools)
data.sp<-as(data,"Spatial")
data.ppp<-as(data.sp,"ppp")

如果sp類轉為ppp類時,出現如下錯誤:

Error in as.ppp.SpatialPointsDataFrame(point) : Only projected coordinates may be converted to spatstat class objects

ppp類與spatstat包相關聯,該包是在笛卡爾投影坐標系下進行運算的。錯誤消息是:地理坐標系不能在該包下運算,因此需將地理坐標系轉換為投影坐標系。

data.utm<-st_transform(data,32619)#st_transform()表示坐標系統轉換,32619代表epsg代碼,utm投影坐標系
data.sp<-as(data.utm,"Spatial")
data.ppp<-as(data.sp,"ppp")

sp類轉換為sf

st<-st_as_sf(sp)

空間數據文件導出

st_write(data, "shapefile_out.shp", driver="ESRI Shapefile")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM