18, มิ.ย. 2020
R-studio : ( EP#14 ) สร้าง DEM (ตอนที่ 3/3) ด้วย IDW, Polynomial, Kriging ด้วยโปรแกรม R

R-studio : ( EP#14 )  สร้าง DEM (ตอนที่ 3/3) ด้วย IDW, Polynomial, Kriging  ด้วยโปรแกรม R 

ใน EP#14 นี้ เราจะปิดท้ายการสร้าง Digital Elevation Model (DEM) ด้วยการจำลองพื้นผิวภูมิประเทศจาก จุดข้อมูลความสูง (Elevation Points) โดยใช้เทคนิคการ Interpolation ด้วย R ซึ่งได้แก่:

  • IDW (Inverse Distance Weighting)

  • Polynomial Regression (2nd / 3rd Degree)

  • Kriging (Geostatistical Interpolation)

นำข้อมูลจุด Excel จากตอน EP#12 มาจำลองเป็น Digital Elevation Model ด้วยคำสั่ง  IDW, 2nd -Polynomial, 3rd – Polynomial, Kriging ด้วยโปรแกรม R

เตรียมข้อมูลจุดความสูง เพื่อนำมาจำลองเป็น Digital Elevation Model ด้วยโปรแกรม R

    

ลงทะเบียนขอรับไฟล์ code R markdown script สำหรับ DEM # 3/3 https://docs.google.com/forms/d/e/1FAIpQLSfGBzNO7rrB0wrFPkL1HA0MwtQ9dAJ2xd3pL2qEOYYzVdKFCA/viewform

      

🎯 เป้าหมายของ EP#14

  • เรียนรู้หลักการ Interpolation เพื่องานภูมิประเทศ
  • สร้างแบบจำลอง DEM ด้วย R จากจุดพิกัดที่มีค่า Z
  • เปรียบเทียบผลลัพธ์จากหลายเทคนิค
  • เตรียมส่งออกข้อมูลเป็น raster หรือ GeoTIFF

🧰 ติดตั้งแพ็กเกจ R ที่จำเป็น

rCopyEditinstall.packages(c("sp", "gstat", "automap", "raster", "sf", "fields", "ggplot2"))

📥 ดาวน์โหลดสคริปต์เรียนรู้

🔗 R Markdown Script:
แบบฟอร์มลงทะเบียนเพื่อขอรับไฟล์ EP#14


📌 ตัวอย่างโค้ดการสร้าง DEM ด้วย IDW

rCopyEditlibrary(gstat)
library(sp)
library(raster)

# นำเข้าข้อมูลจุด
elev <- read.csv("elevation_points.csv")
coordinates(elev) <- ~longitude + latitude

# กำหนดกริดพื้นที่ศึกษา
grd <- spsample(elev, type = "regular", n = 5000)
gridded(grd) <- TRUE

# Interpolation แบบ IDW
idw_result <- idw(elevation ~ 1, elev, newdata = grd, idp = 2.0)

# แสดงผล
spplot(idw_result, "var1.pred", main = "DEM by IDW")

📌 ตัวอย่างโค้ด Polynomial Regression (2nd Degree)

rCopyEditlibrary(fields)

fit2 <- Tps(cbind(elev$longitude, elev$latitude), elev$elevation, m = 2)
grid_points <- as.data.frame(coordinates(grd))
grid_points$z <- predict(fit2, grid_points)

image(matrix(grid_points$z, nrow = 100), main = "2nd Degree Polynomial DEM")

📌 ตัวอย่างโค้ด Kriging

rCopyEditlibrary(automap)

# สร้างโมเดลเซมิวาเรียนซ์อัตโนมัติ
krig_result <- autoKrige(elevation ~ 1, input_data = elev, new_data = grd)

# แสดงผล DEM
spplot(krig_result$krige_output["var1.pred"], main = "DEM by Kriging")

📊 เปรียบเทียบผลลัพธ์เบื้องต้น

เทคนิคข้อดีข้อจำกัด
IDWคำนวณง่าย รวดเร็วอ่อนไหวต่อการกระจุกตัวของจุด
Polynomialสมูท เส้นโค้งสวยไม่เหมาะกับข้อมูลที่มีความซับซ้อนทางพื้นที่มาก
Krigingแม่นยำสูง วัดความไม่แน่นอนได้ต้องเข้าใจการวิเคราะห์เซมิวาเรียนซ์

🗂️ ส่งออกไฟล์ Raster

rCopyEditraster_out <- rasterFromXYZ(grid_points)
writeRaster(raster_out, "dem_output.tif", format = "GTiff", overwrite = TRUE)

🔜 ใช้งาน DEM ต่อยอดอะไรได้บ้าง?

  • วิเคราะห์ความลาดชัน (slope), ทิศทางการไหล (aspect)
  • สร้าง catchment area หรือ watershed
  • วิเคราะห์ความเสี่ยงภัยดินถล่ม น้ำท่วม
  • สร้าง Visualization แบบ 3D (ร่วมกับ rgl หรือ terrain3D)

ใส่ความเห็น

Related Posts