用途
Geospatial Visualization Guide 是一个为研究出版服务的地理空间可视化技能,主要帮助研究者创建地图、等值线图(choropleth)和空间数据可视化图表,适用于学术论文与研究报告中的制图需求。
主要能力
该技能覆盖以下内容:
- 地理空间数据基础:常见空间数据格式与关键概念。
- 等值线图(choropleth)的构建与数据连接。
- 点地图与比例符号(proportional symbols)地图。
- 交互式网页地图。
- 制图最佳实践(投影、配色、地图要素、伦理)。
- 免费数据源清单。
常见空间数据格式
矢量数据(离散要素):
- Shapefile(.shp):旧标准,多文件
- GeoJSON(.geojson):适合网页,单文件
- GeoPackage(.gpkg):基于 SQLite 的现代格式,推荐使用
- KML(.kml):Google Earth 格式
栅格数据(连续表面):
- GeoTIFF(.tif):带地理参考的图像
- NetCDF(.nc):气候与大气数据
- HDF5(.h5):卫星与遥感数据
关键概念:
- CRS(坐标参考系统):3D 地球如何映射到 2D
- EPSG:4326(WGS84):纬度/经度(大多数 GPS 数据)
- EPSG:3857:Web Mercator(Google Maps、网页瓦片)
- 始终检查并记录你的 CRS
使用方式
资料提供了基于 Python 地理空间库的代码示例,可按需调用或改写。
用 GeoPandas 构建等值线图
import geopandas as gpd
import matplotlib.pyplot as plt
def create_choropleth(shapefile_path: str, data_column: str,
title: str, cmap: str = "YlOrRd") -> None:
"""
Create a choropleth map from a shapefile.
Args:
shapefile_path: Path to shapefile or GeoPackage
data_column: Column name to visualize
title: Map title
cmap: Matplotlib colormap name
"""
gdf = gpd.read_file(shapefile_path)
fig, ax = plt.subplots(1, 1, figsize=(12, 8))
gdf.plot(
column=data_column,
cmap=cmap,
linewidth=0.5,
edgecolor="0.5",
legend=True,
legend_kwds={
"label": data_column,
"orientation": "horizontal",
"shrink": 0.6,
"pad": 0.05
},
ax=ax
)
ax.set_title(title, fontsize=14, fontweight="bold")
ax.axis("off")
plt.tight_layout()
plt.savefig("choropleth.pdf", bbox_inches="tight", dpi=300)
将数据连接到几何要素
import pandas as pd
def join_data_to_map(gdf: gpd.GeoDataFrame,
data: pd.DataFrame,
geo_key: str,
data_key: str) -> gpd.GeoDataFrame:
"""
Join tabular data to geographic features.
Args:
gdf: GeoDataFrame with polygons (e.g., country boundaries)
data: DataFrame with your research data
geo_key: Column in gdf to join on (e.g., 'ISO_A3')
data_key: Column in data to join on (e.g., 'country_code')
"""
merged = gdf.merge(data, left_on=geo_key, right_on=data_key, how="left")
missing = merged[merged[data.columns[1]].isna()]
if len(missing) > 0:
print(f"Warning: {len(missing)} regions have no data (will appear blank)")
return merged
点地图与比例符号
映射研究站点或事件
def create_point_map(gdf_base: gpd.GeoDataFrame,
points: gpd.GeoDataFrame,
size_column: str = None,
color_column: str = None) -> None:
"""
Create a point map with proportional symbols.
Args:
gdf_base: Base map (country or region polygons)
points: GeoDataFrame with point geometries
size_column: Column to scale point sizes
color_column: Column to color points
"""
fig, ax = plt.subplots(figsize=(12, 8))
# Base map
gdf_base.plot(ax=ax, color="lightgray", edgecolor="white", linewidth=0.5)
# Points
sizes = points[size_column] * 2 if size_column else 30
colors = points[color_column] if color_column else "red"
points.plot(
ax=ax,
markersize=sizes,
color=colors,
alpha=0.6,
edgecolor="black",
linewidth=0.3
)
ax.axis("off")
plt.tight_layout()
plt.savefig("point_map.pdf", bbox_inches="tight", dpi=300)
使用 Folium 的交互式地图
import folium
def create_interactive_map(center: tuple = (20, 0),
zoom: int = 2) -> folium.Map:
"""
Create an interactive web map (useful for supplementary materials).
Args:
center: (latitude, longitude) center point
zoom: Initial zoom level
"""
m = folium.Map(location=center, zoom_start=zoom,
tiles="CartoDB positron")
# Add markers, choropleth layers, or heatmaps as needed
# folium.Marker([lat, lon], popup="Label").add_to(m)
return m
制图最佳实践
出版标准
-
投影选择:
- 全球地图:Robinson 或 Equal Earth(专题地图不要用 Mercator)
- 国家/区域:合适的局部投影
- Mercator 会扭曲面积——用于等值线图会产生误导
-
配色方案:
- 顺序型(Sequential):从低到高的数值(YlOrRd、Blues、Viridis)
- 发散型(Diverging):围绕中点的数值(RdBu、BrBG)
- 定性型(Qualitative):分类数据(Set2、Paired)
- 使用 colorbrewer2.org 获取感知均匀的调色板
- 测试色盲可访问性
-
必备地图要素:
- 标题
- 带单位的图例
- 比例尺
- 指北针(当方位非标准时)
- 数据来源署名
- CRS/投影信息
-
伦理考量:
- 争议边界:使用虚线或在图注中说明
- 数据缺口:明确显示“无数据”区域(不要留白)
- 隐私:对点数据做聚合,以保护个体位置
适用场景
- 学术论文、研究报告中的地图与等值线图制作。
- 将表格研究数据按地理键连接到行政区或国界几何要素。
- 展示研究站点、事件分布或带比例符号的点地图。
- 为补充材料创建交互式网页地图。
免费数据源
| 来源 | 数据 | 格式 |
|---|---|---|
| Natural Earth | 国家/区域边界、自然地物 | Shapefile、GeoJSON |
| GADM | 行政区边界(所有国家、所有层级) | GeoPackage、Shapefile |
| OpenStreetMap | 道路、建筑、土地利用 | PBF、Shapefile |
| WorldPop | 人口密度网格 | GeoTIFF |
| NASA SEDAC | 社会经济与环境数据 | GeoTIFF、Shapefile |
| USGS Earth Explorer | 卫星影像、高程 | GeoTIFF |
限制
资料未说明该技能的运行环境、安装方式、依赖版本、是否需要额外配置、定价或授权方式;这些信息暂未提供。代码示例基于 GeoPandas、Matplotlib、Folium,实际使用需自行准备相应环境与依赖。