Einführung
Open Civic Data Identifiers (OCD-IDs) sind ein gängiges Format zur Definition politischer Regionen. Zum Erstellen eines CDF-Feeds müssen Sie diese IDs als Teil einer GpUnit-Entität angeben. In diesem Dokument finden Sie Anleitungen und Best Practices zum Hinzufügen von OCD-IDs zum GitHub-Repository „opencivicdata“.
OCD-IDs im Open Civic Data GitHub-Repository aktualisieren
Voraussetzungen
Ein paar wichtige Hinweise vorab:
Bereiten Sie Ihre Workstation vor:
Verzweigen und klonen Sie das Paket aus dem OCD-ID-Repository.
Machen Sie sich mit dem Repository vertraut:
Im OCD-ID-Repository wird jedes unterstützte Land durch ein Verzeichnis und eine CSV-Datei mit demselben Namen dargestellt: country-<Ländercode mit 2 Buchstaben> (Beispiel:
identifiers/country-de
undidentifiers/country-de.csv
für Deutschland).Im Verzeichnis des Landes, das Sie ändern möchten, finden Sie die CSV-Dateien (Beispiel), die Teile der länderspezifischen CSV-Datei der obersten Ebene enthalten. Dies sind die Dateien, die Sie ändern müssen.
So erstellen Sie neue OCD-IDs:
Struktur und Quellen
Sehen Sie sich das Dokument zu OpenCivics-Daten an, um sich mit der Struktur der OCD-IDs vertraut zu machen. Im Allgemeinen hat eine gültige OCD-ID das folgende Format:
ocd-division/country:<country_code>(/<type>:<type_id>)
Bei der Benennung von Kennungen werden Standardkennzeichnungen aus ISO oder anderen Standards wie FIPS und NUTS bevorzugt, wenn ISO nicht verfügbar ist.
Allgemeine Richtlinien
Im Folgenden finden Sie allgemeine Richtlinien:
Hierarchie
Die Hierarchie der OCD-IDs muss durch die Verwaltungsebene vorgegeben werden, über die die Grenzen der OCD-IDs gesteuert werden, nicht unbedingt die Begrenzungsbeziehung der OCD-IDs.
- Beispiel:In den USA werden Wahlbezirke bei Wahlen des nationalen Repräsentantenhauses genutzt, ihre Grenzen werden jedoch von den USA bestimmt. Die Kongresswahlbezirke hängen also von den Bundesstaaten ab:
ocd-division/country:us/state:pa/cd:2
- Beispiel:Murrysville ist eine Gemeinde in Pennsylvania, die im Westmoreland County liegt. Da die Städte jedoch vom Bundesstaat verwaltet werden, hängt die OCD-ID vom Bundesstaat ab:
ocd-division/country:us/state:pa/place:murrysville
In Fällen, in denen eine Unterscheidung erforderlich ist, kann eine zusätzliche Hierarchie verwendet werden. - Beispiel: In Pennsylvania gibt es 16 Orte mit dem Namen "Franklin Township". Normalerweise haben beide die OCD-ID
ocd-division/country:us/state:pa/place:franklin
, aber das wäre mehrdeutig. Stattdessen können wir der OCD-ID den Landkreis hinzufügen, sodass jeder seine eigene eindeutige OCD-ID erhält. Beispiel:ocd-division/country:us/state:pa/county:adams/place:franklin
Typ
OCD-IDs sind in der Regel länderspezifisch.
Einige OCD-IDs sind im gesamten Repository identisch, z. B.
country
,region
undplace
.Generell sollten Sie jedoch die Typen auf eine spezifischere Weise angeben, die im Kontext des jeweiligen Landes sinnvoll wäre.
- Beispiel:Für Verwaltungsgebiet 1 in den USA werden die Typen
state
,district
undterritory
verwendet. - Beispiel: Für Verwaltungsgebiet 1 in CA werden die Typen
province
undterritory
verwendet. - Beispiel:Für Verwaltungsgebiet 1 in PT werden die Typen
region
undautonomous_region
verwendet.
- Beispiel:Für Verwaltungsgebiet 1 in den USA werden die Typen
ID
- Im Allgemeinen möchten wir für einen Bezirk bei der Wahlwiederholung dieselbe OCD-ID verwenden. Wenn Sie eine
type_id
für einen neuen Satz von OCD-IDs auswählen, wählen Sie diejenige aus, die am stabilsten ist. Folgende Fragen sollten Sie sich stellen, wenn Sie die zu verwendende ID ermitteln: - Wie wahrscheinlich ist es, dass sich die Kennzeichnung für einen bestimmten Bezirk aufgrund einer Wahlwiederholung ändert?
- Wenn derselbe Amtsträger den Distrikt X vor und nach der Änderung der Grenzen der Wahlbezirke innehat, würde ich dann seine Amtszeit als kontinuierlich darstellen?
- Werden Bezirke mit identischen Grenzen oder Namen über mehrere Grenzen hinweg durch dieselbe Kennzeichnung dargestellt?
- Beispiel:In den USA werden die Nummern der Kongresswahlbezirke für US-Hausbezirke verwendet. Obwohl sich ihre Grenzen mit der Einschränkung ändern, hängt die Identität stark an der Nummer ab. Sie würden eine Person, die X Jahre lang Amt für den Sitz des N-ten Sitzes innehat, auch dann nennen, wenn diese Anzahl von Jahren Grenzen überschreitet.
- Beispiel:In Kanada sollen Wahlbezirke verwendet werden, um Wahlbezirke darzustellen, da zwar Bundeswahlkreise vorhanden sind, diese Kennung jedoch nicht stabil ist, da identische Bezirke innerhalb der Wahlbezirke durch unterschiedliche IDs dargestellt werden. (So ist z. B. der Bezirk 47012, der vor 2012 geändert wurde, nicht mehr derselbe.)
Neudefinition
Wenn Sie OCD-IDs aufgrund von Einschränkungen aktualisieren, sollten Sie im Allgemeinen die vorhandenen OCD-IDs verwenden, anstatt einen neuen zu erstellen.
- Wenn sich die Identität eines Bezirks (numerische ID, Name usw.) nach der neuen Beschränkung nicht ändert, verwenden Sie dieselbe OCD-ID.
- Wenn Sie nach der Wahl der Grenzen neue Bezirke erstellen möchten, müssen Sie neue OCD-IDs erstellen.
- Aktualisieren Sie für nicht mehr vorhandene Bezirke das Feld
ValidThrough
mit dem Datum, an dem die Änderung der Grenzen in Kraft getreten ist. - Wenn die ID eines Bezirks auf seinem Namen basiert und der Bezirk nach der Wahlwiederholung umbenannt wird, erstellen Sie basierend auf dem neuen Bezirksnamen eine neue ID und fügen Sie einen Alias mit
id = oldId
undsameAs = newId
hinzu. Dadurch wird die newId kanonisiert, da die Verwendung von oldId der newId zugeordnet wird. - Falls es einen Konflikt zwischen alten OCD-IDs gibt, z. B. wenn eine neue ID mit einer abgeschafften ID identisch ist, hängen Sie das Jahr
ValidFrom
an die neue ID an. Weitere Informationen zu dieser Benennungsrichtlinie finden Sie unter Neue Dateien für aktuelle, abgeschaffte und umbenannte OCD-IDs erstellen.
- Beispiel:In den USA werden Wahlbezirke bei Wahlen des nationalen Repräsentantenhauses genutzt, ihre Grenzen werden jedoch von den USA bestimmt. Die Kongresswahlbezirke hängen also von den Bundesstaaten ab:
Lokale Kopie aktualisieren
Jede Aktualisierung muss im landesspezifischen Verzeichnis ocd-repository/identifiers/country-<Ländercode mit 2 Buchstaben> erfolgen. Wenn kein länderspezifisches Verzeichnis vorhanden ist, erstellen Sie es.
- Wenn die CSV-Datei mit den OCD-IDs bereits vorhanden ist und alte Wahlgrenzen darstellt, müssen Sie diese Datei aktualisieren, um die neuen Wahlkreise aufzunehmen. Fügen Sie dazu eine
ValidFrom
- und eineValidTo
-Spalte hinzu, die das Datum im Format JJJJ-MM-TT enthält.ValidFrom
sollte das Wahldatum für neue Wahlkreise sein. Für bereits bestehende Wählerschaften kann das Feld leer gelassen werden.ValidTo
für veraltete Wahlkreise muss der Tag vor der Wahl sein.
Aliasse aktualisieren
Aliasing kann verwendet werden, um OCD-IDs als Darstellung derselben politischen Geografie zu kennzeichnen.
- Wenn ein Ort beispielsweise eine Stadt und ein Landkreis ist, könnte dies Sinn ergeben.
Die allgemeinen Prinzipien, die wir verbreiten möchten:
- Wenn zwei politische Geografien koterminiert sind, sollten sie nicht unbedingt aufeinander abgestimmt sein. Ein Beispiel: Der große US-Kongress ist mit den Bundesstaaten zusammen, aber dies liegt an der aktuellen Bevölkerungszahl in den USA.
Aliasing kann auch sinnvoll sein, wenn wesentliche Änderungen in Bezug auf Gesetze oder verfassungsmäßige Änderungen erforderlich sind, um Bezirke aufzuteilen.
- Zum Beispiel sind der Senat und die Wahlbezirke von Washington durch das Verfassungsrecht identisch.
Fügen Sie bei Bedarf die CSV-Datei aliases.csv
hinzu, in die wir sowohl die alten OCD-IDs als auch ihre Aliasse einfügen. Kanonische IDs können Divisionstypen mit lokaler Bedeutung verwenden und Aliasse mit vertrauteren Darstellungen haben (z. B. kanonisch: ocd-division/country:de/land
Alias: `ocd-division/country:de/state).
Weitere Informationen finden Sie unter Problem 170.
So aktualisieren Sie die Datei „alias.csv“:
- Spalten in der Datei „alias.csv“ berücksichtigen:
id
,sameAs
,sameAsNote
Typ | Beschreibung |
---|---|
id | Diese Spalte muss die Aliasse für die OCD-IDs enthalten. |
sameAs | Diese Spalte muss die tatsächlichen OCD-IDs enthalten, für die wir die Aliasse hinzufügen. |
sameAsNote | Eine Notiz, in der beschrieben wird, wie oder warum die Abteilung mehrere Kennungen hat. |
Beispiel:identifiers/country-in/aliases.csv
Führen Sie das Skript compile.py aus.
Führen Sie das Python-Skript unter opencivicdata/ocd-division-ids/scripts aus:
- Sie müssen den aus zwei Buchstaben bestehenden Ländercode als Argument für das Skript angeben, damit es weiß, welche Länderkennungen aktualisiert werden müssen.
- Beispiel: python3scripts/compile.py in (zum Aktualisieren der OCD-IDs von Wahlkreisen in Indien).
- Python 2.x wird nicht unterstützt. Sie müssen Python 3 oder höher verwenden. Die neueste Version von Python 3 können Sie hier herunterladen.
Das Skript entnimmt Daten aus den CSV-Dateien, die im vorherigen Schritt aktualisiert wurden (ocd-division-ids/identifiers/country-in/*.csv), validiert die Werte in den Dateien, prüft auf Datenfehler (Verwendung von Sonderzeichen usw.) oder Datenduplikate und schreibt die neuen OCD-IDs in die Länder-CSV-Datei der obersten Ebene.
Das Skript gibt Fehler- und Warnmeldungen aus, wenn Probleme in den aktualisierten CSV-Dateien auftreten. Beheben Sie die Probleme und führen Sie das Skript noch einmal aus.
Readme-Datei hinzufügen
Wenn Sie ein neues Land oder eine neue Abdeckung hinzufügen (z. B. hatten wir bisher nur eine OCD-ID für das Land, jetzt fügen wir aber die ersten Verwaltungsbezirke hinzu), fügen Sie eine README.md-Datei hinzu oder aktualisieren Sie sie. Diese Datei muss eine kurze Darstellung der politischen Region enthalten, darunter:
- Die zu verwendenden Typen und ihre Rollen (z. B. „
districts
sind die oberste Verwaltungsebene in diesem Land“) - Die Beziehungen zwischen den Typen (z. B. „Legislativenwahlen werden auf Bezirksbasis zugewiesen und überschreiten nicht die Bezirksgrenzen“).
- allen wichtigen Ausnahmen (z. B. „Es gibt einen Gesetzgebungsbezirk, der alle Staatsbürger im Ausland abdecken“); und
- Links zu nützlichen Wikipedia-Seiten, um für Rezensenten oder Nutzer Kontext bereitzustellen
Pull-Anfrage erstellen
Gehen Sie wie folgt vor, um eine Pull-Anfrage zu erstellen:
- Sobald dieser Vorgang ohne Fehler abgeschlossen ist, prüfen Sie die neu geschriebene Top-Level-Ländercode mit <2 Buchstaben-Ländercode>.csv-Datei, um sicherzustellen, dass sie jetzt den aktualisierten/neuen Satz von OCD-IDs enthält.
- Pull-Anfrage erstellen und Prüfer hinzufügen Diese Pull-Anfrage muss Änderungen an allen folgenden CSV-Dateien enthalten.
- Die CSV-Dateien im länderspezifischen Verzeichnis. Beispiel
- Die CSV-Datei mit dem Ländercode der obersten Ebene mit <zwei Buchstaben des Ländercodes>. Beispiel
- Wenn die Pull-Anfrage von zwei Committern des Landes geprüft und genehmigt wird, wird sie von einem der Inhaber/Mitbearbeiter des Pakets zusammengeführt.