【问题标题】:Label kml features using `st_write`使用 `st_write` 标记 kml 特征
【发布时间】:2019-12-16 08:01:14
【问题描述】:

我想将sf 对象导出为.kml 文件,其中包含我感兴趣的每个功能的标签,以便我可以在 Google 地球中轻松查看数据。我知道您可以单击 Google 地球中的“信息”按钮,但对于数百个多边形,这并不理想。

例如,我想使用NAME 列标记下面的每个多边形要素。如何修改下面的 st_write 调用以标记 kml 多边形,以便它们出现在 Google 地球的侧边栏目录中?

library(sf)
library(dplyr)

# sf includes this dataset
county_polygons <- st_read(system.file("shape/nc.shp", package="sf")) %>% 
st_transform(4326)


st_write(county_polygons , "test.kml", driver = "kml")

这是一张图片,显示将其导入为 kml 文件时 Google 地球中缺少标签:

【问题讨论】:

  • 嗨,检查这个包:cran.r-project.org/web/packages/plotKML/plotKML.pdf。我之前成功地使用过它,放置标签并创建时间线。 KML 驱动程序无法标记多边形,您需要计算质心,然后将标签放置在点上
  • 谢谢@aldo_tapia,我暂时将其作为权宜之计,希望随着科幻小说的改进,会有一种一站式的解决方案......有什么要问的? :P
  • 我认为sf 专注于空间数据库管理,既不关注样式也不关注情节环境之外的标签。解决方案可以是从 KML 驱动程序添加 layer_options 声明。我尝试使用NAMENameField 没有成功

标签: r label kml sf


【解决方案1】:

考虑这个代码,使用一个不同的,虽然也是众所周知和喜爱的数据集 - 来自ns.shp 的北卡罗来纳县的多边形,附带 {sf} 包:

library(sf)
library(dplyr)


# dataset included with sf package
county_polygons <- st_read(system.file("shape/nc.shp", package="sf")) %>% 
  st_transform(4326) %>% # just because wgs84...
  select(Description = NAME) # see https://gdal.org/drivers/vector/kml.html#creation-options

st_write(county_polygons, "test.kml", driver = "kml", delete_dsn = TRUE)

它是围绕DescriptionField(可在Google Earth中点击)的KML导出功能构建的,默认为名为Description的sf列。

如果您想在侧边栏中显示该功能的名称,您可以将上面代码中的 Description 替换为 Name

【讨论】:

  • 这肯定比我的好,但我仍然很好奇如何让名字出现在侧边栏上!感谢您提供的带有多边形的更好示例 - 我将编辑我的问题以使用此数据集。
  • 对于侧边栏,在我的代码中将描述替换为名称:)
  • 是的!!!!现在,我不希望我昨天没有花时间寻找解决方法...
  • 很高兴为您服务! :)
  • 另外,我不知道你可以在 select 中重命名。头脑=吹!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-01
  • 2015-04-01
  • 2022-01-24
相关资源
最近更新 更多