【发布时间】:2017-01-27 17:05:25
【问题描述】:
导出 KML 以在 Google 地图中使用。这是要导出的代码(改编自here):
t_expkml_c <- function(obj, archivo,
col_nombre, col_desc, col_color,
mapa_colores = "mapa_colores_topaz",
mapa_nombre = "Mapa_TSE", mapa_desc = "Mapa Creado por PE de TSE") {
# - changes projection
if (proj4string(obj)!="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0") {
cat("Input SpatialPolygonsDataFrame ",obj," re-projected from ",
proj4string(obj)," to WGS84 longlat\n",sep="")
assign(obj,spTransform(obj,CRS(" +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0")))
} # check projection
# opens file
kmlFile <- file(archivo,
open = "w")
# goes through each polygon
# usa maptools::kmlPolygon
Xout <- sapply(slot(obj,
"polygons"),
function(x) {
maptools::kmlPolygon(x, # Object
name = as(obj, "data.frame")[slot(x, "ID"), col_nombre],
# name column
col = mapa_colores[as.numeric(as(obj, "data.frame")[slot(x, "ID"), col_color])],
# color column
lwd = 0.5, # stroke
border = NA, # borders
visibility = TRUE,
description = as(obj,"data.frame")[slot(x, "ID"), col_desc], #description (what I need to change)
)
}
)
# export polyon out
cat(kmlPolygon(kmlname=mapa_nombre,
kmldescription=mapa_desc)$header,
file = kmlFile, sep="\n")
# estilos
cat(unlist(Xout["style",]),
file = kmlFile, sep="\n")
# contenidos
cat(unlist(Xout["content",]),
file = kmlFile, sep="\n")
# footers
cat(kmlPolygon()$footer,
file = kmlFile, sep="\n")
close(kmlFile) # end
}
当我只有来自kmlmap@data data.frame 的一列(对象是类SpatialPolygonsDataFrame)时,这可以正常工作。但是,我想导出一个更大的数据表,以便它可以出现在 Google Maps 形状的描述中。
如果我想添加其他描述符,我将谷歌地图中的数据表更改如下:
但我想从 R 中的原始导出中复制此行为。我尝试更改 description 参数以添加向量列名甚至列名索引(即 c("Column2", "Column3") 或 1:2 ) 并且我尝试将 HTML 添加到描述列(显然,在不同列中的 Google 地图数据表中进行可视化时,这不起作用)。
我怎样才能做到这一点?
【问题讨论】:
-
稍微题外话:您如何使用地图上的表格来填充信息窗口? (我刚刚将
add_kml()函数推送到我的包的 dev version 中,这将允许您在 R 内的地图上绘制 KML) -
你的链接坏了
标签: r google-maps kml spatial