Harita katmanları (shp ve csv) R'de nasıl kaplanır?


9

Bu yığın akışından bir crosspost . GIS yazılımı hakkında çok az şey biliyorum ve çok basit bir soru ise, R'deki özür dileme işlemimi yapıyorum. Diyelim ki farklı kaynaklardan ancak farklı özelliklere sahip iki şekil dosyası var. Diyelim ki biri Texas'ın ( boundaries.shp) idari sınırları , diğeri ise Texas nehirleri ( rivers.shp) içindir. Ayrıca towns.csveyalet içindeki kasabaların yerlerini gösteren üçüncü bir dosyam var . Dosyaları okuduktan sonra, paketteki ekimsel sınırlardaki kasaba konumlarını abartabilirim maptools:

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

Peki üçünü de nasıl kaplayabilirim? Elbette bunu yapmanın kolay bir yolu var mı?

Yanıtlar:


8

PBSMapping ihtiyaçlarınızı karşılamalıdır. NCEAS'ta bir eğitim var . Aşağıdaki kod bu öğreticiden uyarlanmıştır. Verileriniz hakkında varsayımlar yapıyorum btw. Lütfen durumunuza uygun şekilde düzenleyin.

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)

Teşekkürler, RK Ben hala asmak için çalışıyorum, ama bu mükemmel bir işaretçi oldu.
user3671

Rica ederim. İyi eğlenceler haritalama :)
RK

11

İki parselin üst üste bindirilmesinin en basit yolu, içindeki add = TRUEseçeneği kullanmak olabilir plot. İşte yapay verilere sahip bir örnek

# 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')

Götürdüğün için teşekkürler, yellowcap. Ancak "ekleme grafiksel bir parametre değil" yazıyor.
user3671

Örnek bilgisayarımda çalıştırdığımda iyi çalışıyor, ancak "add" her zaman işe yaramıyor ve giriş verilerinin sınıfına bağlı görünüyor, bu gönderiye bakın . Yani benim önerim gitmek için en iyi yol olmayabilir ...
yellowcap
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.