GIS开发 | 空间分析 | 软硬件技术

Python网络爬虫获取GIS数据:实战技巧与法律边界

许多有价值的GIS数据分散在各类网站和服务中,合理使用爬虫技术可以高效获取这些公开数据。本文介绍几种常见的GIS数据爬取方法。

一、WFS服务数据批量获取

import requests
import json

base_url = "https://example.com/geoserver/wfs"
params = {
    "service": "WFS",
    "version": "2.0.0",
    "request": "GetFeature",
    "typeName": "workspace:layer",
    "outputFormat": "application/json",
    "count": 1000,
    "startIndex": 0
}

all_features = []
while True:
    resp = requests.get(base_url, params=params)
    data = resp.json()
    features = data.get("features", [])
    if not features:
        break
    all_features.extend(features)
    params["startIndex"] += params["count"]

二、网页表格数据提取

import pandas as pd

tables = pd.read_html("https://example.com/data-page")
df = tables[0]  # 第一张表
df.to_csv("data.csv", index=False)

三、地址批量地理编码

from geopy.geocoders import Nominatim

geolocator = Nominatim(user_agent="gis_tool")
for addr in addresses:
    location = geolocator.geocode(addr)
    if location:
        print(f"{addr}: {location.latitude}, {location.longitude}")

四、法律与伦理

  • 遵守网站robots.txt协议
  • 尊重数据版权与使用许可
  • 控制请求频率,避免对服务器造成压力
  • 仅获取公开发布的数据

数据获取能力是GIS工作者的基本功,但务必在法律和伦理框架内进行。