Як накладати шари карти (shp та csv) у R?


9

Це перехрестя від stackoverflow . Я дуже мало знаю про програмне забезпечення ГІС і заздалегідь роблю все своє відображення в Р. Вибачення, якщо це занадто основне питання. Скажімо, у мене є два профілі з різних джерел, але з різними атрибутами. Скажімо, один - для адміністративних кордонів Техасу ( 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)

Дякую, РК, я все ще намагаюся розвісити це, але це було чудовим покажчиком.
user3671

Ласкаво просимо. Приємно картографуючи :)
РК

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. Але в ньому сказано, що "додати - це не графічний параметр".
user3671

Приклад добре працює, коли я запускаю його на своєму комп’ютері, але здається, що "додати" працює не завжди і залежить від класу вхідних даних, дивіться цю публікацію . Тож моя пропозиція може бути не найкращим способом ...
yellowcap
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.