มากกว่า

เพิ่มแอตทริบิวต์ Points shp ให้กับ Polygon shp ตามตำแหน่ง Point (เป็น Spatial Join ใน ArcGIS)

เพิ่มแอตทริบิวต์ Points shp ให้กับ Polygon shp ตามตำแหน่ง Point (เป็น Spatial Join ใน ArcGIS)


ฉันมีชุดคะแนนใน .shp (ESRI มีให้ที่นี่: http://ulozto.cz/xGqRVFrR/voronoi-zip) ฉันต้องการคำนวณ Voronoi tesselation จากจุดต่างๆ เพื่อสร้างรูปหลายเหลี่ยม จนถึงตอนนี้ดีมาก อย่างไรก็ตาม, ตารางแอตทริบิวต์คะแนนจะไม่ถูกโอนโดยอัตโนมัติใน R ไปยังรูปหลายเหลี่ยม tesslation ของ Voronoi ระหว่างการคำนวณ (เช่นเดียวกับใน ArcGIS)

ดังนั้น ขึ้นอยู่กับตำแหน่งเชิงพื้นที่ของจุด ฉันต้องการเพิ่มแอตทริบิวต์ของจุดให้กับรูปหลายเหลี่ยมของ Voronoi ใหม่ของฉัน ฉันพยายามใช้ฟังก์ชั่น

มากกว่า (diagram.poly, bod.sp)

แต่มันสร้าง data.frame ไม่ใช่รูปหลายเหลี่ยม

โปรด,

  1. วิธีเพิ่มแอตทริบิวต์ของคะแนนให้กับรูปหลายเหลี่ยม Voronoi โดยอัตโนมัติ หรือ
  2. จะใช้ data.frame ที่เป็นผลลัพธ์เป็นตารางแอตทริบิวต์ของรูปหลายเหลี่ยมได้อย่างไร

ฉันแน่ใจว่ามันเป็นงานเล็กน้อยแต่ฉันยังหาคำตอบไม่ได้!

รหัสของฉัน:

# ตัวอย่างกับไลบรารีข้อมูลของฉัน (spatstat) ไลบรารี (sp) ไลบรารี (deldir) ไลบรารี (rgdal) ไลบรารี (maptools) # set directory wd<- setwd("C:/Users/***/voronoi") # read point shp SpatialPointsDataFrame bod<-readOGR(dsn=setwd("C:/Users/***/voronoi"), layer="voronoi_tess") # แปลงเป็น ppp ก่อน (รูปแบบจุดเชิงพื้นที่ (วัตถุของคลาส "ppp") bod.ppp<-as.ppp(bod) # คำนวณ Voronoi tesselation diagram<-dirichlet(bod.ppp) # แปลงไดอะแกรมเป็น SpatialPolygon diagram.poly=as(diagram, "SpatialPolygons") # ใช้ CRS จาก "bod" proj= CRS(proj4string(bod)) # กำหนดไดอะแกรม CRS proj4string(diagram.poly)=proj # ตรวจสอบว่าการฉายภาพเหมือนกันหรือไม่ (proj4string(bod), proj4string(diagram.poly)) # พล็อตพล็อตผลลัพธ์ (diagram.poly, เส้นขอบ = "ดาร์กเกรย์") จุด (bod, col = "สีแดง", pch = 16) # ลองใช้ฟังก์ชัน over{sp} สร้าง data.frame over (diagram.poly, bod)


ที่นี่ฉันโพสต์คำตอบของฉัน:

ฉันพลาดวิธีการแปลง เชิงพื้นที่รูปหลายเหลี่ยม ถึง SpatialPolygonDataFrame และความแตกต่างระหว่างกัน SpatialPolygon ไม่มีตารางแอตทริบิวต์ SpatialPolygonDataFrame มี ดังนั้นตารางแอตทริบิวต์สามารถเพิ่มได้อย่างง่ายดายจากตารางแอตทริบิวต์คะแนนของฉัน ไม่จำเป็นต้องใช้ เกิน ฟังก์ชัน :-D

# ไลบรารีโค้ดที่เขียนใหม่ (sp) ไลบรารี (deldir) ไลบรารี (rgdal) ไลบรารี (maptools) ไลบรารี (spatstat) # set directory wd<- setwd("C:/Users/***/voronoi") # read point shp SpatialPointsDataFrame bod<-readOGR(dsn=setwd("C:/Users/***/voronoi"), layer="voronoi_tess") # แปลงเป็น ppp ก่อน (รูปแบบจุดเชิงพื้นที่ (วัตถุของคลาส "ppp") bod.ppp<-as.ppp(bod) # คำนวณ voronoi tesselation diagram<-dirichlet(bod.ppp) # แปลงไดอะแกรมเป็น SpatialPolygon - ไม่มีตารางแอตทริบิวต์ diagram.poly=as (ไดอะแกรม "SpatialPolygons") # สร้างตารางแอตทริบิวต์จาก จุด shp (bod) เป็น data frame att.bod<-as.data.frame(bod) # แปลงเป็น SpatialPolygonDataFrame - รวม SpatialPolygon + ตารางแอตทริบิวต์ (att.bod) s_poly <- SpatialPolygonsDataFrame(diagram.poly, att.bod ) # ส่งออกไปยัง ArcGIS เพื่อตรวจสอบแอตทริบิวต์ writeOGR (s_poly, wd, "s_poly", ไดรเวอร์ = "ESRI Shapefile")

ดูวิดีโอ: Economic Geography: Joining Points to Polygons - The Spatial Join