乌得勒支 开放 数据 搜索 系统
通过DCAT API搜索,探索和下载乌得勒支市的开放数据集的完整工具包。
🎯 概述
该项目提供访问乌得勒支开放数据API(https://open.utrecht.nl/api )通过:
- web界面 - 现代,易于使用的浏览器应用程序
- 命令行工具 自动化和脚本的Python脚本
- MCP服务器 AI助理模型上下文协议服务器
今后的发展
API目前包含DCAT格式的数据集。未来,Woo(开放政府法)文件和档案也将以类似的格式提供。
✨ 功能
web界面
- 🔍 搜索所有数据集
- 📊 网格布局中的可视化
- 📖 详细数据集信息
- ⬇️ 直接下载各种格式(CSV,JSON,XML等)
- 🔗 生活链接自动分析每个数据集的Woo相关性
- 📱 桌面和移动响应式设计
- 🎨 乌得勒支风格
命令行工具
- 搜索带过滤器的数据集
- 检索特定数据集的详细信息
- 查看可用格式
- 以表格形式输出,紧凑格式的JSON
- 导出为文件
MCP服务器
- 与AI助理(Claude等)集成
- 可编程访问所有数据集
- 乌得勒支开放数据数据集和Woo分析的6个工具
- 数据.政府.nl针对国家数据集和组织的4个工具
- 住房整合与国家 Woo 文件关系指数的链接
- 对住宅类别的数据集相关性进行智能分析
📦 安装
要求
- Python 3.6 或更高版本
- 现代网络浏览器(chrome、Firefox、Safari、edge)
已安装的依赖项
pip install -r requirements.txt在虚拟环境中:
python3 -m venv venv
source venv/bin/activate # Op Windows: venv\Scripts\activate
pip install -r requirements.txt🚀 使用
Web界面(推荐)
让我们来: Utrecht Open Data API 没有 CORS 标头。请使用附带的代理服务器。
- 启动去代理服务器:
python3 proxy_server.py你会看到:
╔═══════════════════════════════════════════════════════════════╗
║ Utrecht Open Data CORS Proxy Server ║
╚═══════════════════════════════════════════════════════════════╝
✓ Server draait op: http://localhost:8080- 打开浏览器操作:
http://localhost:8080- 使用界面:
- 通过搜索栏搜索数据集 - 点击数据集瓷砖查看详情 - 查看数据集描述和元数据 - 滚动到“下载”查看可用格式 - 有关相关文档,请参阅“Woo链接”部分 - 点击下载按钮检索数据
使用其它端口 :
python3 proxy_server.py -p 8888命令行工具
使脚本可执行 :
chmod +x utrecht_open_data.py搜索数据集
获取全部数据集 :
./utrecht_open_data.py search按搜索词搜索:
./utrecht_open_data.py search verkeer
./utrecht_open_data.py search "openbare ruimte"有选项:
./utrecht_open_data.py search verkeer -n 10 # Max 10 resultaten
./utrecht_open_data.py search verkeer -f json # JSON output
./utrecht_open_data.py search verkeer -o results.json # Opslaan数据集详细信息ophalen
./utrecht_open_data.py get afvalbakken
./utrecht_open_data.py get afvalbakken -f json查看可用格式
./utrecht_open_data.py formats afvalbakkenMCP服务器
MCP服务器使Utrecht Open Data API可供Claude等AI助理使用。
启动 MCP 服务器
python3 mcp_server.pyClaude 桌面配置
添加到您的 Claude 桌面配置 (~/Library/Application Support/Claude/claude_desktop_config.json 在 macOS 上:
{
"mcpServers": {
"utrecht-opendata": {
"command": "python3",
"args": ["/path/to/open-utrecht-datasets/mcp_server.py"]
}
}
}可用的MCP工具
乌得勒支开放数据工具(6):
search_datasets- 搜索乌得勒支数据集get_dataset- 获取乌得勒支数据集详情get_distributions- 获取可用的下载list_all_datasets- 显示所有乌得勒支数据集analyze_woo_connection- 分析住宅类别的相关性find_woo_related_datasets- 搜索与居住主题相关的数据集
Data.overheid.nl 工具 (4) - 新增功能:
dataoverheid_search- 搜索所有荷兰政府机构的数据集
- 支持组织和标签过滤器 - 10000+ 数据集可用
dataoverheid_get_dataset- 获取国家数据集详细信息
- 包括所有资源和元数据
dataoverheid_list_organizations政府组织名单
- CBS, 市, 省, 部委, 水务局
dataoverheid_get_organization- 具有数据集的组织细节
- 可选,包括组织的所有数据集
使用生活集成
MCP 服务器可以将数据集关联到 9 个 Woo 类别:
- 1a:协议
- 1b:年度计划和报告
- 1C:组织和工作方式
- 1d:可用性信息
- 1、补贴和任务
- 1f:投诉和异议
- 1g:建议Wob和Woo请求
- 2、生活决策
- 3:公共信息的描述
- 4:补充积极披露
在Claude Desktop中的示例:
Analyseer de Woo-relevantie van dataset 'parkeren'克劳德将 analyze_woo_connection 使用此工具生成报告:
- 提取的关键字
- 匹配主题(交通,流动性等)
- 相关住宿类别与说明
- 文档链接建议
📖 API详细信息
基本URL
https://open.utrecht.nl/api端点
GET /api/datasets数据集列表(DCAT格式)GET /api/datasets/{dataset}-数据集详细信息GET /api/datasets/{dataset}/distributions- 可用的下载
DCAT 格式
API 使用 DCAT (Data Catalog Vocabulary) 标准的命名空间属性:
dct:title- 标题dct:description- 描述dct:modified- 上次修改dct:publisher- 出版商dcat:keyword-关键词dcat:accessURL-下载URL
数据.政府.cn API
基本URL: https://data.overheid.nl/data/api/3/action
类型CKAN API v3(完全标准化)
主要终点:
package_search- 使用过滤器搜索数据集package_show- 获取数据集详细信息organization_list组织名单organization_show- 组织细节与数据集tag_list所有可用标签
例子:
# Zoek naar datasets over "klimaat"
GET /package_search?q=klimaat&rows=10
# Haal dataset op
GET /package_show?id=cbs-energie-kerncijfers
# Lijst organisaties
GET /organization_list?all_fields=true
# CBS datasets
GET /package_search?fq=organization:"cbs-opendata"&rows=20过滤器:
q- 搜索词( 全文)fq-过滤查询(bijv。organization:"gemeente-utrecht")rows结果数量(最大1000个)start- 页面偏移sort排序(例如。metadata_modified desc)
文档: https://docs.ckan.org/en/latest/api/
📁 项目结构
utrecht/
├── README.md # Deze documentatie
├── QUICKSTART.md # Snelstart gids
├── PROJECT_SUMMARY.md # Project overzicht
├── requirements.txt # Python dependencies
├── proxy_server.py # CORS proxy server (voor beide APIs!)
├── utrecht_open_data.py # Utrecht command-line tool
├── dataoverheid.py # Data.overheid.nl module (NIEUW!)
├── mcp_server.py # MCP server voor AI assistenten
├── woo_connector.py # Woo-integratie module
├── index.html # Web interface
├── app.js # JavaScript (backup/legacy)
└── style.css # CSS styling (backup/legacy)🔧 技术细节
web界面
- Vanilla JavaScript(无框架)
- CORS 代理以绕过浏览器限制
- 响应式网格布局
- 详细的模式对话框
- 定向下载链接
- 对每个数据集进行异步Woo分析
- 实时主题和类别识别
命令行工具
- Python 3.6+
requestsHTTP 调用库- 分页支持
- 多种输出格式
MCP服务器
- 模型上下文协议v1.0
- 流输出支持
- JSON-RPC 2.0
- Async/等待性能
- Woo集成关键字提取和主题映射
- 9 支持的生活类别
- 数据集-文档关系的智能匹配算法
浏览器兼容性
- Chrome 60+
- 火狐60+
- Safari 12+
- 边缘79+
💡 例子
示例 1:通过 Web 界面搜索和下载
- 打开http://localhost:8080
- 搜索“废物”
- 点击“垃圾桶”
- 查看数据集详情
- 滚动到“Woo链接”相关主题
- 滚动到“下载”部分
- Klik“下载CSV”
Woo链接显示:
- 已确定的主题(例如“环境”,“公共空间”,“管理”)
- 相关住宿类别(如适用)
- 链接到 Woo-index Utrecht
- 文档搜索条件
示例 2:将所有数据集导出为 JSON
./utrecht_open_data.py search -f json -o alle_datasets.json示例 3:数据集详细信息通过命令行
./utrecht_open_data.py get afvalbakken输出:
================================================================================
Dataset: Afvalbakken
================================================================================
ID: afvalbakken
Beschrijving:
Overzicht van bovengrondse afvalbakken in de gemeente Utrecht...
Keywords: afval, afvalbak
Gepubliceerd: 2021-11-24
================================================================================示例 4:查看可用的下载
./utrecht_open_data.py formats bushaltes输出:
================================================================================
Beschikbare formaten:
================================================================================
1. Formaat: CSV
URL: https://data.utrecht.nl/.../bushaltes.csv
Grootte: 0.45 MB
================================================================================示例5:Data.overheid.nl - 搜索CBS数据集
python3 dataoverheid.py然后交互使用,或直接通过Python:
from dataoverheid import DataOverheidConnector
connector = DataOverheidConnector()
# Zoek datasets
result = connector.search_datasets(query="klimaat", rows=5)
print(connector.format_search_results(result))
# Zoek datasets van specifieke organisatie
result = connector.search_datasets(
organization="gemeente-utrecht",
rows=10
)
# Haal dataset details op
dataset = connector.get_dataset("cbs-energie-kerncijfers")
print(connector.format_dataset_summary(dataset))
# Lijst organisaties
orgs = connector.list_organizations(all_fields=True)
for org in orgs[:10]:
print(f"{org['title']}: {org['package_count']} datasets")示例 6: 通过 Claude Desktop 中的 MCP 访问 Data.overheid.nl
问克劳德:
Zoek datasets over "duurzaamheid" op data.overheid.nlClaude 的回应(使用 dataoverheid_search 工具):
Gevonden: 248 datasets
1. Duurzaamheidsindicatoren gemeenten
ID: cbs-duurzaamheidsindicatoren-gemeenten
Organisatie: CBS OpenData
Het CBS publiceert verschillende indicatoren...
Formaten: CSV, JSON, XML
2. Energieverbruik woningen
ID: rijkswaterstaat-energieverbruik-woningen
...组织接送:
Toon top 10 overheidsorganisaties op data.overheid.nlClaude 使用 Dataauthority_list_organizations 工具:
🏛️ Nederlandse overheidsorganisaties op data.overheid.nl
1. CBS OpenData
ID: cbs-opendata
Datasets: 5815
2. CBS Microdata
ID: cbs-microdata
Datasets: 1313
3. Gemeente Amsterdam
ID: gemeente-amsterdam
Datasets: 137
...示例 7:通过 Claude Desktop 中的 MCP 进行 Woo 分析
问克劳德:
Analyseer de dataset 'parkeren' op Woo-relevantieClaude 的回应(使用 analyze_woo_connection 工具):
📊 WOO-ANALYSE VOOR DATASET
================================================================================
Dataset: Parkeertarieven Utrecht
ID: parkeren
🔍 GEËXTRAHEERDE TREFWOORDEN
────────────────────────────────────────────────────────────────────────────────
parkeren, tarieven, mobiliteit, verkeer
📌 GEMATCHTE ONDERWERPEN
────────────────────────────────────────────────────────────────────────────────
• verkeer
• mobiliteit
• openbare ruimte
✅ RELEVANTE WOO-CATEGORIEËN
────────────────────────────────────────────────────────────────────────────────
[1b] Jaarplannen en jaarverslagen
→ Kan onderdeel zijn van mobiliteitsplannen
[1c] Organisatie en werkwijze
→ Parkeerbeheer is onderdeel van gemeentelijke werkwijze
[3] Beschrijvingen van publieke informatie
→ Openbare tariefinformatie voor burgers
💡 AANBEVELINGEN
────────────────────────────────────────────────────────────────────────────────
Deze dataset bevat publieke tariefinformatie die relevant kan zijn voor:
- Mobiliteitsbeleid en parkeervisie (Woo 1b)
- Parkeerregelingen en handhavingsprotocollen (Woo 1c)
- Actieve openbaarmaking van tarieven (Woo 3)🐛 故障排除
Web 界面无法工作
问题 : 浏览器读取CORS错误数据
解决方案 : 启动去代理服务器:
python3 proxy_server.py确保你到 http://localhost:8080 去(不去) file://).
代理服务器启动niet
问题 : 端口 8080 已在使用中
解决方案 : 使用其他端口:
python3 proxy_server.py -p 8888或者检查哪个进程使用端口8080:
lsof -i :8080命令行工具:连接错误
问题 : 无法访问API
解决方案检查互联网连接和API状态:
curl https://open.utrecht.nl/api/datasets没有可用的下载
有些数据集没有分布。尝试下列保证下载的数据集:
afvalbakken-CSVbushaltes-CSVfietstellingen-CSV
Proxy 服务器不工作
- 检查端口 8080 是否已在使用中 :
lsof -i :8080 - 尝试其他端口 :
python3 proxy_server.py -p 8888 - 检查是否安装了 Python 3.6+:
python3 --version
MCP 服务器无法连接
问题 : Claude Desktop 看不到服务器
解决方案 :
- 检查 config 中的路径是否正确
- Herstart克劳德桌面
- 检查日志:
~/Library/Logs/Claude/mcp*.log
🔗 生活集成详情
它是如何工作的
Woo集成使用智能关键字提取和主题映射将数据集链接到Woo类别:
- 关键字提取从数据集标题,描述和关键字中提取相关术语
- 主题映射:匹配主题关键字(例如“停车” → “交通”, “流动性”)
- 类别匹配:将主题链接到相关的生活类别
- 报告生成生成包含建议的可读报告
主题映射
连接器支持 20+ 主题领域:
- 废物与环境
- 交通和移动
- 安全与维护
- 教育与青年
- 护理与福利
- 金融 & 经济
- 文化与娱乐
- 空间安排
- 还有更多我…
实施细节
Woo集成已在实施 woo_connector.py:
from woo_connector import WooConnector
connector = WooConnector()
report = connector.generate_woo_report(dataset)主要方法:
extract_keywords(dataset)从数据集中提取关键字map_to_topics(keywords)关键词匹配主题analyze_dataset(dataset)- 全面分析generate_woo_report(dataset)- 生成可读报告
🔮 今后的发展
Woo 文档和文件夹
乌得勒支市将通过相同的API以类似的DCAT格式提供Woo文档和文件的元数据。
预期的终点:
/api/woo/documents- Woo文档/api/woo/dossiers-吴档案
当前状态 :
- ✅ 与全国指数的住房整合运行
- ✅ MCP服务器遇到6个工具贝奇克巴尔
- 🔄 等待乌得勒支市的Woo文档API
- 📅 命令行工具Woo subcommando's(gepland)
- 📅 Web界面Woo部分(计划)
📊 API 统计
当前生产日期:
- 180 可用的数据集
- DCAT 格式
- 各种分发格式:CSV,JSON,XML,GeoJSON
📄 许可证
这是一个用于乌得勒支市开放数据的工具。
数据许可证: 查看https://open.utrecht.nl对于数据的条件。
工具许可证: 开源 - 自由使用和修改。
📞 联系 & 支持
关于数据的问题:
- 网站:https://www.utrecht.nl
- 电子邮件:opendata@utrecht.nl
- 电话: 14 030
有关此工具包的问题:
- GitHub 问题(如果存储库可用)
- 查看项目文档
🙏 感谢
数据由乌得勒支市通过开放数据门户提供。
______________________________________________________________________
创建于❤️ 开放 数据
