OCD ID を更新するプロセス

はじめに

Open Civic Data Identifier(OCD ID)は、行政区画を定義する共通の ID 形式です。CDF フィードを作成するには、これらの ID を GpUnit エンティティの一部として指定する必要があります。このドキュメントは、OCD ID を opencivicdata GitHub リポジトリに追加するためのガイダンスとベスト プラクティスを提供することを目的としています。

Open Civic Data GitHub リポジトリで OCD ID を更新する方法

前提条件

  1. オープンソース プロジェクトに貢献する方法を理解する

準備:

  1. ワークステーションを準備します。

    OCD ID リポジトリからパッケージをフォークしてクローンを作成します。

  2. リポジトリの内容を確認します。

    OCD ID リポジトリでは、サポートされている各国がディレクトリと CSV ファイルで表され、同じ名前(country-<2 文字の国コード>)で名前が共有されています(例: ドイツの場合は identifiers/country-deidentifiers/country-de.csv)。

    変更する国のディレクトリ内に、最上位の国別 CSV ファイルの一部を含む CSV ファイル()があります。これが、変更する必要のあるファイルです。

  3. 新しい OCD ID の作成方法:

    構成とソース

    OCD ID の構造については、オープンな市民データ ドキュメントをご覧ください。通常、有効な OCD ID の形式は ocd-division/country:<country_code>(/<type>:<type_id>) です。

    ISO や FIPS や NUTS などの他の標準(ISO が使用できない場合)の標準識別子が識別子の命名に使用されます。

    一般ポリシー

    一般的なポリシーは次のとおりです。

    階層

    OCD ID の階層は、OCD ID の境界を管理する管理レベルで決める必要がありますが、必ずしも OCD ID の包含関係とは限りません。

    • 例: 米国では、下院選挙区は下院の選挙に使用されますが、下院選挙区の境界は米国によって決定されます。下院選挙区は州から遠く離れています ocd-division/country:us/state:pa/cd:2
    • 例: マリーズビルはペンシルベニア州の自治体で、ウェストモアランド郡に含まれています。ただし、町は州によって管理されているため、OCD ID は州から切り離されます。 ocd-division/country:us/state:pa/place:murrysville 曖昧さ回避が必要な場合は、追加の階層が使用されることがあります。
    • 例: ペンシルベニア州には「フランクリン タウンシップ」という名前の場所が 16 件あります。通常、これらはそれぞれ OCD ID ocd-division/country:us/state:pa/place:franklin を持ちますが、あいまいです。この場合は、郡を OCD ID に追加して、それぞれが一意の OCD ID を取得します。例: ocd-division/country:us/state:pa/county:adams/place:franklin
    種類
    • 強迫性障害 ID の種類は通常、国に固有のものです。

    • 一部の OCD ID は、countryregionplace など、リポジトリ全体で共通です。

    • ただし、一般的なガイダンスでは、その国のコンテキストに合理的になるように、より具体的な方法でタイプを指定することは避けてください。

      • 例: 米国の行政区域 1 の場合、タイプ statedistrictterritory が使用されます。
      • 例: カリフォルニア州の行政区域 1 の場合、タイプ provinceterritory が使用されます。
      • 例: ポルトガルの行政区域 1 では、region および autonomous_region タイプが使用されます。
    ID
    • 通常は、再編する学区に対して同じ OCD ID を使用します。新しい OCD ID のセットに使用する type_id を選択する場合は、最も安定したものを選択してください。使用する識別子を決定する際は、次の点を考慮してください。
    • ある学区の ID が、再編によって変更される可能性はどのくらいですか?
    • 同じ公務員が学区 X を、その境界が再編によって変更される前後に保持する場合、その期間を「継続」と表明しますか?
    • 再編されて同じ境界や名前を持つ学区は、同じ識別子で表されますか?
      • 例: 米国では、選挙区の番号が米国の下院選挙区に使用されます。これは、選挙区の境界線は変わり、区画の境界線は変わり、そのアイデンティティは数字に強く関連しており、たとえその年数が選挙区の境界をまたいでも、第 N 議席を X 年間有する者を指します。
      • 例: カナダでは、連邦選挙区を表すために選挙区名を使用します。連邦選挙法典は存在しますが、再選挙区内で同一の選挙区が異なる ID で表されるため、この ID は安定しません。(たとえば、2012 年の再選挙前の学区 47012 はその後の学区と同じではないことなど)。
    再地域化

    一般に、再分類によって OCD ID を更新する場合は、新しい OCD ID のセットを作成するのではなく、既存の OCD ID のセットを使用します。

    • 学区の ID(数値 ID や名前など)が再編後に変わらない場合は、同じ OCD ID を使用します。
    • 再編後に新しい学区を作成する場合は、新しい OCD ID を作成します。
    • 存在しない学区については、再編が発効した日付で ValidThrough フィールドを更新します。
    • 学区の ID がその名前に基づいており、選挙区の再編後に学区の名前が変更された場合は、新しい学区名に基づいて新しい ID を作成し、id = oldIdsameAs = newId のエイリアスを追加します。これにより、oldId の使用が newId にマッピングされるため、newId が正規化されます。
    • 過去の OCD ID が競合した場合(新しい ID が廃止された ID と同一であるなど)、新しい ID に ValidFrom 年を追加します。この命名ポリシーについて詳しくは、現在の OCD-ID、廃止、名前が変更された OCD-ID の新しいファイルを作成するをご覧ください。

ローカルコピーを更新する

更新は国別のディレクトリ ocd-repository/identifiers/country-<2 文字の国コード> で行う必要があります。国コードが存在しない場合は作成します。

  • OCD ID の CSV ファイルがすでに存在し、それらが古い選挙区を表している場合は、このファイルを更新して新しい選挙区を含める必要があります。そのためには、ValidFrom 列と、YYYY-MM-DD 形式の日付を含む ValidTo 列を追加します。
    • ValidFrom は、新しい選挙区の選挙日である必要があります。すでに存在している選挙区の場合は空白にできます。
    • ValidTo古い有権者の場合は、選挙の前日である必要があります。

エイリアスの更新

エイリアス設定は、OCD ID を、同じ行政区画を表すものとしてマーキングするために使用できます。

  • たとえば、場所が町と郡の両方である場合、これは理にかなっています。

Google が推進しようとしている一般原則:

  • 行政区画の 2 つの部分に恒久的である場合、その 2 つにエイリアスを重複させる必要はありません。例: 米国議会の大部分は州と同条件ですが、これは現在の米国の人口構成による偶然によるものです。

また、法律や憲法の改正によって学区を分割しなければならない場合にも、エイリアスが必要となる場合に役立ちます。

  • たとえば、憲法により、ワシントン州の上院と下院の区域は、同じになるように設定されています。

必要に応じて、古い OCD ID とそのエイリアスの両方を追加する CSV ファイル aliases.csv を追加します。正規 ID には、局所的な意味を持つ部門タイプを使用し、よりなじみのある表現を使用したエイリアスを設定できます(正規: ocd-division/country:de/land エイリアス: ocd-division/country:de/state など)。詳しくは、問題 #170 をご覧ください。

alias.csv ファイルを更新するには:

  • alias.csv ファイルの列の順序を変更(idsameAssameAsNote
種類 説明
id この列には、OCD ID のエイリアスが必要です。
sameAs この列には、エイリアスを追加する実際の OCD ID を入力する必要があります。
sameAsNote 部門に複数の識別子がある理由や方法を説明するメモ。

例: identifiers/country-in/aliases.csv

スクリプト(compile.py)を実行します。

ロケーション opencivicdata/ocd-division-ids/scripts で Python スクリプトを実行します。

  • スクリプトの引数として 2 文字の国コードを指定して、どの国の ID を更新する必要があるかを認識できるようにする必要があります。
  • 例: python3 scripts/compile.py in(インドの選挙区の OCD ID を更新する場合)
  • Python 2.x はサポートの対象外です。Python 3 以降のバージョンを使用する必要があります。Python 3 の最新バージョンはこちらからダウンロードできます。

このスクリプトは、前の手順で更新された CSV ファイル(ocd-division-ids/identifiers/country-in/*.csv)からデータを取得し、ファイルの値を検証して、データエラー(特殊文字の使用など)やデータの重複をチェックして、新しい OCD ID を最上位の国 CSV ファイルに書き込みます。

更新された CSV ファイルに問題が発生すると、スクリプトはエラー メッセージと警告メッセージをスローします。問題を解決してから、スクリプトを再度実行してください。

readme ファイルを追加する

新しい国または新しいレベルのカバレッジを追加する場合(たとえば、以前はその国の OCD ID しか持っていなかったが、現在は第 1 行政区域を追加している)、README.md ファイルを追加または更新します。このファイルには、次のような行政区画の簡単な概要を含める必要があります。

  • 使用するタイプと役割(例: 「districts はこの国の第 1 レベルの行政区域です」)
  • タイプ間の関係(「立法選挙区は学区ごとに割り当てられ、選挙区の境界を越えない」など)。
  • 注目に値する例外(「1 つの立法学区が海外市民全員を対象としている」など)。
  • レビュアーやユーザーにコンテキストを提供するのに役立つウィキペディア ページへのリンク。

pull リクエストを作成する

pull リクエストを作成するには、次のガイダンスに従ってください。

  • このプロセスがエラーなしで完了したら、新しく書き込まれた最上位の country-<2 文字の国コード>.csv ファイルをチェックして、更新済みまたは新しい OCD ID のセットが含まれていることを確認します。
  • pull リクエストを作成し、審査担当者を追加する。この pull リクエストには、次のすべての CSV ファイルに加えられた変更を含める必要があります。
  • 国別のディレクトリにある CSV ファイル。
  • 最上位の country-<2 文字の国コード>.csv ファイル。
  • pull リクエストが国の 2 人のコミッターによって審査されて承認されると、パッケージのオーナー/コラボレーターの 1 人がリクエストをマージします。