LeafMap核心功能详解:打造交互式地理可视化应用
什么是LeafMap
LeafMap是一个基于Python的交互式地图可视化库,它整合了ipyleaflet和folium等流行地图库的功能,为地理空间数据分析和可视化提供了简洁高效的解决方案。LeafMap特别适合用于Jupyter Notebook环境,能够快速创建包含多种数据源的交互式地图。
环境准备与安装
要使用LeafMap,首先需要安装必要的依赖库:
pip install leafmap geopandas pycrs osmnx
安装完成后,在Python环境中导入leafmap即可开始使用:
import leafmap
基础地图创建
创建简单地图
最基本的交互式地图可以通过一行代码创建:
m = leafmap.Map(center=(40, -100), zoom=4)
m
center
参数设置地图初始中心点坐标zoom
参数设置初始缩放级别
自定义地图尺寸
可以灵活调整地图的显示尺寸:
m = leafmap.Map(height="400px", width="800px")
控制地图组件
LeafMap允许自定义地图上的各种控制组件:
m = leafmap.Map(
draw_control=False, # 禁用绘图工具
measure_control=False, # 禁用测量工具
fullscreen_control=False, # 禁用全屏按钮
attribution_control=True # 启用属性信息
)
地图数据源管理
添加底图
LeafMap内置了多种底图供选择:
m = leafmap.Map()
m.add_basemap("OpenTopoMap") # 添加OpenTopoMap底图
添加XYZ瓦片图层
可以添加自定义的XYZ瓦片服务:
m.add_tile_layer(
url="https://mt1.google.com/vt/lyrs=y&x={x}&y={y}&z={z}",
name="Google Satellite",
attribution="Google"
)
添加WMS服务
支持添加WMS(Web Map Service)图层:
naip_url = "https://www.mrlc.gov/geoserver/mrlc_display/NLCD_2019_Land_Cover_L48/wms?"
m.add_wms_layer(
url=naip_url,
layers="NLCD_2019_Land_Cover_L48",
name="NLCD 2019",
format="image/png"
)
添加COG图层
支持云优化GeoTIFF(COG)格式:
url = "https://example.com/data/Libya-2023-07-01.tif"
m.add_cog_layer(url, name="Fire (pre-event)")
添加STAC图层
支持空间时序资产目录(STAC)数据:
url = "https://example.com/data/S5_11055_6057_20070622.json"
m.add_stac_layer(url, bands=["B3", "B2", "B1"], name="False color")
矢量数据可视化
添加GeoJSON数据
in_geojson = "https://example.com/data/cable_geo.geojson"
m.add_geojson(in_geojson, layer_name="Cable lines")
可以自定义样式:
style = {
"stroke": True,
"color": "#0000ff",
"weight": 2,
"opacity": 1,
"fill": True,
"fillColor": "#0000ff",
"fillOpacity": 0.1
}
hover_style = {"fillOpacity": 0.7}
m.add_geojson(url, style=style, hover_style=hover_style)
添加Shapefile
in_shp = "https://example.com/data/countries.zip"
m.add_shp(in_shp, layer_name="Countries")
添加KML文件
in_kml = "https://example.com/data/us_states.kml"
m.add_kml(in_kml, layer_name="US States KML")
添加GeoDataFrame
import geopandas as gpd
gdf = gpd.read_file("https://example.com/data/cable_geo.geojson")
m.add_gdf(gdf, layer_name="Cable lines")
高级可视化功能
创建热力图
in_csv = "https://example.com/data/world_cities.csv"
m.add_heatmap(
in_csv,
latitude="latitude",
longitude="longitude",
value="pop_max",
name="Heat map",
radius=20
)
添加图例
m.add_legend(title="NLCD Land Cover Type", builtin_legend="NLCD")
添加颜色条
colors = ["006633", "E5FFCC", "662A00", "D8D8D8", "F5F5F5"]
vmin = 0
vmax = 4000
m.add_colorbar(colors=colors, vmin=vmin, vmax=vmax)
添加标题
m.add_title("World Population Heat Map", font_size="20px", align="center")
地图导出与分享
导出为HTML
m.to_html("mymap.html")
专业数据源集成
添加Planet卫星影像
os.environ["PLANET_API_KEY"] = "your-api-key"
m.add_planet_by_month(year=2020, month=8)
m.add_planet_by_quarter(year=2019, quarter=2)
结语
LeafMap为地理空间数据可视化提供了强大而灵活的工具集,从简单的底图展示到复杂的热力图分析,都能通过简洁的API实现。无论是科研分析、商业决策还是教育演示,LeafMap都能帮助用户快速创建专业级的交互式地图应用。通过本文介绍的核心功能,读者可以快速上手并探索LeafMap的更多可能性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考