You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python在.tiff文件上叠加城市标签与县界

在TIFF插值地图上叠加城市标签与县界的实现方法

下面提供两种主流实现方案,分别适合可视化操作和代码自动化场景:

方案一:使用QGIS(可视化工具,无需编程)

  • 加载底图:打开QGIS,直接将你的TIFF插值地图拖拽到图层面板,它会自动作为底图显示。
  • 导入县界数据:获取SHP/GPKG格式的县界矢量数据(可从公开地理数据平台下载),通过「图层」→「添加图层」→「添加矢量图层」导入。在图层属性中调整样式:设置边框颜色(如白色)、线条粗细(0.8-1px),面填充设为透明,避免遮挡底图。
  • 添加城市标签:导入包含城市名称和点位的矢量数据(同样支持SHP/GPKG),打开图层属性的「标签」选项卡,选择存储城市名称的字段(如name),设置字体大小(8-12号)、颜色(黑色或白色,根据底图对比度调整),启用标签避让功能防止重叠。
  • 导出成果:调整好布局后,通过「项目」→「导出地图」保存为PNG、TIFF等格式。

方案二:使用Python代码(适合批量/自动化处理)

依赖rasterio、geopandas、matplotlib库,先通过pip install rasterio geopandas matplotlib安装。

示例代码:

import rasterio
from rasterio.plot import show
import geopandas as gpd
import matplotlib.pyplot as plt

# 读取TIFF底图
with rasterio.open("你的插值地图.tiff") as src:
    tiff_data = src.read(1)
    # 获取地理范围用于对齐矢量数据
    map_extent = [src.bounds.left, src.bounds.right, src.bounds.bottom, src.bounds.top]

# 加载县界和城市矢量数据
county_gdf = gpd.read_file("县界数据.shp")
city_gdf = gpd.read_file("城市点位数据.shp")

# 统一坐标系(若底图与矢量数据CRS不同,需转换)
# county_gdf = county_gdf.to_crs(src.crs)
# city_gdf = city_gdf.to_crs(src.crs)

# 创建绘图画布
fig, ax = plt.subplots(figsize=(12, 8))

# 绘制TIFF底图
show(tiff_data, extent=map_extent, ax=ax, cmap='viridis')

# 叠加县界
county_gdf.plot(ax=ax, edgecolor='white', linewidth=0.8, facecolor='none')

# 添加城市标签
for _, city in city_gdf.iterrows():
    ax.text(city.geometry.x, city.geometry.y, city['name'],
            fontsize=8, color='black', ha='center', va='bottom')

# 调整布局并保存
plt.tight_layout()
plt.savefig("叠加完成的地图.png", dpi=300)
plt.close()

关键注意事项

  • 坐标系统一:必须确保TIFF底图与矢量数据的空间参考(CRS)一致,否则会出现错位。QGIS中可通过「右键图层」→「导出」→「保存要素为」转换;Python中用to_crs方法处理。
  • 样式优化:根据底图颜色调整县界和标签的颜色、粗细,保证可读性;标签重叠时可缩小字体、启用避让功能(QGIS)或手动调整位置(Python)。

内容的提问来源于stack exchange,提问作者Lemming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:32:45