【问题标题】:Add polygon to map R leaflet将多边形添加到地图 R 传单
【发布时间】:2014-05-08 15:30:56
【问题描述】:

我正在尝试使用 rCharts 包显示带有 R 的地图。我开始很简单,所以我想在我的地图中添加一个多边形。但我不知道如何。有任何想法吗? addPolygon 不起作用。

map <- Leaflet$new()


map$tileLayer(provider = 'Stamen.TonerLite')

map$setView(c(48.1, 16.7), zoom = 10)
map$addPolygon(
  c(48.99831, 49.08815, 49.08815, 48.99831, 48.99831),
  c(13.42666, 13.42666, 13.56383, 13.56358, 13.42666),
  layerId=c("1"),
  options=opts,
  defaultOptions=opts)
map

【问题讨论】:

  • “不起作用”怎么办?错误信息?在地图上看不到?它在代码中吗?你的意思是leafletR 包吗?或者不是来自 CRAN 的其他东西?在哪里?什么版本?
  • 我正在使用“rCharts”包,我收到以下错误消息: envRefInferField(x, what, getClass(class(x)), selfEnv) 中的错误:'addPolygon' 无效引用类“Leaflet”的字段或方法名称
  • 是什么让您认为“addPolygon”会做任何事情?你在什么地方读过吗?包里没有这种东西……
  • 你是对的!您知道我可以使用什么功能将多边形添加到我的地图吗?使用 LeafletR 包可能更容易做到这一点吗?我对 LeafletR 包的问题是,我不知道如何在制作后以闪亮的方式实现地图。

标签: r leaflet rcharts


【解决方案1】:

通过转换为 geoJSON 格式将多边形添加到地图中,如 rCharts 源代码中的示例 10:https://github.com/ramnathv/rCharts/blob/master/inst/libraries/leaflet/examples/example10.R

请注意 geoJSON 和 setView 中的 xy 坐标之间的 lat 和 long 有何不同。这段代码在靠近德国的捷克共和国给了我一个蓝色框。

xy = cbind(
  c(13.42666, 13.42666, 13.56383, 13.56358, 13.42666),
    c(48.99831, 49.08815, 49.08815, 48.99831, 48.99831)
    )

xyjson = RJSONIO::toJSON(xy)

jsonX = paste(
    '{"type":"FeatureCollection","features":[
        {"type":"Feature",
         "properties":{"region_id":1, "region_name":"My Region"},
         "geometry":{"type":"Polygon","coordinates": [ ',xyjson,' ]}}
       ]
      }')

polys = RJSONIO::fromJSON(jsonX)
map = Leaflet$new()
map$tileLayer(provider = 'Stamen.TonerLite')
map$setView(c(49.1,13.5), zoom = 8)
map$geoJson(polys)
map
# or print(map) from a script probably.

如果您有多个多边形,则需要创建{"type": "Feature", 的多个结构,并在"FeatureCollection""features" 的方括号内用逗号分隔它们。我重新缩进了一些东西以更好地显示结构。它已经到了像brew 包这样的模板系统可以帮助你的地步......

【讨论】:

  • 新手问题,但是我怎样才能绘制两个多边形? (我实际上要画数百个,也希望能够为多边形添加标签/弹出窗口/颜色)
  • 我怀疑要求包作者添加一些功能可能更容易,因为这是很常见的用法 - 但我已经编辑了一些以展示原则上如何做到这一点。
猜你喜欢
  • 2015-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 2017-08-26
  • 2020-02-17
  • 2017-11-07
  • 1970-01-01
相关资源
最近更新 更多