การแปลงระหว่าง CRS/การฉายภาพ
การแปลงจาก CRS หรือการฉายภาพหนึ่งไปยังอีกรูปแบบหนึ่งทำได้ผ่านเมธอด spTransform() ในแพ็กเกจ rgdal โดย spTransform() รองรับออบเจกต์ sp ทุกประเภท รวมถึง SpatialPolygonsDataFrame แต่ไม่สามารถใช้กับออบเจกต์ raster ได้ เนื่องจากการแปลง raster มีความซับซ้อนกว่า กล่าวคือ กริดสี่เหลี่ยมที่ถูกแปลงแล้วอาจไม่เป็นสี่เหลี่ยมอีกต่อไป หากสนใจเรื่องการแปลง raster สามารถดูได้ที่ ?raster::projectRaster
ขั้นตอนการแปลงนั้นไม่ซับซ้อน อาร์กิวเมนต์แรกของ spTransform() คือ x ซึ่งเป็นออบเจกต์เชิงพื้นที่ที่ต้องการแปลง และอาร์กิวเมนต์ที่สองคือ CRS ซึ่งระบุ CRS ที่ต้องการ สามารถระบุ CRS ด้วย PROJ4 string ที่สร้างขึ้นเองได้ แต่วิธีที่ง่ายกว่าคือนำมาจากออบเจกต์ที่มีอยู่แล้ว เช่น ใช้ฟังก์ชัน proj4string()
มาปรับให้ชุดข้อมูล polygon ทั้งสองอยู่ใน CRS เดียวกันกันเถอะ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างภาพข้อมูลภูมิสารสนเทศใน R
คำแนะนำการฝึกหัด
- แปลง
neighborhoodsให้มี CRS เดียวกับnyc_tractsโดยใช้spTransform()โดยตั้งค่าอาร์กิวเมนต์CRSเป็นproj4string(nyc_tracts) - ตรวจสอบผลการแปลงโดยดูค่า
head()ของcoordinates(neighborhoods) - ตรวจสอบว่าชุดข้อมูลสอดคล้องกันแล้วด้วยการพล็อต
neighborhoodsจากนั้นพล็อตnyc_tractsพร้อมกับadd = TRUEและcol = "red"และสุดท้ายพล็อตwaterพร้อมกับadd = TRUEและcol = "blue"
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
library(sp)
library(raster)
# Use spTransform on neighborhoods: neighborhoods
# head() on coordinates() of neighborhoods
# Plot neighborhoods, nyc_tracts and water