我正在尝试导入英格兰 CCG 边界的 KML 地图(此处提供,200Kb http://geoportal.statistics.gov.uk/datasets/1bc1e6a77cdd4b3a9a0458b64af1ade4_4.kml) 进入 R 使用readOGR
包中的函数rgdal
。我的最终目标是根据一些相关值对 CCG 进行着色来创建热图。我有一个列表,其中一个数据框中的 CCG 名称旁边包含这些值。我需要将该数据框中的 CCG 名称与导入的地图对象中的 CCG 名称进行匹配,并根据值分配颜色。但是,我看不到地图对象中导入的任何 CCG 名称,尽管它们存在于 KML 文件中。这就是我正在做的:
library(sp)
library(rgdal)
library(maps)
library(maptools)
假设 KML 文件位于工作目录中。
列出层:
ogrListLayers("Clinical_Commissioning_Groups_April_2016_Ultra_Generalised_Clipped_Boundaries_in_England.KML")
Reading OGRGeoJSON
layer:
ccg_boundaries <- ReadOGR("Clinical_Commissioning_Groups_April_2016_Ultra_Generalised_Clipped_Boundaries_in_England.KML","OGRGeoJSON")
R Studio 显示对象中有两个部分(正确的词?)。
polygons
,其中包含每个多边形的数据,例如对于第一个:
> ccg_boundaries@polygons[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
...
And data
,有两个变量(Name
and Description
)我希望包含 CCG 名称,但它是空的:
> ccg_boundaries@data
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>
是否可以选择 readOGR 或其他一些选项来提取它们并将其包含在对象中?