1. 数据采集入门:数据源类型、采集工具概览、数据伦理与合规

数据采集,说白了就是给地图「找食材」。没有数据,地图就是一张白纸。我做了这么多年 GIS 项目,最深的体会就是:数据质量决定了地图的上限,而采集方式决定了数据的下限。

这一章我们先把基础打牢。我会带你看看数据到底从哪来、用什么工具拿、以及哪些红线不能碰。

1.1 数据源类型:你的地图「食材」从哪来?

数据源大致分三类。我习惯把它们比作三种不同的「进货渠道」。

类型 典型例子 特点 我踩过的坑
API 高德地图 API、OpenStreetMap API、天气 API 结构化、实时、有频率限制 没看限流文档,半夜被封 IP
网页 政府公示页面、房产信息网站、百科 非结构化、需要解析、易变动 爬完发现页面改版,白干三天
传感器 GPS 轨迹、温度传感器、摄像头 连续流、噪声大、需预处理 GPS 漂移导致轨迹穿楼

API:最优雅的方式

API 是数据提供方主动给你开的「后门」。你发个请求,它返回 JSON 或 XML。干净、规范、省心。

举个例子,获取某个城市的实时交通状态:

import requests

url = "https://restapi.amap.com/v3/traffic/status/circle"
params = {
    "key": "你的",
    "location": "116.397428,39.90923",
    "radius": "1000"
}
response = requests.get(url, params=params)
data = response.json()
print(data)
我的习惯:每次调用 API 前,先看一眼官方文档的「请求频率限制」。很多平台免费额度很低,超了直接封号。我一般会在代码里加个 time.sleep(1),给自己留条后路。

网页爬虫:最灵活但也最脆弱

网页爬虫,说白了就是模拟人去看网页,然后把内容扒下来。适合那些没有 API 的数据源,比如某些政府公开数据。

但这里有个问题——网页结构说变就变。我曾经爬过一个房产网站,昨天还好好的,今天人家改版了,CSS 选择器全失效。嗯,从那以后我养成了一个习惯:每次爬之前先看一眼页面结构,确认没变再动手。

from bs4 import BeautifulSoup
import requests

url = "https://example.gov.cn/public/data"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# 找到所有表格行
rows = soup.select('table tr')
for row in rows:
    cells = row.find_all('td')
    if cells:
        print([cell.text.strip() for cell in cells])
注意:不是所有网页都允许爬取。一定要看 robots.txt 文件。比如 https://example.com/robots.txt,里面会写明哪些路径禁止爬取。我曾经因为没注意这个,被对方发了律师函。

传感器数据:最原始也最真实

传感器数据是直接从物理世界采集的。GPS 轨迹、温度、湿度、加速度……这些数据噪声大,但真实度最高。

我记得有一次做城市热力图项目,用的就是出租车 GPS 轨迹。数据量巨大,一天几千万条。但问题也明显——GPS 漂移。有些轨迹直接穿过了建筑物,看着像车在飞。后来我加了卡尔曼滤波,才把数据洗干净。

1.2 采集工具概览:用什么「家伙」干活?

工具选对了,事半功倍。我按使用场景给你列个清单。

工具 适用场景 学习成本 我的推荐理由
Python + Requests API 调用、简单爬虫 低 上手快,生态好
Scrapy 大规模爬虫 中 异步并发,效率高
Postman API 调试 低 可视化,方便测试
QGIS 传感器数据预览 中 免费,功能不输 ArcGIS
FME 多格式数据转换 高 企业级,格式支持最全

我的建议:新手先从 Python + Requests 开始。别一上来就上 Scrapy 或 FME,容易劝退。等你把 API 调通了,再考虑扩展。

1.3 数据伦理与合规:红线不能碰

这一节很重要,甚至比技术本身还重要。我见过太多人因为数据合规问题翻车。

三个基本原则

  • 知情同意:数据来源必须明确告知用户数据会被采集。比如 APP 的隐私协议。
  • 最小必要:只采集你需要的字段。别为了「以后可能有用」就乱存数据。
  • 脱敏处理:身份证号、手机号、精确位置等敏感信息,必须脱敏后才能使用。
我曾经犯过的错:有一次做项目,直接从公开 API 拉了用户位置数据,没做脱敏就丢进地图展示。结果被安全部门约谈。从那以后,我所有数据入库前都会过一遍脱敏脚本。坐标精度降到小数点后两位,用户 ID 用哈希处理。

法律红线速查

法规 核心要求 适用场景
《个人信息保护法》 处理个人信息需取得同意 用户位置、行为数据
《数据安全法》 重要数据出境需评估 地理信息、人口数据
《测绘法》 地图数据需有资质 高精度地图、遥感影像

你想想看,如果因为数据问题吃官司,技术再好也没用。所以从一开始就把合规意识刻在脑子里。

本章知识体系

下面这张图帮你把本章的核心逻辑串起来。数据源、工具、伦理,三者缺一不可。

数据采集知识体系 数据采集 数据源类型 API 网页爬虫 传感器 采集工具 Python Scrapy Postman 伦理与合规 知情同意 最小必要 脱敏处理 核心原则:数据源决定上限,工具决定效率,伦理决定生死 三者缺一不可,任何一环出问题,地图项目都可能翻车

这一章的内容就到这里。数据采集是地图构建的第一步,也是最重要的一步。把基础打牢,后面做地图才不慌。