【发布时间】:2017-05-09 22:47:15
【问题描述】:
如何在 R 的小册子包中设置图层顺序,以使图块显示在填充了颜色的多边形之上?
这是我目前得到的:
require(leaflet)
require(acs)
require(tigris)
require(rgdal)
census.income.end.year = 2015
county = 17
nd.counties=acs.fetch(geography=geo.make(state="ND", county=county),
table.number="B01003", endyear = 2015)
tracts <- tigris::tracts(state = 'ND', county = county, cb=FALSE, year = 2015)
# create a geographic set to grab tabular data (acs)
geo<-geo.make(state=c("ND"),
county = county,
tract="*")
# add in median income
median.income <- acs.fetch(endyear = census.income.end.year,
geography = geo,
variable = c("B19013_001"))
income_df <- data.frame(paste0(as.character(median.income@geography$state),
str_pad(as.character(median.income@geography$county), 3, 'left', '0'),
str_pad(as.character(median.income@geography$tract), 5, 'left', '0')),
median.income@estimate)
rownames(income_df)<-1:nrow(income_df)
names(income_df)<-c("GEOID", "hhincome")
income_merged <- geo_join(tracts, income_df, "GEOID", "GEOID")
income_merged <- spTransform(income_merged, CRS("+init=epsg:4326"))
qpal <- colorQuantile("plasma", income_df$hhincome, n = 4)
leaflet() %>%
setView( -96.7898, 46.8772, zoom=11) %>%
addPolygons(data = income_merged,
fillColor = qpal(income_merged$hhincome),
fillOpacity = 1,
weight = 0.3) %>%
addProviderTiles(providers$Hydda.RoadsAndLabels)
最终,我希望使用自定义 MapBox 使用 addTiles(而不是上面代码中的 addProviderTiles)来执行此操作,但我无法弄清楚如何使此示例可重现...假设您需要一个键来访问自定义 MapBox 瓦片(顺便说一句,我创建了一个自定义 MapBox 瓦片,除了道路和标签外应该是透明的,所以底层的多边形应该“直通显示”。)
这是使用非 R 版本的传单在圆圈顶部添加图块的一种方法:http://jsfiddle.net/dcu9pz2w/,但我不知道如何在我的上下文中使其工作。我认为添加“窗格”可能是要走的路,但我在 R 传单中看不到该功能。另外,我探索了 z-index 值,但这似乎是一条死胡同。
非常感谢任何帮助!
【问题讨论】:
-
help(addTiles)可能会为您提供解决方案。试试addTiles(urlTemplate="http://{s}.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}.png", attribution='&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://cartodb.com/attributions">CartoDB</a>') -
@kitman0804:谢谢,但我正在寻找一种排序层的方法,而不仅仅是添加图块。
-
除非您找到提供矢量切片的切片提供商(按内容类型分隔 - 例如街道、水体、POI、标签等),或者您自己有这样的切片,否则您尝试做什么不可能。所有标准切片服务器都提供为每个缩放级别预先计算的光栅图像层(即 png 图像)。因此,您无法将单个组件与图像分开。
-
@TimSalabim:谢谢你的想法。但是,这里有一个例子似乎可以做到你所说的不可能:jsfiddle.net/dcu9pz2w。瓷砖提供者是 OpenStreetMaps,瓷砖似乎是 png 格式。这个例子的问题是我不知道如何在 R 的传单中进行这种分层工作。
-
当前的传单实现似乎不允许正确设置
zIndex或pane(平铺和图像放置在平铺窗格上,而多边形/线条/圆放在覆盖窗格上zIndex 较高)。我建议你在他们的github repository 上打开一个问题。如果我们也可以操纵图层顺序以在光栅图像上叠加多边形等,那将非常有用。