华东师范大学校徽
华东师范大学社会发展学院标志
School of Social Development
多源数据分析与实践 · Week 5
1 / 30

第四章 重点解析

主讲人:刘贇喆 副教授 | 华东师范大学 社会发展学院
空间数据导论 · 空间数据读写 · 空间数据处理 · 空间数据可视化 · 空间制图要求与美化
目录
2 / 30
1.0 空间数据导论
3 / 30

SECTION01 / 05

1.0空间数据导论

Introduction to Spatial Data

1.0 空间数据导论
4 / 30

空间数据的两种形态

Vector Features & Raster Cells

社区 道路 设施 空间要素 · 教学示意
行 × 列一格,一个值像元(栅格像素)
1.0 空间数据导论
5 / 30

空间点数据

Spatial Point Data

VECTOR LAYER / POINT点图层

点击空白处添加点;点击已有点选中。方向键移动准星,按 Enter 放置。这里是 x 从 0 到 100、y 从 0 到 45 的教学坐标,不是真实经纬度。

SF FEATURE TABLE

点要素表

ID属性坐标对(x, y)
尚无记录—
1.0 空间数据导论
6 / 30

空间线数据

Spatial Line Data

VECTOR LAYER / LINE线图层

依次放置顶点;至少两点后点“完成线路”,或按 Shift+Enter。这里是 x 从 0 到 100、y 从 0 到 45 的教学坐标,不是真实经纬度。

SF FEATURE TABLE

线要素表

ID属性顶点概览
尚无记录—
1.0 空间数据导论
7 / 30

空间面数据

Spatial Polygon Data

VECTOR LAYER / POLYGON面图层

依次放置至少 3 个不同顶点,再点“闭合并保存”或按 Shift+Enter。方向键移动准星,按 Enter 放置。这里是 x 从 0 到 100、y 从 0 到 45 的教学坐标,不是真实经纬度。

SF FEATURE TABLE

面要素表

ID属性闭合顺序
尚无记录—
1.0 空间数据导论
8 / 30

sf:一个图层,一张要素表

One Layer, One Feature Table

library(sf)

三个独立的 sf 图层

社区 道路 01 02 03
st_read() → sf

一行一个要素,一列一个变量

非空间属性 · ATTRIBUTESID · 名称 · 类别 · 数值 · …
空间/几何属性geometrysfc 几何列:位置与形状
geometry 预览点击表格行查看坐标
1.0 空间数据导论
9 / 30

坐标参考系:位置与投影

Coordinate Reference Systems

地球表面与平面地图同一组位置 · 三种地图表达
地球表面点击球体查看经纬网
WGS 84 · EPSG:4326
P 伦敦 纽约 上海 京都 P 伦敦 纽约 上海 京都 P 伦敦 纽约 上海 京都
平面地图经纬度直绘 · 高纬也会变形
2.0 空间数据读写
10 / 30

SECTION02 / 05

2.0空间数据读写

Reading and Writing Spatial Data

2.0 空间数据读写
11 / 30

空间数据存储方式

How Spatial Data Are Stored

2.0 空间数据读写
12 / 30

三种格式读入,GeoJSON 写出

Read with sf · Export as GeoJSON

SOURCE FILES

选择一种输入格式

R / sf · 运行前加载 sf + tidyverse

读入 sf → 写出新 GeoJSON

# 01 · 读入 Shapefile
shp_path <- system.file("shape/nc.shp", package = "sf")
nc_sf <- shp_path %>% st_read(quiet = TRUE)

# 02 · 转为 WGS 84,写出 GeoJSON
out_geojson <- tempfile(fileext = ".geojson")
nc_sf %>%
  st_transform(4326) %>%
  st_write(
    dsn = out_geojson, driver = "GeoJSON",
    layer_options = "RFC7946=YES", quiet = TRUE)

# 03 · 重读并核对
nc_out <- out_geojson %>% st_read(quiet = TRUE)
c(rows = nrow(nc_out), epsg = st_crs(nc_out)$epsg)
2.0 空间数据读写
13 / 30

从 CSV 坐标表到 sf

From a CSV Table to Spatial Features

伦敦共享单车 · spData / © OpenStreetMap contributors

cycle_tbl

# A tibble: 12 × 5
osm_id <chr>name <chr>capacity <dbl>lon <dbl>lat <dbl>
TIBBLE COLUMN ROLES

识别属性与坐标列

CSV 中 lon / lat 是位置数值列;生成 sf 后才有 geometry。

OBSERVATION 01Windsor Terrace

X / lon −0.093388° · Y / lat 51.529125°

R · 已加载 sf + tidyverse

读取 CSV 数据

cycle_tbl <- read_csv("cycle_hire_osm_excerpt.csv",
                      col_types = cols(osm_id = col_character()))
2.0 空间数据读写
14 / 30

把指标接到边界上

Join a Data Table to Spatial Boundaries

边界 boundary_sf

geo_id名称geometry
A 区POLYGON
B 区POLYGON
C 区POLYGON
ABC

指标 attr_tbl

geo_id指标值
"01"8.4
"03"13.1

结果 joined_sf示意数据

点击上方代码,查看连接结果

3.0 空间数据处理
15 / 30

SECTION03 / 05

3.0空间数据处理

Spatial Data Processing

3.0 空间数据处理
16 / 30

从属性处理到空间处理

From Attributes to Spatial Relationships

ONE SF OBJECT

同一份 sf 数据

一行一个地理要素

geo_id名称人口geometry
01A 区2.4 万POLYGON
02B 区1.8 万POLYGON
03C 区3.1 万POLYGON
沿用第二章

sf:带 geometry 列的 data.frame
filter() 筛选要素 · mutate() 新增属性

GEOMETRY IN ACTION

让位置参与处理

由 geometry 判断要素之间的空间关系

01
判断空间关系

点落在哪个区域内?

st_within()
02
空间连接

按位置匹配,再把区域属性接给点

st_join()
03
几何运算

按设定距离生成缓冲范围

st_buffer()
3.0 空间数据处理
17 / 30

空间关系:按位置找到匹配

Spatial predicates · Which features match?

教学示意点是否位于面 A 内部?
面 A P 内部 Q 边界上

边界上的 Q 与内部的 P,判断结果不同。

3.0 空间数据处理
18 / 30

空间连接与叠置

Spatial Join & Overlay

点落入街区,获得街区属性

教学示意 · TWO SF LAYERS

站点落在哪个街区?

points_sfregions_sf
A居住区人口 24,000
B商业区人口 18,000
C混合区人口 8,000
区域外

P1位于 A 区 · 居住区 · 人口 24,000连接前核对两图层 CRS

POINT IN POLYGON

街区属性写入站点表

点击代码,查看面的属性如何进入点表。

3.0 空间数据处理
19 / 30

缓冲区分析:从点生成面

Buffer Analysis · From Point to Polygon

伦敦共享单车站点 · 中心相距约 670 m

两座站点,同一缓冲半径

Waterloo Embankment 交叠

500 m A站点 A:Waterloo Bridge, South Bank B站点 B:Embankment (Horse Guards)
站点:spData 历史 OSM 快照 · © OpenStreetMap contributors | 英国国家格网 EPSG:27700
3.0 空间数据处理
20 / 30

st_drop_geometry():只留下属性

Remove Geometry · Keep the Attributes

输入 · SF

points_joined

point_idregion_idarea_typepopulationgeometry
P1A居住区24000POINT
P2A居住区24000POINT
P3B商业区18000POINT
P4B商业区18000POINT
P5NANANAPOINT
运行函数

保留属性

只移除 geometry;原 sf 不变

输出 · 普通属性表

point_tbl

运行中间的函数,观察哪一列消失。

去掉几何后,继续处理属性

先运行 st_drop_geometry(),再选择一种属性运算。

4.0 空间数据可视化
21 / 30

SECTION04 / 05

4.0空间数据可视化

Visualizing Spatial Data

4.0 空间数据可视化
22 / 30

ggplot + sf:用 geom_sf() 绘图

The Same Grammar · A Spatial Geometry Layer

county_map.R

2025 · 3,108 个县级单元
已整理的县界 sfclass_43_counties
class_43_counties %>%
  ggplot()

ggplot() 接收 sf 数据;此时尚无几何图层。

DRAWN FROM sf

美国本土县级边界

01 / 03
class_43_counties %>% ggplot()

画布已建立,尚未加入绘图图层。

4.0 空间数据可视化
23 / 30

同一数据,三种分级断点

Classification Methods · Same Data, Different Breaks

2025 年美国本土 · 3,108 个县级单元人口密度(人/km²) → log10(1 + 密度) → 五级分色
分级方法各级县数 · 由浅到深四个内部断点 · 人/km²
Fisher–Jenks自然断点

寻找组内差异较小的分组

557 · 894 · 931 · 514 · 212

3.915.754.4269.6
Quantile分位数

每级县级单元数尽量接近

622 · 621 · 622 · 621 · 622

4.712.325.066.4
Equal interval对数等间距

在对数尺度划分等宽区间

808 · 1,626 · 548 · 117 · 9

7.060.5474.23,670.7
4.0 空间数据可视化
24 / 30

三种分级方法的地图对比

Three Classification Methods · One County Map

美国县级人口密度 · 2025

Fisher–Jenks 五级分层设色图:美国本土 48 州的 3,108 个县级单元按人口密度着色;附真北箭头和 0–800 km 投影距离比例尺 Fisher–Jenks 五级分层设色图:美国本土 48 州的 3,108 个县级单元按人口密度着色;附真北箭头和 0–800 km 投影距离比例尺
classInt::classIntervals(
  ..., style = "fisher"
)
密度区间(约)· 人/km²县级单元数
  1. 0.03–3.9557
  2. 3.9–15.7894
  3. 15.7–54.4931
  4. 54.4–269.6514
  5. 269.6–28,370212

分级变量:log10(1 + 人口密度)

5.0 空间制图要求与美化
25 / 30

SECTION05 / 05

5.0空间制图要求与美化

Cartographic Standards and Design

5.0 空间制图要求与美化
26 / 30

中国地图:先过三道检查

Basemap Source · Map Content · Intended Use

01 BASEMAP

底图有来源

优先在自然资源部标准地图服务系统选择适合图幅的底图。

图名审图号下载日期
仅凭第三方文件名,不能确认地图内容已审核。
02 EXTENT

内容按图幅核对

中国全图应表达完整范围,并核对图幅和比例尺下应表示的重要岛屿。

大陆海南岛台湾岛南海诸岛
南海附图须清楚。西藏周边等国界关键部位应对照国家标准画法核对;裁切或叠图不得改变、遮挡界线。
03 USE

按用途核对

课堂练习、直接使用标准图、公开新增专题图,分别记录来源与要求。

课堂练习 注明来源与限制直接用标准图 保留原图与审图号公开新图 核对审核要求
底图审图号 ≠ 新图审图号
三条信息分开写 底图 图名 · 审图号 专题数据 来源 · 年份 新图 用途 · 审核状态
5.0 空间制图要求与美化
27 / 30

用 R 制作中国专题地图

A County-Level Choropleth with a South China Sea Inset

Albers 等面积投影

2020 年中国县级常住人口暖色深色地图。主图聚焦大陆、海南岛与台湾岛,南海附图完整展示诸岛及十段线;主图右下海面标有当地真北箭头,两图各有局地比例尺。台湾省资料暂缺写于图下注释。 2020 年中国县级常住人口浅色地图。主图聚焦大陆、海南岛与台湾岛,南海附图完整展示诸岛及十段线;主图右下海面标有当地真北箭头,两图各有局地比例尺。台湾省资料暂缺写于图下注释。
5.0 空间制图要求与美化
28 / 30

四种设色方案的地图效果

Categorical · Diverging · Continuous · Classified

美国本土 48 州县级地图,按美国人口调查局四大普查区域以 Set2 四色填充,含经纬网、图例、比例尺与真北指示。 美国本土 48 州县级地图,按美国人口调查局四大普查区域以 Set2 四色填充,含经纬网、图例、比例尺与真北指示。
5.0 空间制图要求与美化
29 / 30

双变量专题地图

A + B → C · Bivariate Choropleth

A2025 · 人 / km²

人口密度

按县级数值分为四档

Q1 低Q4 高
B2020—2025 · %

人口变化率

同一批县级单元,另分四档

Q1 低Q4 高
A×B4 × 4
C美国县级双变量地图3,108 个县级单元
美国本土 48 州、3,108 个县级单元的双变量专题地图。每县按 2025 年人口密度和 2020—2025 年人口变化率各自的四分位等级组合填色;图中含经纬网、局地比例尺和真北指示,右侧二维图例说明 16 种颜色。 美国本土 48 州、3,108 个县级单元的双变量专题地图。每县按 2025 年人口密度和 2020—2025 年人口变化率各自的四分位等级组合填色;图中含经纬网、局地比例尺和真北指示,右侧二维图例说明 16 种颜色。
READ THE COLOUR

一格颜色
读取两个等级

密度分位 ↑

Q4Q3Q2Q1
Q1Q2Q3Q4

变化率分位 →

多源数据分析与实践 · Week 5
30 / 30

Thanks

第五周:第四章 重点解析

主讲人:刘贇喆 副教授 | 华东师范大学 社会发展学院
滚轮 / 方向键 / 空格切换