【发布时间】:2017-04-08 16:51:09
【问题描述】:
我正在尝试使用包rgdal 中的readOGR 函数将英格兰CCG 边界的KML 地图(Available here, 200Kb) 导入R。我的最终目标是通过根据一些相关值对 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")
阅读OGRGeoJSON层:
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
...
还有data,有两个变量(Name 和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>
是否有可能读取 OGR 或其他选项来提取它们并包含在对象中?
【问题讨论】: