使用plotKML生成KML时自定义图层名称、标签大小及层级问题
plotKML多图层KML生成问题解决方案
针对你遇到的三个问题,对应解决方法如下:
- 自定义图层名称:
kml_layer()默认用空间对象类名作为图层名,显式指定layer.name参数即可覆盖默认值。 - 放大标签尺寸:通过
label.scale参数调整标签缩放比例,默认值为1,按需调大即可(建议设置为2~3即可满足显示需求)。 - 二级嵌套图层结构:使用
kml_folder()和kml_folder_close()配对创建嵌套文件夹层级,即可实现子图层单独勾选控制。
修改后可运行完整代码
library(dplyr) library(sp) library(plotKML) # 生成包含2个主组(A、B)且每组下含2个子组(C、D)的空间数据 df <- data.frame(x = rnorm(10, 493388, 50), y = rnorm(10, 5701483, 50)) %>% mutate(Group = sample(c("A", "B"), 10, replace = TRUE), Running = 1:n()) %>% group_by(Group) %>% mutate(Subgroup = sample(c("C", "D"), n(), replace = TRUE)) %>% ungroup() kml_open("try.kml") # 遍历主组生成一级文件夹 for(i in unique(df$Group)){ kml_folder(name = i) # 遍历子组生成二级文件夹 for(j in unique(df[df$Group == i, ]$Subgroup)){ sub_df <- df %>% filter(Group == i, Subgroup == j) coordinates(sub_df) <- ~x+y proj4string(sub_df) <- CRS("+proj=utm +zone=11 +ellps=WGS84") kml_folder(name = j) kml_layer( sub_df, layer.name = j, # 自定义图层名称 shape = "http://plotkml.r-forge.r-project.org/circle.png", size = 1, colour = Subgroup, colour_scale = c("yellow", "red"), labels = Running, label.scale = 2.5 # 标签放大倍数,可自行调整 ) kml_folder_close() } kml_folder_close() } kml_close("try.kml")
备注:如果不需要调用外部图标资源,可删除
shape参数,默认使用谷歌地球内置圆形图标,避免外部资源调用。
内容的提问来源于stack exchange,提问作者user2602640
相关产品推荐
相关产品推荐

