Код ниже является частью небольшой процедуры для хранения LEGEND цветов, используемых на карте.Как сохранить цвета SpatialPolygons в R
Основная функция заключается в том, чтобы не использовать функцию PLOT или функцию LEGEND, а генерировать полигоны, которые формируют LEGEND, и сохранять их шейп-файл.
contour <- bbox(mapa)
polBorder <- polygonBox(contour, scale=0.0002)
boxBorder <- bbox(polBorder)
polLeg <- list()
xmin <- boxBorder["x", "min"] + 0.0005
ymin <- boxBorder["y", "min"] + 0.0005
sizex = abs(boxBorder["x", "max"]-boxBorder["x", "min"])/20
sizey = abs(boxBorder["y", "max"]-boxBorder["y", "min"])/20
for (i in 1:7)
{
polygon <- polygonBoxPos2(xmin, ymin, +sizex, +sizey, paste0("p",i))
polLeg <- append(polygon, polLeg)
ymin <- ymin + sizey
}
SdP = SpatialPolygons(polLeg)
plot(polBorder, border="black")
plot(SdP, add=TRUE)
plot(mapa, col=colPalette, add=TRUE)
polygonBox <- function (bbox, scale=0.0)
{
bbox["x", "min"] <- bbox["x", "min"] + scale*bbox["x","min"]
bbox["x", "max"] <- bbox["x", "max"] - scale*bbox["x","max"]
bbox["y", "min"] <- bbox["y", "min"] + scale*bbox["y","min"]
bbox["y", "max"] <- bbox["y", "max"] - scale*bbox["y","max"]
Sr1 = Polygon(cbind(c(bbox["x","min"],bbox["x","max"],bbox["x","max"],bbox["x","min"],bbox["x","min"]),
c(bbox["y","min"],bbox["y","min"],bbox["y","max"],bbox["y","max"],bbox["y","min"]))
, hole=TRUE)
Srs1 = Polygons(list(Sr1), "s1")
SdP = SpatialPolygons(list(Srs1))
return(SdP)
}
polygonBoxPos2 <- function (xmin, ymin, sizex, sizey,id)
{
xmax <- xmin + sizex
ymax <- ymin + sizey
Sr1 = Polygon(cbind(c(xmin , xmax , xmax , xmin, xmin),c(ymin, ymin, ymax, ymax, ymin)), hole=TRUE)
Srs1 = Polygons(list(Sr1), id)
return(Srs1)
}
Вы можете увидеть их внизу слева.
Все примеры, которые я ищу, задают цвета многоугольников во время операции PLOT, но я хочу сохранить цвет с помощью Polygon, как этого достичь?
Это неясно или воспроизводимо. Некоторые из ваших функций не определены и не находятся в очевидных местах (maptools и sp). Возможно, вам просто нужно создать объект списка с полигонами и сохраненными цветами. Откуда вы все равно получаете цвета? – Spacedman
Извините, я добавил две функции, которые я забыл. @Spacedman – jcarlos
Цвета исходят из палитры, которую я использую для построения карты, в этом примере я использовал brewer.pal (7, «Reds») от RColorBrewer – jcarlos