我正在构建一个闪亮的应用程序,其中包含交互式地图。 我主要使用
leaflet
来执行此操作。
我将新数据(统计数据等)添加到
map@data
的 df
部分的 SpatialPolygonsDataframe(map
是 SpatialPolygonDataframe)。
map <- readOGR("FilePath","map")
#merge the processed dataframe with the maps data
map@data = merge(map@data, stats, by= 'name',
all = TRUE)
名字 | 对象ID | ID_NUM | SHAPE_Leng | SHAPE_区域 | 统计1 | 统计2 |
---|---|---|---|---|---|---|
第一 | 1 | 3 | x1 | y1 | .90 | 32 |
第二个 | 2 | 4 | x2 | y2 | .85 | 33 |
R 包
Leaflet
不会将正确的数据应用到地图上的正确区域,除非我写:
map@data <- map@data[order(map@data$OBJECTID),]
需要在此列上按降序排序
OBJECTID
才能正确显示标签。
为什么对
map
进行不同的排序(主要是为了标记目的)会导致传单错误地标记形状? (这个问题是为了更好地理解这种类型的数据和封装)。
我见过的所有例子都没有这个问题。它们要么隐藏,要么没有在图例中按降序或升序对数据进行排序的代码。
这种排序也会影响图例。
如何按照我需要的方式对图例(显示我添加到
df
的数据)进行排序? (通过传单或map
通过dplyr)
您似乎正在使用旧的 {sp} 包工作流程。它在数据(在 @data 槽中)和几何之间没有像较新的 {sf} 包那样严格的配对。 {sp} 较旧,而且风险很大(正是由于这个原因) - 虽然它得到维护(主要是为了给现有工作流程的用户提供迁移时间),但它并未积极开发 - 操作发生在 {sf} 中。如果您的软件包是当前版本,那么当您加载 {rgdal} (
rgdal::readOGR()
所在的位置)时,您应该会看到一个很大的弃用警告。
我建议您将工作流程更新为 {sf},它在几何图形(在特殊列表列中)和常规表格数据(其他列)之间具有更紧密的配对。