如何用Tigris R包获取所有学区并绘制无空白地图?
解决方案
要通过Tigris包获取并显示所有类型的学区(unified、elementary、secondary),只需将三种类型的学区数据合并即可,无需依赖外部资源。以下是具体步骤和修正后的代码:
1. 修正语法错误
你提供的代码中第一行school_districts调用多了一个右括号,这会导致运行报错,需先修正该问题。
2. 获取并合并所有类型的学区数据
分别获取三种类型的学区Shapefile,再通过dplyr::bind_rows将它们合并为一个完整的sf对象:
library(tigris) library(sf) library(ggplot2) library(dplyr) # 分别获取三种类型的加州学区数据 ca_unified <- school_districts(cb = TRUE, state = "CA", type = "unified") ca_elementary <- school_districts(cb = TRUE, state = "CA", type = "elementary") ca_secondary <- school_districts(cb = TRUE, state = "CA", type = "secondary") # 合并三个学区数据集 ca_all_districts <- bind_rows(ca_unified, ca_elementary, ca_secondary) # 绘制完整的学区地图 ggplot(ca_all_districts) + geom_sf() + labs(title = "加利福尼亚州所有类型学区地图")
关键说明
- Tigris的
school_districts函数支持type参数传入"unified"、"elementary"、"secondary"三种类型,分别对应统一学区、小学学区和中学学区。 - 合并后的数据会包含所有类型的学区边界,确保地图没有空白区域。
- 如果合并时遇到字段不匹配的问题,可以先通过
select()统一保留核心字段(比如GEOID、NAME、geometry)后再执行合并操作。
内容的提问来源于stack exchange,提问作者user3710004
相关产品推荐
相关产品推荐

