带传单的R geojson功能显示

带传单的R geojson功能显示,r,leaflet,geojson,ggmap,R,Leaflet,Geojson,Ggmap,我有一个GeoJSON地图,可以在本地使用Rstudio IDE中的传单和打开街道地图平铺进行渲染,但是当在地图的各个区域中单击时,地图不会显示功能和属性(嵌入在jeojson文件中)。当在github上托管文件时,github会自动拾取文件并响应单击操作,如图所示。在R的帮助文档中查找信息,但找不到任何信息 下面是一个可复制的示例,它可以生成与您的图像相似的内容: library(mapview) library(geojsonio) ## write data to disk as Ge

我有一个GeoJSON地图,可以在本地使用Rstudio IDE中的传单和打开街道地图平铺进行渲染,但是当在地图的各个区域中单击时,地图不会显示功能和属性(嵌入在jeojson文件中)。当在github上托管文件时,github会自动拾取文件并响应单击操作,如图所示。在R的帮助文档中查找信息,但找不到任何信息


下面是一个可复制的示例,它可以生成与您的图像相似的内容:

library(mapview)
library(geojsonio)

## write data to disk as GeoJSON
geojson_write(breweries91, file = "breweries91.geojson")

## read back into R as Spatial* object
dat <- geojson_read("breweries91.geojson", what = "sp")

## plot using mapview
mapview(dat)

## or use leaflet with mapview::popupTable
leaflet() %>% 
  addProviderTiles("Hydda.Full")  %>% 
  addCircleMarkers(data = dat, popup = popupTable(dat))
库(mapview)
图书馆(geojsonio)
##将数据作为GeoJSON写入磁盘
geojson_write(breweries91,file=“breweries91.geojson”)
##作为空间*对象读回R
dat%
addProviderTiles(“Hydda.Full”)%%>%
addCircleMarkers(数据=dat,弹出式=popupTable(dat))

显然,写入GeoJSON部分只是为了显示正确的导入策略以获得兼容的数据结构。一般来说,在处理空间数据时,我建议使用包
sp
提供的R的适当空间类,现在还可以使用
sf
的矢量数据和
的光栅数据

1) 为geojson中的每个功能设置一个名为“popup”的属性。如果有,传单将绑定一个弹出窗口到该功能,内容等于“popup”属性的值

问题是如果您没有一个,并且大多数geojson没有“popup”属性,那么您必须在R端添加。i、 e.将geojson字符串转换为列表,并迭代地将弹出属性添加到每个功能,然后将其转换回geojson字符串

2) 将geojson转换为R中的sp对象,并使用add(多段线/多边形/标记)等弹出功能。 这是一个不错的选择,因为sp对象处理比geojson字符串或列表更优雅

演示(我没有弹出窗口,只有标签,但你知道的)

3) 中间的方法是使用addGeoJsonChoropleth(),它允许您指定任何属性或自定义JS代码来确定弹出内容。 e、 g


我最喜欢3,因为它允许我添加GeoJSON,而无需在R端进行修改或转换。唯一的问题是着色是在JS端完成的,它使用chroma.JS提供的托盘,而1和2允许您使用与其他add(Shape)一致的着色技术方法。

您是否有可能共享一些数据以使示例重现?我想您需要将
popup=…
添加到
addGeoJSON()
call.epo3-文件太大,无法在此处共享。但是你可以在网上搜索任何geojson文件(有很多),你可以用它来复制。TimSalabim-你能更具体一点吗?试试
addGeoJSON(topoData,popup=“test”)
。当您点击该功能时,这将创建一个弹出窗口。如果您想要类似于您在图像中看到的内容,您需要使用
x TimSalabim读取数据-因此,最初的问题是使用带有“geojson数据框”的传单渲染交互式地图。geojson文件中的嵌入数据应该在单击/或鼠标悬停时弹出,就像托管在github上一样。您给我的示例将geojson df转换为spatial df。传单无法读取空间df,出现以下错误“不知道如何从类SpatialPolygonsDataFrame的对象获取位置数据”。虽然我喜欢mapview示例,但这并不能解决传单+GeoJson在github上托管时为什么不能从RStudio IDE vs生成弹出窗口的问题。好的,更准确地说,传单中没有默认的方式为任何
add*
方法呈现弹出窗口。由用户为
popup=…
参数提供合适的字符串或html字符串。实际上,
addGeoJSON
函数甚至没有弹出参数。Github很可能有一个在后台运行的脚本,当意识到数据是geojson格式时,该脚本将以某种方式呈现,并以弹出窗口的形式提供数据。但这与R传单包装无关。假设这是一样的,这有点乐观。此外,您应该提供代码,突出显示如何将数据读入R,因为这实际上是关键的一点。为什么把它作为一个空间*DF来阅读是不合适的?您提到的错误是否发生在我上面提供的示例中?如果您使用多边形,则需要使用
addPolygons
而不是
addCircleMarkers
。此外,在读取到R之前,无需转换为geojson。您可以使用
rgdal::readOGR()以本机方式读取形状文件
.Bhaskar-感谢您的详细回复。您提供的三个选项非常有用,将提供如何添加弹出窗口。然而,我想要的是:geojson中嵌入了以下信息:{“type”:“Feature”,“properties”:{“OBJECTID”:1,“WARD”:8,“NAME”:“WARD 8”,“REP_NAME”:““WEB_URL”:“,”REP_PHONE“:”—是否有办法提取该信息并使用传单原生图形元素将其显示为弹出窗口(例如addMarker)?github似乎正是这样做的。不确定您是否从这个示例rpubs.com/bhaskarvk/fliple-weather上的geojson数据中提取并显示了内容。如果是这样,我希望您能分享这方面的代码。再次感谢。如果我读对了,您希望在HTML选项卡中显示功能的每个属性作为弹出窗口?这应该不难做到,但您必须自己构建HTML表,或者使用方法1或2使用R,或者使用方法3使用Javascript。天气示例使用API调用获得的data.frame中的数据。如果您可以共享geojson,我可以告诉您确切的方法,Thanksher是链接。Demo,包括所有3种方法:&代码
library(mapview)
library(geojsonio)

## write data to disk as GeoJSON
geojson_write(breweries91, file = "breweries91.geojson")

## read back into R as Spatial* object
dat <- geojson_read("breweries91.geojson", what = "sp")

## plot using mapview
mapview(dat)

## or use leaflet with mapview::popupTable
leaflet() %>% 
  addProviderTiles("Hydda.Full")  %>% 
  addCircleMarkers(data = dat, popup = popupTable(dat))