2016-11-24 25 views
1

Я пытаюсь импортировать KML-карту границ CCG в Англии (Available here, 200Kb) в R, используя readOGR функцию из пакета rgdal. Моя конечная цель - создать тепловую карту, окрашивая CCG в соответствии с некоторым связанным значением. У меня есть список с этими значениями рядом с именами CCG в одном фрейме данных. Мне нужно сопоставить имена CCG в этом фрейме данных с именами CCG в импортированном объекте карты и назначить цвета на основе значения. Однако я не вижу никаких имен CCG, импортированных в объект карты, хотя они присутствуют в файле KML. Это то, что я делаю:readOGR (rgdal) не удается получить имена полигонов из XML

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

Предполагая, что файл KML находится в рабочем каталоге. Listing слои:

ogrListLayers("Clinical_Commissioning_Groups_April_2016_Ultra_Generalised_Clipped_Boundaries_in_England.KML") 

Чтение OGRGeoJSON слой:

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

R-студия показывает, что две секции (правильное слово?) В объекте.

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, с двумя переменными (Name и Description), которые я бы ожидать, чтобы содержать имена CCG, но он пуст:

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

Однако имена CCG являются там в KML-файле, который можно увидеть, если он открыт с помощью редактора Word, например первая в алфавитном порядке - «NHS Airedale, Wharfedale и 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> 

Возможно, есть опция для чтенияOGR или какой-либо другой опции для их извлечения и включения в объект?

ответ

1

ОК, если кто-либо сталкивается с той же проблемой, вот решение, которое я нашел.

На сайте представлены карты в двух форматах: KML and SHP. Я выбрал KML, потому что это использовалось в обработанном примере, за которым я следил. Но, похоже, проблема с этим конкретным файлом KML или тем, как он был сгенерирован. Я попробовал процедуру с Shapefile (SHP) вместо этого, и он работал как шарм.

Shapefiles можно прочитать в 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