第三课:安装必备工具——QGIS、Python与Leaflet

好,咱们正式开始动手了。

这一课,说白了就是搭积木前的准备工作。你得把QGIS、Python环境、还有Leaflet这三样东西装好、跑通。我见过太多人卡在环境配置上,一卡就是半天,心态直接崩了。嗯,咱们今天就把这事一次性搞定。

3.1 QGIS安装与界面介绍

QGIS是什么?简单说,它是一个免费、开源、功能不输ArcGIS的桌面GIS软件。我个人习惯用它来处理矢量数据、配坐标系、做简单的空间分析。你想想看,一个能跑在Windows、Mac、Linux上的GIS工具,还不要钱,这性价比没谁了。

3.1.1 下载与安装

去QGIS官网(qgis.org)下载对应版本。我建议你选长期版(LTR),稳定,坑少。

  • Windows用户:下载exe安装包,一路下一步就行。注意安装路径不要有中文。
  • Mac用户:下载dmg文件,拖到Applications文件夹。
  • Linux用户:用包管理器安装,比如 sudo apt install qgis。
注意: 安装过程中如果提示缺少Visual C++运行库,去微软官网下载安装即可。我曾经在一台新电脑上折腾了半小时,最后发现就是缺了这个。

3.1.2 界面初识

装好后打开QGIS,你会看到这样一个界面:

  • 菜单栏:文件、编辑、视图……跟大多数软件一样。
  • 工具栏:常用的放大、缩小、平移、选择工具。
  • 图层面板:左侧,显示你加载的所有图层。
  • 地图画布:中间最大的区域,地图就显示在这里。
  • 状态栏:底部,显示坐标、比例尺、投影信息。

我第一次用QGIS时,最不习惯的是它的图层管理方式。ArcGIS里图层是叠在一起的,QGIS里每个图层独立,拖拽就能调整顺序。这个设计其实更灵活,你试试就知道了。

小技巧: 按 Ctrl + B 可以快速打开浏览器面板,直接拖拽本地shp文件到画布上加载。

3.2 Python环境准备(Anaconda)

Python是GIS自动化的灵魂。你想想看,手动处理100个图层和写个脚本批量处理,哪个更香?

我推荐用Anaconda来管理Python环境。为什么?因为它自带conda包管理器,装库方便,还能隔离环境,避免版本冲突。

3.2.1 安装Anaconda

去Anaconda官网下载对应系统的安装包。安装时注意:

  • 勾选「Add Anaconda to my PATH environment variable」——虽然安装程序会警告,但我建议你勾上,省事。
  • 安装路径不要有中文和空格。

装完后打开终端(Windows用户打开Anaconda Prompt),输入 conda --version,看到版本号就说明成功了。

3.2.2 创建虚拟环境

我习惯为每个项目创建独立的虚拟环境。这样不同项目用的库版本不会打架。

# 创建一个名为 gis_env 的环境,指定Python版本为3.9
conda create -n gis_env python=3.9

# 激活环境
conda activate gis_env

# 安装常用GIS库
conda install geopandas shapely fiona matplotlib
重点: 每次打开终端,记得先 conda activate gis_env,不然你装的库都在base环境里,容易乱。

我曾经帮一个同事排查问题,发现他装了三次geopandas都没成功,最后一看——他一直在base环境里装,但代码跑在另一个环境里。嗯,这种坑踩过一次就记住了。

3.3 Leaflet库简介

Leaflet是一个轻量级的JavaScript地图库。它不依赖任何框架,纯原生JS就能用。你想想看,一个只有40KB的库,能实现缩放、平移、图层叠加、弹窗交互……这简直是前端GIS的瑞士军刀。

3.3.1 为什么选Leaflet?

特性 Leaflet OpenLayers Mapbox GL
体积 ~40KB ~400KB ~200KB
学习曲线 平缓 陡峭 中等
插件生态 丰富 一般 丰富
移动端支持 优秀 良好 优秀

我个人习惯用Leaflet做快速原型和中小型项目。如果项目需要3D地形或大量动态数据,我才会考虑Mapbox GL。

3.3.2 快速上手

在HTML文件中引入Leaflet的CSS和JS文件:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
    <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
</head>
<body>
    <div id="map" style="height: 500px;"></div>
    <script>
        var map = L.map('map').setView([39.9, 116.4], 13);
        L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
            attribution: '&copy; OpenStreetMap contributors'
        }).addTo(map);
        L.marker([39.9, 116.4]).addTo(map)
            .bindPopup('北京天安门');
    </script>
</body>
</html>

这段代码做了三件事:创建地图、加载底图、添加标记。你保存为html文件,用浏览器打开就能看到效果。

提示: 如果底图加载慢,可以换成国内的天地图或高德地图的瓦片地址。具体URL我在后面的课程会讲。

3.4 本章知识体系

下面这张图帮你理清这三样工具的关系:

第三课:工具安装与准备 QGIS 桌面GIS工具 Python (Anaconda) 数据处理与自动化 Leaflet 前端地图库 核心功能 • 矢量/栅格数据加载 • 坐标系转换 • 空间分析 • 地图制图 核心库 • GeoPandas • Shapely • Fiona • Matplotlib 核心能力 • 地图渲染 • 标记/弹窗 • 图层控制 • 事件交互 QGIS 处理数据 → Python 批量自动化 → Leaflet 前端展示

这三样工具的关系很清晰:QGIS负责数据预处理和可视化验证,Python负责批量处理和自动化,Leaflet负责把最终成果发布到网页上。你想想看,一条完整的GIS数据流水线就这么搭起来了。

核心思路: 不要试图用一个工具解决所有问题。QGIS做不了的,交给Python;Python做不了的,交给Leaflet。各司其职,才是工程化的正确姿势。

好,工具都装好了。下一节咱们就用QGIS加载第一份数据,看看地图到底长什么样。


可可精品资料库