专栏名称: GEE遥感训练营
专注GEE遥感算法,包括遥感影像下载、遥感影像制图、遥感GIS空间分析、遥感生态评价、遥感影像融合、遥感去干扰等多元遥感云计算
目录
相关文章推荐
完美Excel  ·  聊聊deepseek,这篇文章相当有深度 ·  昨天  
完美Excel  ·  让deepseek实现在Excel工作表中自 ... ·  2 天前  
完美Excel  ·  Excel又来新东西了!TRIMRANGE函 ... ·  4 天前  
完美Excel  ·  技巧:MODE函数判断列表数据是否唯一 ·  3 天前  
51好读  ›  专栏  ›  GEE遥感训练营

一个交互式地理空间数据可视化python工具包

GEE遥感训练营  · 公众号  ·  · 2025-03-09 22:20

正文

Leafmap是一个专为交互式地图和地理空间分析设计的Python包,旨在让用户能够在Jupyter环境中以最少的代码进行地理空间数据的分析和可视化。

Leafmap构建于多个开源包之上,包括:

  • Folium :基于Leaflet.js的交互式地图库
  • ipyleaflet :用于Jupyter环境的交互式地图小部件
  • WhiteboxTools和whiteboxgui :用于分析地理空间数据
  • ipywidgets :用于设计交互式图形用户界面(GUI)
  • GeoPandas :用于矢量数据操作
  • Rasterio :用于栅格数据处理

Leafmap允许用户无需编码即可将矢量和栅格数据加载到地图上。此外,用户可以利用强大的分析后端(即WhiteboxTools)直接在Leafmap用户界面中执行地理空间分析,而无需编写任何代码。WhiteboxTools库目前包含500多个用于高级地理空间分析的工具,如GIS分析、地貌分析、水文分析、LiDAR数据分析、数学和统计分析以及流网络分析。

安装方法

Leafmap的安装过程简单,建议使用干净的环境以避免依赖冲突。

前提条件:

  • • Python 3.7或更高版本
  • • Jupyter 环境(如Jupyter Notebook或Google Colab)
  • • Conda包管理器

安装步骤:

创建新Conda环境

conda create -n geo python=3.9
conda activate geo

安装Leafmap及依赖

conda install -c conda-forge mamba
mamba install -c conda-forge leafmap geopandas localtileserver

核心功能

1. 一键创建交互式地图

import leafmap

m = leafmap.Map()
m  # 在 Jupyter 中显示地图`

2. 多后端支持 (以kepler.gl为例)

import leafmap
import geopandas as gpd

# 创建一个 GeoDataFrame (示例数据)
data = {
    'City': ['New York''London''Tokyo'],
    'Latitude': [40.712851.507435.6895],
    'Longitude': [-74.0060, -0.1278139.6917]
}
gdf = gpd.GeoDataFrame(data, geometry=gpd.points_from_xy(data['Longitude'], data['Latitude']))

m = leafmap.Map(center=[00], zoom=2, backend='kepler')  # 指定使用 kepler.gl
m.add_gdf(gdf, layer_name="Cities")
m

3. 交互式底图切换

import leafmap

m = leafmap.Map()
m.add_basemap("Stamen.Terrain"#添加Stamen.Terrain底图
m  

4. 矢量和栅格数据支持 (以Shapefile和GeoTIFF为例)

import leafmap

m = leafmap.Map()

# 添加 Shapefile (你需要替换成你的 Shapefile 路径)
shapefile_path = "path/to/your/shapefile.shp"
m.add_shp(shapefile_path, layer_name="My Shapefile")

# 添加 GeoTIFF (你需要替换成你的 GeoTIFF 路径)
geotiff_path = "path/to/your/geotiff.tif"
m.add_raster(geotiff_path, layer_name="My Raster", colormap='terrain')
m

5. 自定义图例和颜色条

import leafmap
import matplotlib.pyplot as plt

m = leafmap.Map()
# 添加栅格数据 (使用示例数据, 或替换成你的栅格文件路径)
url = 'https://github.com/giswqs/data/raw/main/raster/srtm90.tif'
m.add_raster(url, layer_name='srtm', colormap='terrain' )

# 添加自定义颜色条, 自定义范围和标签
colors = ['#006633''#E5FFCC''#662A00''#D8D8D8''#F5F5F5']  # 颜色列表
labels = ['Low''Medium''High''Very High''Extremely High']
m.add_colorbar(colors=colors, labels=labels, vmin=0, vmax=4000#指定最小值和最大值.

m

6. 分屏和联动地图

import leafmap

# 创建两个地图
m1 = leafmap.Map(center=[40, -100], zoom=4, height="450px"#美国中心
m2 = leafmap.Map(center=[40, -100], zoom=4, height="450px")

# 添加不同的底图
m1.add_basemap("OpenStreetMap")
m2.add_basemap("Esri.WorldImagery")

#创建分割面板
leafmap.linked_maps([m1, m2]) #进行地图联动`

7. OpenStreetMap数据集成

import leafmap

m = leafmap.Map(center=[40.7128, -74.0060], zoom=14)  # New York City
#通过城市名称下载, 并添加到地图
m.add_osm_from_geocode("Manhattan, New York", layer_name="Manhattan")
m

8. 交互式矢量数据编辑

此功能需要在Jupyter中与地图进行交互操作, 以下代码仅为启动编辑功能的示例

import leafmap

m = leafmap.Map()
m.add_draw_control() #添加绘制工具, 允许用户在地图上进行交互式绘制
m

9. 地理空间数据搜索 (以 STAC 为例)

(此功能需要在Jupyter中使用搜索工具与地图进行交互操作)

import leafmap

m = leafmap.Map()
m.add_stac_layer(
   url="https://raw.githubusercontent.com/SpatialTemporalAssetCatalogs/stac-browser/main/examples/stac-load/catalog.json"

m






请到「今天看啥」查看全文