จัดกลุ่ม SpatialPolygonsDataFrame ตาม ID ใน R หรือไม่


13

ฉันใช้gIntersectฟังก์ชันจากrgeosแพ็คเกจเพื่อกำหนดรูปหลายเหลี่ยมที่ตัดกันในสอง SpatialPolygonsDataFrames (spdfs) ผลลัพธ์เป็นเมทริกซ์เชิงตรรกะที่มี rownames ซึ่งประกอบด้วยรูปหลายเหลี่ยม ID จาก sfdf # 1 และ colnames ID รูปหลายเหลี่ยมจาก spdf # 2 ฉันต้องการที่จะใช้เมทริกซ์นี้ไปยังระบบย่อยทั้งสอง spdfs gIntersectionเดิมถนัดรูปหลายเหลี่ยมที่ไม่มีการทับซ้อนก่อนที่จะใช้ฟังก์ชั่น ฉันสามารถแปลงเมทริกซ์เชิงตรรกะได้อย่างง่ายดายเป็นสองเวกเตอร์ของรหัส (หนึ่งสำหรับแต่ละไฟล์ PDF) ที่แสดงรูปหลายเหลี่ยมเหล่านั้นอย่างน้อยทับซ้อนกัน

คำถามของฉันคือ - ฉันสามารถใช้เวกเตอร์ของรูปหลายเหลี่ยม ID เพื่อเซตย่อย spdf ได้หรือไม่ ถ้าเป็นเช่นนั้นมันจะเซตค่าใน@dataสล็อตได้อย่างถูกต้องหรือไม่? ฉันรู้ว่าฉันสามารถย่อย spdfs โดยใช้ไวยากรณ์นี้ได้:

spdf[spdf@data$myVariable[someVector], ]

สิ่งนี้จะใช้ไม่ได้กับ ID เนื่องจากฝังอยู่ลึกเข้าไปในโครงสร้างรายการ spdf

คำตอบ:


11

รหัส id ของเมทริกซ์ที่ส่งคืนจาก gIntersect ควรสอดคล้องกับชื่อแถวในวัตถุ sp แต่ละแหล่ง คุณควรจะสามารถสร้างดัชนีตำแหน่ง rownames เพื่อเซ็ตย่อยข้อมูล

r <- c(1,5,3,9,10)
sp.polys <- sp.polys[r,]

ฉันต้องการตรวจสอบ - สิ่งนี้จะทำงานบนวัตถุ spdf โดยตรงหรือไม่ (กล่าวคือspdf[r, ])
อัลเบอร์โตถึง

ใช่มันทำงานกับวัตถุ sp และดัชนีเผยแพร่ผ่าน ID ที่เชื่อมโยงวัตถุสล็อตทั้งหมดซึ่งสอดคล้องกับชื่อแถว @data
Jeffrey Evans

บางทีฉันอ่านไม่ถูกต้อง แต่นี่มันผิดเล็กน้อย? คุณควรแยกสตริง rชื่อแถวออกมาโดยใช้จำนวนเต็มจะแยกตามปกติ
MichaelChirico

@MichaelChirico ที่ส่งคืนตำแหน่งแถวที่ทราบว่าถูกต้อง หากคุณรู้คุณค่าของชื่อแถวมากกว่าที่คุณสามารถสร้างดัชนีโดยใช้สิ่งที่ (rownames (x)% ใน% c (1,5)) และไม่ยกเว้นสตริงอักขระที่แท้จริงจะถูกกำหนดให้กับ rownames เกินกว่าค่าที่ไม่จำเป็นต้องยกมา rowname เริ่มต้นเป็นเวกเตอร์ที่มีการเสนอราคา 1: n
Jeffrey Evans
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.