gpt4 book ai didi

javascript - 如何在Leaflet中应用多边形色调带?

转载 作者:太空宇宙 更新时间:2023-11-04 15:51:05 26 4
gpt4 key购买 nike

该图像显示了应用于 QGIS 中的多边形形状文件的色调带(又名 shapeburst 填充)。我一直在翻阅传单文档,试图找到类似的内容,但没有成功。

是否有一种方法可以将类似于屏幕截图的色调带应用于 Leaflet web map 中的多边形边界?

enter image description here

最佳答案

我想你的问题是关于直接传单解决方案,但当我使用 R 时,我发现尝试用我知道的工具来回答它很有趣。
这个想法很简单,我无法重现透明度渐变,但我想我可以创建一个 donut 多边形并在其上应用具有透明度的颜色:

  • 创建一个负距离的缓冲区,以获得具有原始形状的较小多边形
  • 使用缓冲区去除原始多边形的内部
  • 以透明方式绘制传单上实现的 donut

您可以使用任何 GIS 软件生成 donut 多边形,但 R 的有趣之处在于您可以直接创建传单小部件。这是带有示例数据的代码:

# Load libraries
library(raster)
library(sf)
library(raster)
library(dplyr)
library(ggplot2)
library(leaflet)

# Get some data
fra.sp <- getData('GADM', country = 'FRA', level = 1)
fra.sf <- st_as_sf(fra.sp)

# Create buffer
fra.sf.buf <- st_cast(st_buffer(fra.sf, dist = -0.1))

# Create holes in original polygons
fra.sf.buf.comb <- fra.sf.buf %>% st_combine() %>% st_sf()
fra.sf.doug <- st_difference(fra.sf, fra.sf.buf.comb) %>% st_cast()

# Create leaflet widget and save on disk
## Color palette
factpal <- colorFactor(rep(unique(yarrr::piratepal("basel")),
length.out = nrow(fra.sf.doug)),
fra.sf.doug$NAME_1)
m <- leaflet() %>%
addProviderTiles(providers$Stamen.Toner) %>%
addPolygons(data = fra.sf.doug.simple, weight = 1, smoothFactor = 0.75,
opacity = 0, fillOpacity = 0.6,
color = "#000000",
fillColor = ~factpal(fra.sf.doug.simple$NAME_1),
highlightOptions = highlightOptions(color = "white", weight = 2,
bringToFront = TRUE)) %>%
addPolygons(data = fra.sf.simple, weight = 1, smoothFactor = 0.75,
opacity = 1.0, fillOpacity = 0,
color = "#000000")
## Save widget
htmlwidgets::saveWidget(m, file = "m.html")

Tinted bands with R and leaflet

当我发现输出很好时,我创建了一个 article on my blog with the different steps detailed .

关于javascript - 如何在Leaflet中应用多边形色调带?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43110181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com