Pengantar
Open Civic Data Identifier (OCD ID) adalah format ID umum yang menentukan wilayah geografis politik. Untuk membuat feed CDF, Anda harus memberikan ID ini sebagai bagian dari entity GpUnit. Dokumen ini bertujuan untuk memberikan panduan dan praktik terbaik untuk menambahkan ID OCD ke repositori GitHub opencivicdata.
Cara memperbarui ID OCD di repositori Open Civic Data GitHub
Prasyarat
Sebelum memulai:
Siapkan workstation Anda:
Lakukan fork dan clone paket dari repo OSD ID.
Pahami repo dengan baik:
Dalam repo OCD ID, setiap negara yang didukung diwakili dengan direktori dan file CSV dengan nama yang sama: country-<2 letter country code> (Contoh:
identifiers/country-de
danidentifiers/country-de.csv
untuk Jerman).Di dalam direktori negara yang ingin diubah, Anda dapat menemukan file CSV (Contoh) yang menyertakan bagian file CSV tingkat atas khusus negara. Ini adalah file yang perlu Anda ubah.
Cara membuat ID OCD baru:
Struktur dan sumber
Baca dokumen data kemasyarakatan terbuka untuk memahami struktur ID OCD. Secara umum, ID OCD yang valid memiliki format berikut:
ocd-division/country:<country_code>(/<type>:<type_id>)
Penamaan ID lebih memilih ID standar dari ISO, atau standar lainnya, seperti FIPS dan NUTS, jika ISO tidak tersedia.
Kebijakan umum
Berikut adalah kebijakan umum:
Hierarki
Hierarki ID OCD harus ditentukan oleh tingkat administratif yang mengontrol batas ID OCD, tidak harus hubungan pembatasan ID OCD.
- Contoh: Di Amerika Serikat, distrik kongres digunakan dalam pemilu untuk Dewan Perwakilan Rakyat nasional, tetapi batas-batasnya ditentukan oleh Negara Bagian. Jadi distrik kongres bergantung
pada negara bagian:
ocd-division/country:us/state:pa/cd:2
- Contoh: Murryville adalah kotamadya di Pennsylvania dan
berada di dalam Westmoreland County. Namun, kota dikelola oleh Negara Bagian, sehingga ID OCD bergantung pada status:
ocd-division/country:us/state:pa/place:murrysville
Hierarki tambahan dapat digunakan jika disambiguasi diperlukan. - Contoh: Ada 16 tempat di Pennsylvania yang bernama "Franklin
Township". Biasanya, masing-masing akan memiliki ID OCD
ocd-division/country:us/state:pa/place:franklin
, tetapi akan jadi ambigu. Jadi, kita dapat menambahkan county ke ID OCD sehingga masing-masing mendapatkan ID OCD uniknya sendiri. Contoh:ocd-division/country:us/state:pa/county:adams/place:franklin
Jenis
Jenis ID OCD biasanya spesifik untuk negara.
Beberapa ID OCD bersifat umum di seluruh repositori seperti
country
,region
, danplace
.Namun, panduan umumnya adalah memilih untuk menentukan jenis dengan cara yang lebih spesifik yang sesuai dengan konteks negara tersebut.
- Contoh: Untuk Area Admin 1 di AS, jenis
state
,district
, danterritory
digunakan. - Contoh: Untuk Area Admin 1 di CA, jenis
province
danterritory
digunakan. - Contoh: Untuk Area Admin 1 di PT, jenis
region
danautonomous_region
digunakan.
- Contoh: Untuk Area Admin 1 di AS, jenis
ID
- Secara umum, kami ingin menggunakan ID OCD yang sama untuk sebuah distrik di seluruh distrik. Saat memilih
type_id
yang akan digunakan untuk kumpulan ID OCD baru, pilih salah satu yang paling stabil. Beberapa pertanyaan yang perlu diajukan saat menentukan ID yang akan digunakan adalah: - Seberapa besar kemungkinan ID untuk distrik tertentu berubah karena penetapan ulang distrik?
- Jika pejabat yang sama memegang distrik X sebelum dan sesudah batasnya berubah dari penetapan ulang distrik, apakah saya akan menyatakan masa jabatan mereka sebagai berkelanjutan?
- Apakah distrik dengan batas atau nama yang identik di seluruh distrik ditampilkan oleh ID yang sama?
- Contoh: Di AS, nomor distrik kongres digunakan untuk distrik rumah AS karena meskipun batasnya berubah dengan penetapan ulang distrik, identitasnya terkait erat dengan nomor tersebut dan Anda akan menyebut seseorang sebagai penanggung jawab untuk kursi ke-N selama X tahun meskipun jumlah tahun tersebut melintasi batas distrik baru.
- Contoh: Di Kanada, kami ingin menggunakan nama distrik untuk mewakili distrik pemilu federal karena meskipun ada kode pemilu federal, ID ini tidak stabil karena distrik yang identik di seluruh distrik direpresentasikan dengan ID yang berbeda. (misalnya, distrik 47012 sebelum tahun 2012 bukan lagi distrik yang sama setelahnya).
Penetapan ulang distrik
Secara umum, saat memperbarui ID OCD karena penetapan ulang distrik, gunakan kumpulan ID OCD yang sudah ada, bukan membuat kumpulan baru.
- Jika identitas distrik (ID numerik, nama, dll.) tidak berubah setelah distrik diterapkan, gunakan ID OCD yang sama.
- Untuk pembuatan distrik baru setelah penetapan ulang distrik, buat ID OCD baru.
- Untuk distrik yang sudah tidak ada, perbarui kolom
ValidThrough
dengan tanggal penetapan ulang distrik diterapkan. - Jika ID distrik didasarkan pada namanya, dan nama distrik diganti
setelah penetapan ulang distrik, buat ID baru berdasarkan nama distrik baru dan
tambahkan alias dengan
id = oldId
dansameAs = newId
. Tindakan ini akan mengkanonikalisasi newId sebagai penggunaan peta oldId ke newId. - Jika terjadi konflik antara ID OCD historis, seperti ID baru yang identik dengan ID yang dihapus, tambahkan tahun
ValidFrom
ke ID baru. Untuk informasi selengkapnya tentang kebijakan penamaan ini, lihat Membuat file baru untuk ID OCD yang saat ini, dihapus, dan diganti namanya.
- Contoh: Di Amerika Serikat, distrik kongres digunakan dalam pemilu untuk Dewan Perwakilan Rakyat nasional, tetapi batas-batasnya ditentukan oleh Negara Bagian. Jadi distrik kongres bergantung
pada negara bagian:
Perbarui salinan lokal Anda
Pembaruan apa pun harus dilakukan di direktori khusus negara: ocd-repository/identifiers/country-<2 letter country code>. Jika belum ada, buat pembaruan.
- Jika file CSV ID OCD sudah ada dan mewakili batas pemilu yang lama, Anda perlu memperbarui file ini untuk menyertakan konstituen baru. Untuk melakukannya, tambahkan kolom
ValidFrom
danValidTo
yang berisi tanggal dalam format YYYY-MM-DD.ValidFrom
harus merupakan tanggal pemilihan untuk konstituensi baru. Tanggal ini dapat dikosongkan untuk konstituensi yang sudah ada.ValidTo
untuk konstituen lama harus sehari sebelum pemilu.
Perbarui Alias
Aliasing dapat digunakan untuk menandai ID OCD sebagai representasi bagian geografi politik yang sama.
- Misalnya, jika suatu tempat berupa kota dan kabupaten, hal ini bisa masuk akal.
Prinsip umum yang ingin kami terapkan:
- Jika dua bagian geografi politik berbeda-beda, tidak boleh dialiaskan satu sama lain. Misalnya: kongres AS berskala besar berdekatan dengan negara bagian, tetapi ini kebetulan karena jumlah populasi AS saat ini.
Aliasing juga dapat masuk akal jika perubahan signifikan dalam perubahan hukum/konstitusional diperlukan untuk membagi distrik.
- Misalnya, senat negara bagian Washington dan distrik dewan negara bagian ditetapkan agar sama menurut hukum konstitusi.
Jika perlu, tambahkan file CSV aliases.csv
tempat kami menambahkan ID OCD lama dan aliasnya. ID kanonis dapat menggunakan jenis pembagian yang memiliki makna lokal
dan dapat memiliki alias dengan representasi yang lebih dikenal (seperti,
kanonis: alias ocd-division/country:de/land
: `ocd-division/country:de/state).
Lihat masalah #170
untuk informasi selengkapnya.
Untuk memperbarui file alias.csv:
- Ikuti urutan kolom dalam file alias.csv:
id
,sameAs
,sameAsNote
Jenis | Deskripsi |
---|---|
id | Kolom ini harus memiliki alias untuk ID OCD. |
sameAs | Kolom ini harus memiliki ID OCD aktual yang kami tambahkan alias. |
sameAsNote | Catatan yang menjelaskan bagaimana atau mengapa pembagian tersebut memiliki beberapa ID. |
Contoh: identifiers/country-in/aliases.csv
Jalankan skrip - compile.py
Jalankan skrip python di lokasi opencivicdata/ocd-division-ids/scripts:
- Anda harus menentukan kode negara 2 huruf sebagai argumen ke skrip agar skrip mengetahui ID negara mana yang perlu diperbarui.
- Contoh: skrip python3/compile.py in (untuk memperbarui ID konstituen OCD di India).
- Python 2.x tidak menerima dukungan. Harus menggunakan Python 3 atau versi yang lebih baru. Anda dapat mendownload Python 3 versi terbaru di sini.
Skrip ini mengambil data dari file CSV yang diupdate pada langkah sebelumnya (ocd-division-ids/identifiers/country-in/*.csv), memvalidasi nilai dalam file, memeriksa error data (penggunaan karakter khusus, dll.), atau duplikasi data, dan menulis ID OCD baru ke file CSV negara tingkat atas.
Skrip akan menampilkan pesan peringatan dan error jika muncul masalah dalam file CSV yang diperbarui. Selesaikan masalahnya dan jalankan skrip lagi.
Menambahkan file readme
Saat Anda menambahkan negara baru atau tingkat cakupan baru (misalnya, sebelumnya kami hanya memiliki ID OCD untuk negara tersebut, tetapi sekarang menambahkan distrik administratif tingkat pertama), tambahkan atau perbarui file README.md. File ini harus berisi garis besar singkat tentang geografi politik, termasuk:
- Jenis yang akan kita gunakan dan perannya (seperti "
districts
adalah wilayah administratif tingkat pertama di negara ini"); - Hubungan antarjenis (seperti "daerah legislatif ditetapkan dengan basis per distrik dan tidak melintasi batas distrik");
- Semua pengecualian penting (seperti, "ada satu distrik legislatif yang mencakup semua warga asing"); dan
- Tautkan ke halaman Wikipedia yang berguna untuk membantu memberikan konteks bagi pengulas atau pengguna.
Membuat permintaan pull
Untuk membuat permintaan pull, gunakan panduan berikut:
- Setelah proses ini selesai tanpa error, periksa file .csv tingkat atas yang baru ditulis country-<2 letter country code>.csv untuk memastikan file tersebut sekarang menyertakan kumpulan ID OCD yang diperbarui/baru.
- Membuat permintaan pull dan menambahkan peninjau. Permintaan pull ini harus menyertakan modifikasi yang dilakukan di semua file CSV berikut.
- File CSV dalam direktori khusus negara. Contoh
- File .csv negara tingkat teratas-<2 huruf kode negara>. Contoh
- Saat ditinjau dan disetujui oleh dua committer negara, permintaan pull akan digabungkan oleh salah satu pemilik/kolaborator paket.