Я пробую пакет картографии R. Пришлось поработать, чтобы найти шейп-файл штата США, который хотел бы работать с картографическими материалами - многие казались слишком большими и т. Д. c .. Мне казалось, что все идет хорошо, но штат Колорадо ошибается.
library(cartography)
library(sf)
library(RColorBrewer)
library(maps)
library(ggplot2)
rm(list = ls())
# USA shape file
states <- st_as_sf(map("state", plot = F, fill = TRUE))
#seems to plot correctly here
#ggplot(states) + geom_sf(aes(fill = ID))
usa <- st_transform(states,
CRS("+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=37.5 +lon_0=-96"))
# still seems to plot fine
#ggplot(usa) + geom_sf(aes(fill = ID))
usa <- st_buffer(usa, dist=0)
datamap <- usa
datamap$randoVar <- sample(1:3, length(datamap$ID), replace = T)
datamap_pencil <- getPencilLayer(
x = datamap,
buffer = 500,
size = 400,
lefthanded = F
)
plot(st_geometry(usa), col = "white", border = "black", bg = "lightblue1")
typoLayer(
x = datamap_pencil,
var="randoVar",
col = c("aquamarine4", "yellow3","#3c5cb0"),
lwd = .7,
legend.values.order = 1:3,
legend.pos = "bottomleft",
legend.title.txt = "",
add = TRUE
)
labelLayer(x = datamap, txt = "ID",
cex = 0.9, halo = TRUE, r = 0.15)
Я впервые заметил, потому что, когда я попытался объединить файл данных и выполнить заливку с помощью этой функции, Колорадо появился как «Нет данных». Аналогично, приведенный выше код указывает на то, что гемометрия состояния или ID отключены. Я не знаю достаточно ГИС, чтобы понять, почему. Мне действительно пришлось изменить проекцию CRS, чтобы я мог буферизовать файл карты (getPencilLayer продолжал выдавать ошибку самопересечения, которая, как представляется, является обычной для отображения R).
Есть идеи, что делать?