2016-11-24 10 views
1

rgdalreadOGR 함수를 사용하여 영국의 CCG 경계 KML지도 (Available here, 200Kb)를 R로 가져 오려고합니다. 최종 목표는 관련 가치에 따라 CCG를 채색하여 히트 맵을 작성하는 것입니다. 하나의 데이터 프레임에 CCG 이름 옆에있는 값 목록이 있습니다. 해당 데이터 프레임의 CCG 이름을 가져온지도 객체의 CCG 이름과 비교하고 값에 따라 색상을 지정해야합니다. 그러나지도 객체에 가져온 CCG 이름은 KML 파일에 있지만 볼 수 없습니다. 이것이 내가하는 일입니다.readOGR (rgdal)이 XML에서 폴리곤 이름을 가져 오지 못함

library(sp) 
library(rgdal) 
library(maps) 
library(maptools) 

KML 파일이 작업 디렉토리에 있다고 가정합니다. 목록 층 : 개체에 두 개의 섹션 (? 바로 단어)가

ccg_boundaries <- ReadOGR("Clinical_Commissioning_Groups_April_2016_Ultra_Generalised_Clipped_Boundaries_in_England.KML","OGRGeoJSON") 

R 스튜디오 보여줍니다

ogrListLayers("Clinical_Commissioning_Groups_April_2016_Ultra_Generalised_Clipped_Boundaries_in_England.KML") 

OGRGeoJSON 레이어 읽기.

polygons. 각 폴리곤에 대한 데이터가 들어 있습니다.

> [email protected][1] 
[[1]] 
An object of class "Polygons" 
Slot "Polygons": 
[[1]] 
An object of class "Polygon" 
Slot "labpt": 
[1] -2.104671 54.040320 
Slot "area": 
[1] 0.168067 
... 

그리고 data, 내가 CCG 이름을 포함하도록 기대하는 두 변수 (NameDescription)와,하지만이 비어 :

> [email protected] 
    Name Description 
0     
1     
2     
3     
4     
5   

그러나, CCG의 이름은 첫 번째에 대한 거기에 KML 파일에 Word 편집기로 열면 볼 수 있습니다. 알파벳 순서의 첫 번째 문자는 "NHS Airedale, Wharfedale and Craven"입니다.

<PolyStyle><fill>0</fill></PolyStyle></Style> 
    <ExtendedData><SchemaData schemaUrl="#OGRGeoJSON"> 
     <SimpleData name="objectid">1</SimpleData> 
     <SimpleData name="ccg16cd">E38000001</SimpleData> 
     <SimpleData name="ccg16nm">NHS Airedale, Wharfedale and Craven CCG</SimpleData> 

개체를 추출하고 포함 시키려면 LOGR 또는 다른 옵션을 읽을 수있는 옵션이 있습니까?

답변

1

아무도 같은 문제가 발생하면 여기에 해결책이 있습니다.

웹 사이트는 두 가지 형식으로지도를 제공합니다 : KML and SHP. KML을 선택한 이유는 KML이 내가 따르는 작업 예제에서 사용 되었기 때문입니다. 그러나이 특정 KML 파일 또는 생성 방법에 문제가있는 것으로 보입니다. 대신 셰이프 파일 (SHP)로 프로 시저를 시도해 보니 매력적이었습니다.

모양 파일은 동일한 함수 R로 판독 될 수 있지만, 층을 지정하지 않아도 :

ccg_boundaries <- ReadOGR("Clinical_Commissioning_Groups_April_2016_Ultra_Generalised_Clipped_Boundaries_in_England.SHP") 

CCG 이름이 ccg16nm 변수를 현재있다 :

> head([email protected]) 
    objectid ccg16cd         ccg16nm st_areasha st_lengths 
0  1 E38000001 NHS Airedale, Wharfedale and Craven CCG 1224636590 193149.74 
1  2 E38000002       NHS Ashford CCG 582174805 122841.19 
2  3 E38000003     NHS Aylesbury Vale CCG 984352696 229544.11 
3  4 E38000004   NHS Barking and Dagenham CCG 36315011 31196.87 
4  5 E38000005       NHS Barnet CCG 86654018 41833.69 
5  6 E38000006      NHS Barnsley CCG 327520495 106476.52