Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在传单中应用多边形色带?_Javascript_Leaflet_Polygon_Cartography - Fatal编程技术网

Javascript 如何在传单中应用多边形色带?

Javascript 如何在传单中应用多边形色带?,javascript,leaflet,polygon,cartography,Javascript,Leaflet,Polygon,Cartography,该图显示了应用于QGIS中多边形形状文件的着色带(也称为shapeburst填充)。我一直在翻阅传单文档,试图找到类似的东西,但没有成功 有没有一种方法可以将类似于屏幕截图的色带应用于传单web地图中的多边形边界 我想你的问题是关于直接传单的解决方案,但当我与R合作时,我发现用我知道的工具回答这个问题很有趣。 想法很简单,我无法复制透明度渐变,但我认为我可以创建一个甜甜圈多边形,并在其上应用带有透明度的颜色: 创建具有负距离的缓冲区,以获得具有原始形状的较小多边形 使用缓冲区删除原始多边形的内

该图显示了应用于QGIS中多边形形状文件的着色带(也称为shapeburst填充)。我一直在翻阅传单文档,试图找到类似的东西,但没有成功

有没有一种方法可以将类似于屏幕截图的色带应用于传单web地图中的多边形边界


我想你的问题是关于直接传单的解决方案,但当我与R合作时,我发现用我知道的工具回答这个问题很有趣。
想法很简单,我无法复制透明度渐变,但我认为我可以创建一个甜甜圈多边形,并在其上应用带有透明度的颜色:

  • 创建具有负距离的缓冲区,以获得具有原始形状的较小多边形
  • 使用缓冲区删除原始多边形的内部
  • 将传单上的甜甜圈映射为透明的
您可以使用任何GIS软件生成甜甜圈多边形,但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")
#加载库
图书馆(光栅)
图书馆(sf)
图书馆(光栅)
图书馆(dplyr)
图书馆(GG2)
图书馆(单张)
#获取一些数据
fra.sp