2017-03-29 1 views
0

저는 영국에 데이터가 있습니다. 영국의 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 
그때 다른 속성

와 컬러 지역으로 매핑 계속할 것

어떻게 진행하나요?

+0

가 아마 가장 좋은 건 이미 생성 지역 탈출을 가진 shape 파일을 찾을 수있을 것입니다 , 그러면 값을에 매핑 할 수 있습니다. 빠른 'googlin'for 'uk shapefile'은 가능한 소스의 범위를 제공합니다. 그 중에서도 SE에 대한이 게시물은 http://gis.stackexchange.com/questions/154540/where-can-i-find-spatial-data-for입니다. -uk-administrative-boundaries –

답변

0

먼저 앤드류 (Andrew)가 썼 듯이 필요한 영역이있는 쉐이프 파일을 찾아 다운로드해야합니다. 이러한 분할은 일반적으로 히스토리 리 영역 또는 표준 통계 영역이라고합니다. 이 사이트를 확인하시는 것이 좋습니다. http://www.natureonthemap.naturalengland.org.uk/

둘째, 셰이프 파일을 읽고 국민 투표 데이터와 병합합니다. 이러한면에서

library(rgdal)  
library(tmap) 
geoEN = readOGR(".", "maghistengland") 

: 국민 파일에서 지역 이름 (다른 Shape 파일 이름이 아마 다를 수를 다운로드하는 경우 나, 위에서 언급 한 사이트에서 다운로드 한 파일을 사용) 지리 공간 파일과 정확하게 동일한 지 확인하십시오 대소 문자의 지역 이름은 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) 

enter image description here

+0

매우 상세한 답변을 해주셔서 감사합니다! 대단히 감사합니다 –