Как наложить слои карты (shp и csv) в R?

9

Это кросспост из stackoverflow . Я очень мало знаю о программном обеспечении ГИС и заранее делаю все свои карты в R. Извинения, если это слишком простой вопрос. Допустим, у меня есть два шейп-файла из разных источников, но с разными атрибутами. Скажем, один предназначен для административных границ Техаса ( boundaries.shp), а другой - для рек Техаса ( rivers.shp). У меня также есть третий файл, towns.csvпоказывающий расположение городов в штате. После прочтения в файлах я могу перенести расположение городов на административные границы в maptoolsпакете:

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

Но как я могу наложить все три? Конечно, есть простой способ сделать это?

user3671
источник

Ответы:

8

PBSMapping должен соответствовать вашим потребностям. В NCEAS есть учебник . Код ниже взят из этого урока. Я делаю предположения о ваших данных, кстати. Пожалуйста, отредактируйте в соответствии с вашей ситуацией.

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')
yellowcap
источник
Спасибо за участие, yellowcap. Но он говорит, что «добавить это не графический параметр».
user3671
Пример отлично работает, когда я запускаю его на своем компьютере, но кажется, что «add» работает не всегда и зависит от класса входных данных, см. Этот пост . Так что мое предложение может быть не лучшим способом ...
yellowcap