我有一个数据帧,每行包含8个唯一的lat长坐标对,我想绘制 . 如何将每对lat long传递给Leaflet中的addPolygons函数以逐行绘制数据?
一旦在行的末尾,该函数应该“停止”,然后在下一行再次“启动” . 我想要“停止”这个功能的原因是为了防止从第N行的多边形数据到第N行的多边形数据绘制多边形 . 目前,当我绘制它们时,我的多边形会发生这种情况,它正在绘制一个多边形到下一个不希望的网站 .
下面是我用来生成@HubertL礼貌的代码
m <- as.matrix(t(siteCoor), byrow=T)
dim(m) <- c(2,length(m)/2)
map <- leaflet() %>% addTiles() %>%
addPolygons(lng=m[1,],lat=m[2,])
示例数据位于dput()格式的下方和link处
> head(siteCoor, n = 12L)
Longitude Latitude 1 2 3 4 5 6 7 8 9 10 11 12 13
1 -8.609117 52.69373 -8.609505 52.71620 -8.602948 52.71588 -8.596586 52.71487 -8.590621 52.71319 -8.585241 52.71089 -8.580617 52.70805 -8.576895
2 -8.609117 52.69373 -8.590303 52.67439 -8.596234 52.67268 -8.602573 52.67162 -8.609117 52.67127 -8.615662 52.67162 -8.622000 52.67268 -8.627931
3 -8.609117 52.69373 -8.644000 52.70119 -8.641276 52.70483 -8.637535 52.70811 -8.632894 52.71094 -8.627501 52.71323 -8.621527 52.71490 -8.615159
4 -8.609117 52.69373 -8.609458 52.71350 -8.603688 52.71323 -8.598090 52.71233 -8.592841 52.71085 -8.588107 52.70883 -8.584038 52.70633 -8.580762
5 -8.609117 52.69373 -8.592560 52.67671 -8.597780 52.67520 -8.603358 52.67428 -8.609117 52.67396 -8.614877 52.67428 -8.620454 52.67520 -8.625674
6 -8.609117 52.69373 -8.639813 52.70030 -8.637416 52.70349 -8.634123 52.70639 -8.630040 52.70888 -8.625294 52.71089 -8.620037 52.71236 -8.614434
7 -8.609117 52.69373 -8.609411 52.71081 -8.604429 52.71057 -8.599594 52.70980 -8.595061 52.70852 -8.590973 52.70677 -8.587459 52.70461 -8.584630
8 -8.609117 52.69373 -8.594817 52.67904 -8.599325 52.67773 -8.604143 52.67693 -8.609117 52.67666 -8.614092 52.67693 -8.618909 52.67773 -8.623417
9 -8.609117 52.69373 -8.635627 52.69940 -8.633556 52.70216 -8.630713 52.70466 -8.627186 52.70681 -8.623088 52.70855 -8.618547 52.70982 -8.613709
10 -8.609117 52.69373 -8.611750 52.72064 -8.603143 52.72045 -8.594761 52.71924 -8.586920 52.71708 -8.579916 52.71403 -8.574012 52.71023 -8.569431
11 -8.609117 52.69373 -8.584672 52.67124 -8.592290 52.66879 -8.600542 52.66728 -8.609117 52.66677 -8.617692 52.66728 -8.625944 52.66879 -8.633562
12 -8.609117 52.69373 -8.651647 52.70143 -8.648402 52.70627 -8.643678 52.71064 -8.637652 52.71438 -8.630550 52.71734 -8.622640 52.71941 -8.614220
14 Longitude Latitude
1 52.70476 -8.609117 52.69373
2 52.67439 -8.609117 52.69373
3 52.71590 -8.609117 52.69373
4 52.70343 -8.609117 52.69373
5 52.67671 -8.609117 52.69373
6 52.71324 -8.609117 52.69373
7 52.70211 -8.609117 52.69373
8 52.67904 -8.609117 52.69373
9 52.71058 -8.609117 52.69373
10 52.70580 -8.609117 52.69373
11 52.67124 -8.609117 52.69373
12 52.72051 -8.609117 52.69373
2 回答
我认为最好使用
sp::SpatialPolygons()
.如果要完全分隔由一行组成的每个多边形,那么每行创建一个类
Polygons
可能是个好主意(leaflet()
将类Polygons
视为独立对象) .Another approach
当
c(lng, lat)
是c(NA, NA)
时,多边形在该点处断开 .您只想删除站点之间的多边形,只需使一个类
Polygons
具有一些类Polygon
. (但是如果你创建了类Polygons
par site,它在某些情况下有效) .[Addition 1: scale]
当您进行大小(比例)更改时,需要临时移动所有点以将标准点更改为
c(0,0)
.[Addition 2: color]
我认为使用
SpatialPolygonsDataFrame
是个好主意(这不是必需的,但这种方法可以将所有信息保存在一个对象中) .Hadley的purrr package为您提供了这类机器的机制(同时映射多个阵列),尽管之前的答案可能更适合您的确切应用 . 具体来说,您应该使用所述包中的
map2
函数 .