2016-11-24 1 views
1

Ich versuche eine KML-Karte von CCG-Grenzen in England (Available here, 200Kb) in R zu importieren, wobei readOGR Funktion von Paket rgdal verwendet wird. Mein Endziel ist es, eine Heatmap zu erstellen, indem CCGs nach einem bestimmten Wert eingefärbt werden. Ich habe eine Liste mit diesen Werten neben CCG-Namen in einem Datenrahmen. Ich muss CCG-Namen in diesem Datenrahmen mit CCG-Namen im importierten Kartenobjekt abgleichen und Farben basierend auf dem Wert zuweisen. Ich kann jedoch keine importierten CCG-Namen im Kartenobjekt sehen, obwohl sie in der KML-Datei vorhanden sind. Dies ist, was ich tue:readOGR (rgdal) kann Polygonnamen nicht aus XML holen

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

Angenommen, die KML-Datei befindet sich im Arbeitsverzeichnis. Listing Schichten:

ogrListLayers("Clinical_Commissioning_Groups_April_2016_Ultra_Generalised_Clipped_Boundaries_in_England.KML") 

Lese OGRGeoJSON Schicht:

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

R Studio zeigt, gibt es zwei Abschnitte (richtiges Wort?) In dem Objekt.

polygons, die Daten für jedes Polygon enthält, z. für die erste:

> [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 
... 

Und data, mit zwei Variablen (Name und Description), die ich erwarten würde CCG Namen enthalten, aber es ist leer:

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

jedoch die CCG-Namen sind Dort in der KML-Datei, die zu sehen ist, wenn sie mit einem Word-Editor geöffnet wird, z der erste in der alphabetischen Reihenfolge ist "NHS Airedale, Wharfedale und Craven".

Gibt es vielleicht eine Option zu lesenOGR oder eine andere Option, um sie zu extrahieren und in das Objekt aufzunehmen?

Antwort

1

OK, wenn jemand auf das gleiche Problem stößt, hier ist die Lösung, die ich gefunden habe.

Die Website bietet die Karten in zwei Formaten: KML and SHP. Ich wählte KML, weil dies in einem bearbeiteten Beispiel verwendet wurde, dem ich folgte. Aber es scheint ein Problem mit dieser bestimmten KML-Datei oder wie es erzeugt wurde. Ich habe stattdessen die Prozedur mit einer Shapefile (SHP) ausprobiert, und es funktionierte wie ein Zauber.

Shape-Dateien können durch die gleiche Funktion in R gelesen werden, müssen aber nicht die Ebene festgelegt wird:

ccg_boundaries <- ReadOGR("Clinical_Commissioning_Groups_April_2016_Ultra_Generalised_Clipped_Boundaries_in_England.SHP") 

CCG Namen sind jetzt dort in der ccg16nm Variable:

> 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 
Verwandte Themen