2017-10-31 25 views
0

いくつかの重なり合うポリゴンにラベルを付ける必要がありますが、最大のもののラベルだけが表示されます。しかし、いくつかのシミュレートされたデータでテストしたところ、ラベルは正しく表示されていました。私は2つのケースのデータを慎重に比較しましたが、違いが問題を引き起こしているのを見つけることはできません。それが正常に動作していますRのリーフレットに重なり合うポリゴンのラベル

library(leaflet) 
library(sp) 

poly_a <- data.frame(lng = c(0, 0.5, 2, 3), 
        lat = c(0, 4, 4, 0)) 
poly_b <- data.frame(lng = c(1, 1.5, 1.8), 
        lat = c(2, 3, 2)) 
pgons = list(
    Polygons(list(Polygon(poly_a)), ID="1"), 
    Polygons(list(Polygon(poly_b)), ID="2") 
) 
poly_dat <- data.frame(name = as.factor(c("a", "b"))) 
rownames(poly_dat) <- c("1", "2") 

spgons = SpatialPolygons(pgons) 
spgonsdf = SpatialPolygonsDataFrame(spgons, poly_dat, TRUE) 

leaflet() %>% addPolygons(data = spgonsdf, label = ~name 
          #   , 
          #   highlightOptions = highlightOptions(
          # color = "red", weight = 2,bringToFront = TRUE) 
) 

enter image description here

enter image description here

それは私のデータでは動作しませんでしたしかし、ここで

シミュレート重なり合うポリゴンの最小の例です。

https://github.com/rstudio/leaflet/files/1430888/Gabs.zip

あなたはthis siteにzipファイルをドラッグして、それが正しくのみ最大のポリゴンラベルが示されている

enter image description here enter image description here

library(rgdal) 

# download Gabs.zip and extract files to Gabs folder 
hr_shape_gabs <- readOGR(dsn = 'Gabs', layer = 'Gabs - OU anisotropic') 
hr_shape_gabs_pro <- spTransform(hr_shape_gabs, 
           CRS("+proj=longlat +datum=WGS84 +no_defs")) 
leaflet(hr_shape_gabs_pro) %>% 
    addTiles() %>% 
    addPolygons(weight = 1, label = ~name) 

のラベルが付いています見にiボタンを使用することができます。

enter image description here

enter image description here

両方の場合のデータはSpatialPolygonsDataFrame、データスロットは適切なポリゴン名を有しています。

答えて

1

hr_shape_gabsのポリゴンの順番を変更します。位置3のポリゴンは、小さい方のポリゴンにする必要があります。

library(leaflet) 
library(sp) 
library(rgdal) 
hr_shape_gabs <- readOGR(dsn = 'Gabs - OU anisotropic.shp', 
         layer = 'Gabs - OU anisotropic') 

# Change the position of the smaller and wider polygons 
# Position 1 = wider polygon, position 3 = smaller polygon 
pol3 <- [email protected][[3]] 
[email protected][[3]] <- [email protected][[1]] 
[email protected][[1]] <- pol3 
hr_shape_gabs$name <- rev(hr_shape_gabs$name) 

hr_shape_gabs_pro <- spTransform(hr_shape_gabs, 
           CRS("+proj=longlat +datum=WGS84 +no_defs")) 
leaflet() %>% 
    addTiles() %>% 
    addPolygons(data= hr_shape_gabs_pro, weight = 1, label = ~name) 

enter image description here

+0

私は、ポリゴンの順序について考えと 'plotOrder'を変更しようとしましたが、それは効果がありませんでした。この場合、 'plotOrder'を使うべきではありませんか? しかし、ポリゴンを切り替えると、ラベルが正しく配置されません。ラベルはポリゴンIDと一致していないような順序で配置されているように見えるので、 'data'行の順序も変更する必要があります。 – dracodoc

+0

@dracodocそうです。申し訳ありませんが、私はラベルの順序を変更しませんでした。私は 'hr_shape_gabs $ name < - rev(hr_shape_gabs $ name)'を追加して答えを更新しました。今注文はOKです。 'plotOrder'はポリゴンのプロット順に影響しないようです。 –

関連する問題