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

如何为Geopandas DataFrame添加自定义地图切片(如USGS地形切片)

使用USGS地形切片作为Geopandas底图的方法

你可以直接通过自定义瓦片URL模板在contextily中使用USGS的地形切片,具体步骤如下:

核心思路

USGS的ArcGIS瓦片服务遵循标准的XYZ瓦片格式,只需把示例链接中的具体瓦片坐标(7/46/26)替换为通用占位符{z}/{y}/{x},就能让contextily自动匹配对应缩放级别的瓦片。

完整代码示例

import geopandas as gpd
import contextily as cx

# 1. 将原始GeoDataFrame转换为Web墨卡托投影(EPSG:3857,与在线瓦片一致)
df_wm = df.to_crs(epsg=3857)

# 2. 绘制GeoDataFrame图层
ax = df_wm.plot(figsize=(10, 10), alpha=0.5, edgecolor='k')

# 3. 构造USGS地形瓦片的URL模板
usgs_topo_url = "https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/tile/{z}/{y}/{x}"

# 4. 添加USGS地形底图
cx.add_basemap(
    ax,
    source=usgs_topo_url,
    crs="EPSG:3857",  # 必须与GeoDataFrame的投影一致
    attribution="USGS Topographic Map"  # 添加版权说明,符合使用规范
)

# 5. 关闭坐标轴,优化显示
ax.set_axis_off()

关键注意事项

  • 投影匹配:所有在线瓦片地图几乎都使用Web墨卡托(EPSG:3857),必须确保你的GeoDataFrame先转换为该投影,否则底图会和矢量图层错位
  • URL占位符:{z}对应缩放级别,{x}是瓦片的列号,{y}是瓦片的行号,必须严格匹配USGS服务的URL结构(tile/{z}/{y}/{x})
  • 版权说明:添加attribution参数是良好的使用习惯,尊重地图数据的版权归属

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:57:58