代码说话的施政书:从城市开放数据看可用性与改进空间

IT政策提案
代码说话的施政书:从城市开放数据看可用性与改进空间

大家好,我是おかむー!今天要用工程师的视角聊聊政府和自治体的开放数据,带点技术干货也带点吐槽~

  • 这篇文章用实际自治体开放数据目录做检视,侧重机器可读性、API 与格式标准化
  • 我会示范用 CKAN/API 拉数据的基本流程,并指出常见的 PDF/CSV、Schema 问题
  • 最后给出可落地的技术改进建议,让这些数据更好服务政策与市民

結論

总体来说,日本各级自治体已经把很多资料放出来,门户像东京(catalog.data.metro.tokyo.lg.jp)、横滨(data.city.yokohama.lg.jp)、埼玉、以及使用 CKAN 的大仙市都很积极,但真正能被工程化消费(API-first、schema 明确、稳定字段)的是少数。要点是:公开≠可用,工程上我们需要统一的机器可读契约(schema、时间戳、ライセンス)、稳定 API,以及例示用例(sample queries、コード片段)。

レポート本文

1) 现状观察:公开平台 vs 可用数据

これ見てくださいよ:很多自治体把数据放在公开目录里(例如东京都的数据目录、横滨市的 dataset 列表、CKAN 实作的大仙市),格式常见为 CSV、XLSX,甚至还是 PDF。PDF 的问题就不用多说了——工程师角度说,PDF 就是人看用的,不是机器吃的!要するに(要点是),把数据做成 CSV/JSON 并提供 schema 才是合格的。

  • 代表性实例:东京水道局把“明治32年以降的都営水道水源量”做成 CSV(可用!)
  • 对比:有些表格在门户只提供 XLSX 或没有说明字段含义,导致字段解释工作成本高

2) API 与平台生态

CKAN 的出现是好事(大仙市示例),它内建 API(/api/3/action/package_list、resource_show)可以 programmatic 访问。工程上推荐做法:

  • 提供 CKAN 或 OpenAPI 风格的 REST endpoint
  • 返回 JSON-LD / DCAT-metadata,方便 cataloging
  • 对大型表格提供分页/筛选参数,避免下载整个 CSV

简单示例:用 CKAN API 列出数据集并读取第一个 CSV 资源(Python)

import requests

import pandas as pd

CKAN_BASE = 'https://{your-ckan-domain}/api/3/action'

列出数据集

r = requests.get(f"{CKAN_BASE}/package_list")

datasets = r.json()['result']

获取某一数据集的 resource URL

pkg = requests.get(f"{CKAN_BASE}/package_show?id={datasets[0]}").json()['result']

for res in pkg['resources']:

if res['format'].lower() in ('csv','text/csv'):

df = pd.read_csv(res['url'])

print(df.head())

break

要点:把 resource 的 format、schema、更新频度、最晚更新时间(last_modified)放到 metadata,工程上很关键。

3) 数据质量与政策目标的比对

政策常有量化目标(例:某都市的公共施設予約利用率、下水道水質指標、介護施設数)。要检验目标达成率,需要:稳定的 time-series 数据、统一的地理単位(市区町村コード)、以及明确的度量单位。

举例:若要比较“介護サービス事業所数”的目标与実績,常见问题包括:

  • 数据更新不定期(更新日缺失)→ 无法正确算年增长率
  • 列名不一致(事業所数、事業者数、施設数)→ 需大量前处理

工程处理流程示范(伪代码):

  • 拉取 CSV → pandas
  • 强制时间列为 datetime,按年度汇总
  • 以市区町村コード join 人口表,算每万人事業所数
  • 与政策目标做差分并可视化
  • 4) 可行的改进建议(工程清单)

    下列建议既现实又能快速提升可用性:

    • 统一 metadata 模型:采 DCAT + JSON Schema(字段、类型、单位、缺失值说明)
    • 所有表格同时提供 CSV 与 JSON(或直接提供行式 API)
    • 对于静态大型表,提供分块下载(分页)和 ETag/If-Modified-Since 支持
    • 提供示例クエリ 与 简易 SDK(Python snippets)在 dataset 页面
    • 发布数据质量报告:缺失率、重复行、更新时间
    • 对涉及个人情報或敏感项的数据提供去識別化方案与合成数据样本,方便开发者测试

    5) 开放数据的高阶场景:政策闭环与自动化

    エンジニア的に言うと,若能把数据 pipeline 与政策目标连结,就能实现持续监测:

    • 将数据上报 → 自动跑质量检查 → 指标计算 → Dashboard 报警
    • 通过 API 给第三方开发者提供 sandbox 数据,激发创新(例如基于オープンデータ的预约最適化、IoT 结合河川监测)

    技术栈建议:Airflow(调度)、Great Expectations(数据质量)、CKAN/Dataverse(Catalog)、Superset/Metabase(可视化)。

    まとめ

    要点回顾:自治体把数据公开是基础,但要变成政策与服务的燃料,需要机器可读、稳定 API、明确 schema 与 sample code。工程上我们重视 metadata、时间戳、分页、以及对外示例。只要按工程约定去做,开放数据就能真正驱动政策改进和市民服务创新!

    おかむーから一言

    技术能把复杂的政策问题拆解成可验证的问题,这是我的信念。给自治体的建议是:把数据当成产品来管理,持续迭代,不是一次性上传就完事。我要把这些东西做成开源的工具链,帮更多城市把数据变成力量!