วิธีซ้อนเลเยอร์แผนที่ (shp และ csv) ใน R


9

นี่คือcrosspost จาก StackOverflow ฉันรู้น้อยมากเกี่ยวกับซอฟต์แวร์ GIS และกำลังทำแผนที่ทั้งหมดของฉันใน R. Apologies ล่วงหน้าหากนี่เป็นคำถามพื้นฐานเกินไป สมมติว่าฉันมีสองรูปร่างไฟล์จากแหล่งที่แตกต่างกัน แต่มีคุณสมบัติที่แตกต่างกัน สมมติว่าข้อแรกมีไว้สำหรับขอบเขตการจัดการของเท็กซัส ( boundaries.shp) และอีกอันสำหรับแม่น้ำเท็กซัส ( rivers.shp) ฉันยังมีไฟล์ที่สามที่towns.csvแสดงที่ตั้งของเมืองในรัฐ หลังจากอ่านในไฟล์ฉันสามารถระบุตำแหน่งของเมืองมากเกินไปบนขอบเขตของการสั่งการในmaptoolsแพ็คเกจ:

plot(boundaries); points(towns$lon, towns$lat)

แต่ฉันจะซ้อนทับทั้งสามได้อย่างไร แน่นอนมีวิธีง่ายๆในการทำเช่นนี้?

คำตอบ:


8

PBSMapping ควรตรงกับความต้องการของคุณ มีการกวดวิชาที่เป็นNCEAS โค้ดด้านล่างนี้ดัดแปลงจากบทช่วยสอนนั้น ฉันกำลังตั้งสมมติฐานเกี่ยวกับข้อมูลของคุณ btw โปรดแก้ไขตามความเหมาะสมกับสถานการณ์ของคุณ

library(PBSmapping)

#prepare towns
pts <- read.csv("towns.csv")
towns <- points(towns$lon, towns$lat)
# read in shapefiles 
rivers <- importShapefile("rivers.shp")
boundaries <- importShapefile("boundaries.shp")


# note that importShapefile reads the .prj file if it exists, but it
# does not adopt the proj4 format used by the above approaches
proj.abbr <- attr(boundaries, "projection") # abbreviated projection info
proj.full <- attr(boundaries, "prj") # full projection info
print(proj.abbr)
# [1] "LL"

# generate map using PBSmapping plotting functions
plotPolys(boundaries, projection=proj.abbr, border="gray",
    xlab="Longitude", ylab="Latitude")
addPoints(towns, pch=20, cex=0.8)
addLines(rivers, col="blue", lwd=2.0)

ขอบคุณ RK ฉันยังคงพยายามที่จะหยุดมัน แต่นี่เป็นตัวชี้ที่ยอดเยี่ยม
user3671

ไม่เป็นไร ขอให้สนุกกับการทำแผนที่ :)
RK

11

วิธีที่ง่ายที่สุดในการซ้อนทับสองแปลงอาจจะใช้ตัวเลือกในadd = TRUE plotนี่คือตัวอย่างที่มีข้อมูลเทียม

# Load sp package for creating artificial data
library(sp)

# Create sample town points
towns <- data.frame(lon = sample(100), lat = sample(100))
towns <- SpatialPoints(towns)

# Create sample polygon grid
grd <- GridTopology(c(1,1), c(10,10), c(10,10))
polys <- as.SpatialPolygons.GridTopology(grd)

# Plot polygons
plot(polys)

# Add towns (in red colour)
plot(towns, add = TRUE, col = 'red')

ขอบคุณที่บิ่นเยลโล่แคป แต่มันบอกว่า "เพิ่มไม่ใช่พารามิเตอร์กราฟิก"
user3671

ตัวอย่างทำงานได้ดีเมื่อฉันเรียกใช้บนคอมพิวเตอร์ของฉัน แต่ดูเหมือนว่า "เพิ่ม" ไม่ทำงานเสมอไปและขึ้นอยู่กับคลาสของข้อมูลอินพุตให้ดูโพสต์นี้ ดังนั้นข้อเสนอแนะของฉันอาจไม่ใช่วิธีที่ดีที่สุดที่จะไป ...
yellowcap
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.