区域映射的空间数据
Spacial data for region mapping
我在英国有一些数据,我需要介绍一张英格兰所有9个地区的地图。我尝试使用图书馆(地图),但我得到的地块没有任何区域信息,我最终得到了整个英国。
理想情况下,我正在寻找这样的结果
https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/English_regions_2009.svg/370px-English_regions_2009.svg.png
(由于缺少声望点,我无法真正附上图片,抱歉!)
我的数据中有一列包含具有字符值的区域:
EastMid
EastEng
London
NorthEast
NorthWest
SouthEast
SouthWest
WestMid
Yorkshire
然后我会继续按具有不同属性的颜色区域进行映射
我该如何继续呢?
首先,正如 Andrew 所写,您需要查找并下载包含必要区域的 shapefile。您需要的这种划分通常称为历史区域或标准统计区域。您可能想查看此站点:http://www.natureonthemap.naturalengland.org.uk/
其次,您读取 shapefile 并与公投数据合并。确保公投文件中的区域名称与地理空间文件中的区域名称完全相同(我使用从上述站点下载的文件,如果您下载另一个 shapefile,名称可能会有所不同):
library(rgdal)
library(tmap)
geoEN = readOGR(".", "maghistengland")
在这种情况下,区域名称存储在 NAME 中(在另一个 shapefile 中属性名称可以不同)。您可以通过以下方式查看包含哪些信息的地理空间文件:
ogrInfo(".", "maghistengland")
出于示例的目的,我创建了投票结果的虚假数字。
votes = as.data.frame(
cbind(
c("EAST MIDLANDS",
"EAST OF ENGLAND",
"LONDON",
"NORTH EAST",
"NORTH WEST",
"SOUTH EAST",
"WEST MIDLANDS",
"YORKSHIRE AND THE HUMBER",
"SOUTH WEST"),
c(60, 65, 55, 50, 45, 40, 35, 30, 30),
c(40, 35, 45, 50, 55, 60, 65, 70, 70)
), stringsAsFactors = FALSE)
names(votes) = c("Regions", "Yes", "No")
votes$Yes = as.numeric(votes$Yes)
votes$No = as.numeric(votes$No)
votes$Result = colnames(votes)[max.col(votes[,2:3])+1]
现在我们可以合并两个文件了:
mapEN = append_data(geoEN, votes, key.shp = "NAME", key.data = "Regions")
第三,创建必要的图表。这是三个例子。您可以玩组数(n = 2、3、4..)、颜色等。
tm_shape(mapEN) +
tm_fill("Yes", title = "This is a title", palette = "Blues", n=4) +
tm_borders(alpha=.5)
tm_shape(mapEN) +
tm_fill("No", title = "This is a title", palette = "Reds", n=5) +
tm_borders(alpha=.5)
tm_shape(mapEN) +
tm_fill("Result", palette = c("Red", "Blue")) +
tm_borders(alpha=.5)
我在英国有一些数据,我需要介绍一张英格兰所有9个地区的地图。我尝试使用图书馆(地图),但我得到的地块没有任何区域信息,我最终得到了整个英国。
理想情况下,我正在寻找这样的结果 https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/English_regions_2009.svg/370px-English_regions_2009.svg.png
(由于缺少声望点,我无法真正附上图片,抱歉!)
我的数据中有一列包含具有字符值的区域:
EastMid
EastEng
London
NorthEast
NorthWest
SouthEast
SouthWest
WestMid
Yorkshire
然后我会继续按具有不同属性的颜色区域进行映射
我该如何继续呢?
首先,正如 Andrew 所写,您需要查找并下载包含必要区域的 shapefile。您需要的这种划分通常称为历史区域或标准统计区域。您可能想查看此站点:http://www.natureonthemap.naturalengland.org.uk/
其次,您读取 shapefile 并与公投数据合并。确保公投文件中的区域名称与地理空间文件中的区域名称完全相同(我使用从上述站点下载的文件,如果您下载另一个 shapefile,名称可能会有所不同):
library(rgdal)
library(tmap)
geoEN = readOGR(".", "maghistengland")
在这种情况下,区域名称存储在 NAME 中(在另一个 shapefile 中属性名称可以不同)。您可以通过以下方式查看包含哪些信息的地理空间文件:
ogrInfo(".", "maghistengland")
出于示例的目的,我创建了投票结果的虚假数字。
votes = as.data.frame(
cbind(
c("EAST MIDLANDS",
"EAST OF ENGLAND",
"LONDON",
"NORTH EAST",
"NORTH WEST",
"SOUTH EAST",
"WEST MIDLANDS",
"YORKSHIRE AND THE HUMBER",
"SOUTH WEST"),
c(60, 65, 55, 50, 45, 40, 35, 30, 30),
c(40, 35, 45, 50, 55, 60, 65, 70, 70)
), stringsAsFactors = FALSE)
names(votes) = c("Regions", "Yes", "No")
votes$Yes = as.numeric(votes$Yes)
votes$No = as.numeric(votes$No)
votes$Result = colnames(votes)[max.col(votes[,2:3])+1]
现在我们可以合并两个文件了:
mapEN = append_data(geoEN, votes, key.shp = "NAME", key.data = "Regions")
第三,创建必要的图表。这是三个例子。您可以玩组数(n = 2、3、4..)、颜色等。
tm_shape(mapEN) +
tm_fill("Yes", title = "This is a title", palette = "Blues", n=4) +
tm_borders(alpha=.5)
tm_shape(mapEN) +
tm_fill("No", title = "This is a title", palette = "Reds", n=5) +
tm_borders(alpha=.5)
tm_shape(mapEN) +
tm_fill("Result", palette = c("Red", "Blue")) +
tm_borders(alpha=.5)