第三课:安装必备工具——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。
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: '© OpenStreetMap contributors'
}).addTo(map);
L.marker([39.9, 116.4]).addTo(map)
.bindPopup('北京天安门');
</script>
</body>
</html>
这段代码做了三件事:创建地图、加载底图、添加标记。你保存为html文件,用浏览器打开就能看到效果。
3.4 本章知识体系
下面这张图帮你理清这三样工具的关系:
这三样工具的关系很清晰:QGIS负责数据预处理和可视化验证,Python负责批量处理和自动化,Leaflet负责把最终成果发布到网页上。你想想看,一条完整的GIS数据流水线就这么搭起来了。
好,工具都装好了。下一节咱们就用QGIS加载第一份数据,看看地图到底长什么样。