readOGR (rgdal) 无法从 XML 获取多边形名称

2024-04-12

我正在尝试导入英格兰 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 或其他一些选项来提取它们并将其包含在对象中?


好的,如果有人遇到同样的问题,这是我找到的解决方案。

该网站提供两种格式的地图:KML 和 SHP http://geoportal.statistics.gov.uk/datasets/1bc1e6a77cdd4b3a9a0458b64af1ade4_3。我选择了 KML,因为它被用在我正在关注的一个工作示例中。但这个特定的 KML 文件或其生成方式似乎存在问题。我尝试使用 Shapefile (SHP) 来代替该过程,效果非常好。

Shapefiles 可以通过相同的函数读入 R,但不需要指定图层:

ccg_boundaries <- ReadOGR("Clinical_Commissioning_Groups_April_2016_Ultra_Generalised_Clipped_Boundaries_in_England.SHP")

CCG 名称现已出现在ccg16nm多变的:

> head(ccg_boundaries@data)
  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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

readOGR (rgdal) 无法从 XML 获取多边形名称 的相关文章

随机推荐

  • Azure 文件存储 SMB 列出目录中的文件速度很慢

    我们有一个通过 Azure 文件列出文件夹中文件的应用程序 当我们使用C 方法时 Directory GetFiles account file core windows net xyz 当有 2000 个文件时 大约需要一分钟 如果我们使
  • MPMoviePlayerController 取消全屏模式在 iOS 6 中不起作用

    The MPMoviePlayerController在装有 iOS 5 的 iPad 上运行良好 最初视频通过添加MPMoviePlayerController到某个帧的自身子视图 按全屏按钮MPMoviePlayerController
  • 如何记录 REST API?

    如何记录 REST API 不仅仅是资源的文档 而且实际上是请求中发送的数据是什么以及响应中发回的数据是什么 知道某些东西期望发送 XML 并返回 XML 是不够有用的 或 JASN 管他呢 如何记录请求中发送的数据和响应中发回的数据 到目
  • Realm Swift:如何捕获 RLMException?

    我以为我做得正确 let realm try Realm do try realm write realm add myObject catch print something went wrong 但我仍然遇到崩溃而不是打印语句 我对避免
  • 我怎样才能有不同的提交来进行合并和冲突解决

    我将开发分支合并到我的功能分支中 这导致在解决我提交和推送的分支后出现合并冲突 现在的问题是合并和冲突解决更改位于一次提交中 很难找到解决冲突的方法 当存在合并冲突时 如何才能有两个单独的提交 一个用于合并 另一个用于冲突修复 如果你真的想
  • Angularjs 未捕获错误:[$injector:unpr]

    我正在用java开发购物网站 我正在使用angularjs 我对这些文件有问题 DashboardControll js use strict var app angular module DashboardApp app controll
  • MLlib MatrixFactorizationModel suggestProducts(user, num) 在某些用户上失败

    我训练了一个MatrixFactorizationModel https spark apache org docs 1 3 0 api java org apache spark mllib recommendation MatrixFa
  • 在 JPA 查询中转义冒号字符“:”

    我正在尝试通过使用 字符的 JPA 运行本机查询 特定实例在查询中使用 MySQL 用户变量 SELECT foo bar baz rownum if id foo rownum 1 1 as rownum id foo as rep id
  • 在 View AngularJS 中使用服务

    我对 angularJS 服务有疑问 我有简单的服务 angular module mainApp services factory AuthService function http var currentUser null var au
  • 删除过多的 try-catch 块

    我正在重构一个由其他开发人员编写的中型 WinForms 应用程序 几乎每个类的每个方法都被一个try catch堵塞 99 的情况下 这些 catch 块仅记录异常或清理资源并返回错误状态 我认为很明显这个应用程序缺乏适当的异常处理机制
  • 以逗号分隔的标签输入字段

    我正在开发一个网络应用程序 允许用户通过标签发布内容 但问题是 如果标签被comma并且文本字段值仍然相同 只是用户的视图会有所不同 一个例子是 YouTube 或 StackOverflow 目前我不需要它来检查数据库或任何东西 Than
  • Java 8 从 Map 中的匹配值中提取所有键

    我对 Java8 比较陌生 我有一个场景 我需要从 Map 中检索与对象匹配的所有键 想知道是否有一种方法可以获取所有键而无需再次从列表中迭代它们 Person java private String firstName private S
  • 如何在 Android 上使用 GraphQL 和 Retrofit?

    我是 GraphQL 的新手 但我已经使用 Retrofit 一段时间了 它易于使用且快速 GraphQL 在传递数据的方式方面与 REST API 有很大不同 关于在 Android 上使用 GraphQL 的教程确实不多 我只能找到这个
  • 使用 numpy.genfromtxt 填充缺失值

    尽管前面的问题提出了建议 9999 作为 numpy genfromtxt 的缺失值 https stackoverflow com questions 12274709 9999 as missing value with numpy g
  • 将默认值传递给表值参数 - SQL Server

    我在我们的一个存储过程中使用表值参数 这是我使用的语法 districtlist NumericList readonly NumericList是用户定义的表类型 但是 根据要求 我需要将默认值传递给该表值参数 districtlist
  • Boost 单元测试链接错误——abi 不匹配?

    我正在尝试使用 boost 构建一个单元测试 但链接器抱怨缺少函数 拿这个骨架代码 define BOOST TEST DYN LINK define BOOST TEST MAIN include
  • 无法使用如此大的 URL 生成 XML 文件

    我想使用下面的代码生成 XML 但是当我包含大 URL 时它会出错 甚至 cdata 也不起作用 xml new SimpleXMLElement
  • 数据框操作 - 捕获值的变化

    我目前有一个数据框 如下所示 它显示位置变化 添加 1 个单位 减去 1 个单位或不执行任何操作 0 我正在寻找带有净头寸的第二个数据框 该数据框可以是多头 1 或持平 0 假设不可能有净空头 1 头寸 因此逻辑是从 0 开始 当第一个 1
  • Android AudioTrack 缓冲问题

    好的 我有一个频率发生器 它使用 AudioTrack 将 PCM 数据发送到硬件 这是我使用的代码 private class playSoundTask extends AsyncTask
  • readOGR (rgdal) 无法从 XML 获取多边形名称

    我正在尝试导入英格兰 CCG 边界的 KML 地图 此处提供 200Kb http geoportal statistics gov uk datasets 1bc1e6a77cdd4b3a9a0458b64af1ade4 4 kml 进入