在r

时间:2017-02-08 11:00:31

标签: r leaflet polygons sp

我想使用传单帮助我在英国绘制热图多边形,但是传单()%>%addPolygons(...)给了我奇怪的输出,即使对于一个非常简单的情况。 / p>

我使用以下代码在传单中绘制一个简单的三角形,然后使用ggplot2。 ggplot2没有问题,但是传单有时只给我一条直线而不是三角形。 传单代码:

l <- leaflet()
  shapes <- unique(df$shape)
  for (shape in shapes) {
  d <- df[df$shape == shape, , drop = FALSE]
  l <- l %>% addPolygons(lat = d$lat, lng = d$lng,noClip=TRUE)
}
l

geom_polygon代码:     qplot(lng,lat,data = df,geom =&#34; polygon&#34;,group = shape)

如果我使用此输入,那么我从两个pacakges获得合理的输出:

df <- data.frame(lat = c(1, 2, 3), lng = c(2, 3, 1), shape = c("triangle", "triangle", "triangle"))

然而,即使使用简单的修改也会在传单中产生简单的水平线(但ggplot2中的正确三角形):

df <- data.frame(lat = c(100, 200, 300), lng = c(200, 300, 100), shape = c("triangle", "triangle", "triangle"))

听起来我觉得我错过了一个参数或者什么东西,但是我不知道我的生活是怎么回事。任何帮助表示赞赏。

谢谢, 汤姆

1 个答案:

答案 0 :(得分:2)

显然,即使没有基本地图,传单也只处理长/纬度。 从形状文件(使用Eastings&amp; Northings)开始,以下内容将读入shapefile,转换为longlat,然后使用小叶成功绘制多边形:

shapefile <- readOGR("filepath_here", "shapefile_here")
shapeData <- spTransform(shapefile, CRS("+proj=longlat +datum=WGS84 +no_defs"))

leaflet()  %>% 
  addPolygons(data=subset(shapeData, POSTAREA %in% c('SW')),weight=2)