用 R 绘制粮农组织捕鱼区地图

Map FAO fishing areas in R

我想在 R 中根据数据集(在我的例子中是鲨鱼物种的长度数据)在 FAO 捕鱼区中着色的地图。

我更愿意在 ggplot 中制作等值线图,但其他类型的地图也可以。最坏的情况是我可以添加气泡的粮农组织区域底图。即使只是现有的粮农组织区域底图也很好。欢迎提出任何建议!

我去 this page and clicked through to find this link 检索了一个 GeoJSON 文件:

download.file("http://www.fao.org/fishery/geoserver/fifao/ows?service=WFS&request=GetFeature&version=1.0.0&typeName=fifao:FAO_AREAS_CWP&outputFormat=json", dest="FAO.json")

从现在开始,我关注this example from the R graph gallery, with a little help from and these notes:

library(geojsonio)
library(sp)
library(broom)
library(ggplot2)
library(dplyr)    ## for joining values to map

spdf <- geojson_read("FAO.json",  what = "sp")

此时,plot(spdf) 将调出一个简单的 (base-R) 区域图。

spdf_fortified <- tidy(spdf)
## make up some data to go with ...
fake_fish <- data.frame(id = as.character(1:324), value = rnorm(324))
spdf2 <- spdf_fortified %>% left_join(fake_fish, by = "id")
ggplot() +
    geom_polygon(data = spdf2, aes( x = long, y = lat, group = group,
                                            fill = value), color="grey") +
    scale_fill_viridis_c() +
    theme_void() +
    theme(plot.background = element_rect(fill = 'lightgray', colour = NA)) +
    coord_map() +
    coord_sf(crs = "+proj=cea +lon_0=0 +lat_ts=45") ## Gall projection

ggsave("FAO.png")

笔记

  • 有些步骤很慢,可能值得查看如何 coarsen/lower 空间多边形的分辨率 object(如果您只想显示图片,分辨率级别可能矫枉过正)
  • 老实说,默认的顺序配色方案可能会更好,但现在所有酷孩子似乎都喜欢“viridis”,所以...
  • 可能有更好的方法来完成这些部分(例如设置地图投影、填充陆地块的背景颜色,...?)