将网格识别为 map/shapefile

Identifying grids into a map/shapefile

我有一些关于 maps/shapefiles 的问题。我不是 R 方面的专家,所以,为了更容易理解我要做什么,我将列举:

1- 识别地图上的每个网格,并可能省略其中一些网格。 2- 根据数据框中的值为每个网格着色

我刚刚使用 Photoshop 制作了我想要制作的东西来帮助说明我的目标 here

我使用 'intersect' 函数和从互联网获得的 shapefile 以及使用 'rastertoPolygons' 函数制作的网格制作了 this map,但我不确定是否使用 . shp 是获得我想要的东西的最好方法,尽管这是我发现的唯一方法,因为我在尝试使用 ggplot2 选项时迷路了(而且我对这个包非常熟悉)

任何帮助或建议都会很棒。

对不起,如果我提出了一个愚蠢的问题,对不起我的英语不好。

如果你问如何在 ggplot 中做到这一点,你可以很容易地做到。如果不是,你能澄清一下你在问什么吗?

您可以轻松绘制巴西地图,直接使用您的 shapefile,或进行一些调整。由于我没有你的 shapefile,我将使用我自己的一个,你可以自己调整。我只是制作了两个任意框,并用一个名为 id 的字段标记了它们。您的分组名称可能不同。

library(ggplot2)
library(maps)
library(rgdal)

brasilia <- borders("world", regions = "Brazil")
brazil <- ggplot() + brasilia + theme_bw() + xlab("Longitude (decimals)") + ylab("Latitude (decimals)") + 
  theme(panel.border = element_blank(), panel.grid.major = element_line(colour = "grey80"), panel.grid.minor = element_blank()) +
  coord_fixed(1.0)
brazil # You can see just the map of Brazil

接下来,使用 rgdal 导入您的 shapefile,它应该读取所​​有元数据,因此您不必告诉它投影是什么等。只需告诉它它在哪里,以及形状文件名是什么是。请参阅 ?readOGR 寻求帮助。

shapes <- readOGR(dsn = "C:/foo/GIS/Brazil", layer = "brazil_grid")
brazil_shapes <- brazil + geom_path(data = shapes, aes(x = long, y = lat, group = id), color = "red")
brazil_shapes

用您想要的颜色填充它们可能需要最多的工作,创建一个 table 将您的填充级别映射到网格。看起来这个答案可以为您指明正确的方向。 R ggplot2 merge with shapefile and csv data to fill polygons

这里很好地概述了 R 中的映射。http://eriqande.github.io/rep-res-web/lectures/making-maps-with-R.html