许多有价值的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工作者的基本功,但务必在法律和伦理框架内进行。