ฉันมีชุดภาพแรสเตอร์ซึ่งแสดงเดือนเฉพาะในช่วงหลายปีที่ผ่านมาและฉันต้องการสร้างเส้นเวลาของค่าเฉลี่ยของพื้นที่โดยใช้รูปร่างไฟล์
ฉันจะแยกค่าจากแรสเตอร์และนำเข้ามาในรูปแบบที่ฉันสามารถใช้ได้อย่างไร
ฉันมีชุดภาพแรสเตอร์ซึ่งแสดงเดือนเฉพาะในช่วงหลายปีที่ผ่านมาและฉันต้องการสร้างเส้นเวลาของค่าเฉลี่ยของพื้นที่โดยใช้รูปร่างไฟล์
ฉันจะแยกค่าจากแรสเตอร์และนำเข้ามาในรูปแบบที่ฉันสามารถใช้ได้อย่างไร
คำตอบ:
นี่คือตัวอย่างรหัส มันค่อนข้างตรงไปตรงมาที่จะปรับรหัสนี้ให้ทำงานเป็นวงวนเพื่อประมวลผล rasters ทั้งหมดของคุณ หาก rasters ของคุณมีขอบเขตและความละเอียดร่วมกันคุณสามารถสร้าง raster stack และ loop ผ่านแถบใน stack ในการสร้างเวกเตอร์ที่มีแรสเตอร์ทั้งหมดในไดเรกทอรีในรูปแบบเฉพาะคุณสามารถใช้ "list.files" แล้วส่งเวกเตอร์นี้ไปยังสแต็ก
ตัวอย่าง:
rlist=list.files(getwd(), pattern="img$", full.names=TRUE)
r <- stack(rlist)
# Add required libraries
require(raster)
require(sp)
require(rgdal)
# Set working directory, raster, in and out shapefiles
setwd("C:/test")
inshp="MyPolys"
outshp="PolyMeans"
rdata <- "Year2012.img"
# Read polygon feature class shapefile
sdata <- readOGR(dsn=getwd(), layer=inshp)
# Read raster
r <- raster(rdata)
# Extract raster values to list object
r.vals <- extract(r, sdata)
# Use list apply to calculate mean for each polygon
r.mean <- lapply(r.vals, FUN=mean)
# Join mean values to polygon data
sdata@data <- data.frame(sdata@data, m2012=r.mean)
# Write results
writeOGR(sdata, getwd(), outshp, driver="ESRI Shapefile", check_exists=TRUE,
overwrite_layer=TRUE)
data.frame(sdata@data, m2012=r.mean)
รู้ได้อย่างไรว่ารูปหลายเหลี่ยมโพลีกอนเพื่อกำหนดค่าใดให้
อ่าน shapefile ลงในSpatialPolygonsDataFrame
( readOGR
ฟังก์ชั่นจากแพ็คเกจrgdal
)
อ่านแรสเตอร์เป็นRaster
วัตถุ ( raster
ฟังก์ชั่นจากแพคเกจraster
)
ใช้extract(raster, spdf)
เพื่อรับเซลล์กริดในแต่ละรูปหลายเหลี่ยม จากนั้นวิ่งmean
ไปที่พวกเขา
ทำซ้ำชุดภาพแรสเตอร์ของคุณ ...