4

我想使用leafletR::leaflet. 我的数据来自SpatialPolygonsDataFrame,我想选择一个特定的列来绘制。

使用sp::spplot,这很容易,因为该参数zcol允许我指定要绘制的层/列:

library("maptools");library("sp");library("leafletR")
SP <- readShapePoly(system.file("shapes/sids.shp",  
                    package="maptools")[1],
                    proj4string=CRS("+proj=longlat +datum=WGS84 
                                     +no_defs +ellps=WGS84 
                                     +towgs84=0,0,0"))
spplot(SP, zcol="BIR79")

层/列的spplot

但是,使用leafletR,我不知道如何指定图层,它只是绘制普通地图边界:

SP4leaflet <- toGeoJSON(data=SP, dest=tempdir(), name="BIR79")
SPleaflet  <- leaflet(data=SP4leaflet, dest=tempdir(), 
                  title="Trying to plot BIR79",
                  base.map="osm", popup="*")
SPleaflet

传单地图仅绘制边界

关于如何选择要绘制的所需图层/列的任何想法leafletR

4

3 回答 3

3

为了完整起见,我想提一下,现在使用library(mapview).

library("maptools")
library("sp")
library("mapview")

SP <- readShapePoly(system.file("shapes/sids.shp",  
                package="maptools")[1],
                proj4string=CRS("+proj=longlat +datum=WGS84 
                                 +no_defs +ellps=WGS84 
                                 +towgs84=0,0,0"))

spplot(SP, zcol="BIR79")
mapview(SP, zcol="BIR79")

有关类似示例,另请参见http://edzer.github.io/sp/#interactive-maps-leaflet-mapview和http://environmentalinformatics-marburg.github.io/web-presentations/20150723_mapView.html了解更多功能mapview.

于 2016-03-30T10:42:51.463 回答
2

您的代码缺少样式定义。对于渐变样式,您必须使用创建样式对象styleGradpropin 参数styleGrad指定要可视化的属性。

library("maptools")
library("sp")
library("leafletR")

SP <- readShapePoly(system.file("shapes/sids.shp",  
                    package="maptools")[1],
                    proj4string=CRS("+proj=longlat +datum=WGS84 
                                     +no_defs +ellps=WGS84 
                                     +towgs84=0,0,0"))
SP4leaflet <- toGeoJSON(data=SP, dest=tempdir(), name="BIR79")
SPleaflet  <- leaflet(data=SP4leaflet, dest=tempdir(), 
                    title="Trying to plot BIR79",
                    base.map="osm", popup="*")

## missing style definition
brks <- seq(0, max(SP$BIR79), by=5000)
clrs <- colorRampPalette(c("blue","yellow", "red"))(7)
stl <- styleGrad(prop="BIR79", breaks=brks, style.val=clrs, 
                    out=1, leg="BIR79")
## end style definition

SPleaflet  <- leaflet(data=SP4leaflet, dest=tempdir(), 
                    title="Trying to plot BIR79", base.map="osm", 
                    style=stl, popup="*")
SPleaflet
于 2015-02-01T16:02:30.720 回答
1

也许这样的工作。请注意,我leaflet没有使用leafletR. 这里有一个关于这个包的很好的介绍:这里

library(leaflet)
library(maptools)
library(sp)
library(classInt)
library(classInt)

SP <- readShapePoly(system.file("shapes/sids.shp",  
                    package="maptools")[1],
                    proj4string=CRS("+proj=longlat +datum=WGS84 
                                     +no_defs +ellps=WGS84 
                                     +towgs84=0,0,0"))
spplot(SP, zcol="BIR79")


## 6 classes with fixed given breaks
nclass <- classIntervals(SP$BIR79, n=6)

## Color for each class
colcode = findColours(nclass, c("red", "blue"))

leaflet(SP) %>% addTiles() %>% addPolygons(data = SP, color = colcode)

在此处输入图像描述

于 2015-01-30T16:13:45.893 回答