Menentukan panjang bidang shapefile?

8

Di tempat kerja saya telah mewarisi beberapa shapefile yang berasal dari MapInfo yang saya bawa ke proyek baru di QGIS. Saya memiliki kesempatan untuk mengubah nama kolom, menambah dan mengurangi kolom dan karena tidak ada terlalu banyak data di dalamnya namun saya dapat mulai lagi dan menyesuaikan panjang bidang juga.

Saya perhatikan bahwa beberapa panjang bidang jauh lebih besar dari yang seharusnya dan saya ingat dari pembuatan basis data sebelumnya 20 tahun yang lalu, atau lebih, bahwa yang terbaik adalah menjaga panjang bidang tidak lebih dari yang seharusnya. menghemat 'ruang', untuk meningkatkan efisiensi.

Apakah ini masih diinginkan atau apakah panjang bidang tidak penting lagi?

Martin Hügi
sumber
Itu tergantung pada format yang Anda gunakan.
bugmenot123
1
Panjang bidang mungkin harus dijaga agar "tidak lebih dari yang seharusnya" dengan definisi Anda tidak perlu apa-apa lagi. Tentu saja itu tergantung apa yang Anda tangkap untuk menentukan berapa lama "kebutuhan" Anda.
DMusketeer
3
IMO praktik terbaik yang paling penting adalah berhenti menggunakan shapefile jika memungkinkan.
alphabetasoup

Jawaban:

12

Jawabannya tergantung pada format data. File dBase-III +, yang digunakan dalam shapefile untuk atribut, adalah lebar tetap, jadi mendefinisikan kolom FIPS menjadi 254 lebar teks menggunakan 254 byte. Lebih buruk lagi, dBase memiliki lebar catatan maksimum 4000 byte, sehingga 249 yang terbuang pada bidang lima karakter tidak tersedia untuk bidang lain (yang ada maksimum 100 atau 255, tergantung pada siapa yang menerapkan standar). Batas juga berlaku untuk ukuran total file dBase (2Gb), yang dapat didekati dengan catatan 536k pada lebar maksimum, ketika catatan 5,36m akan tersedia pada lebar 400 byte.

Ada alasan lain untuk membatasi lebar bidang - kualitas data. Jika seorang designator hanya dapat secara legal menampung dua karakter, tetapi Anda mendefinisikannya dengan sepuluh, maka Anda meningkatkan kemungkinan memiliki nilai tidak valid dengan jari yang diterima oleh file data.

Di sisi lain, jika Anda hanya menyediakan lebar yang diperlukan, dan mendapatkan data internasional dalam format UTF-8, Anda mungkin kekurangan ruang ketika sebuah karakter dapat menggunakan 2-6 byte.

Jadi, untuk bidang string basis data (yang mencakup file geodatabase), yang umumnya dihentikan, dan karena itu jangan buang ruang baris, fleksibilitas adalah pilihan, tetapi untuk format lebar tetap aturan lama masih berlaku.

Vince
sumber
Terima kasih atas jawabannya. Saya tidak yakin saya benar-benar mengerti jawaban dari Vince karena saya tidak tahu banyak tentang struktur basis data yang berbeda, tetapi saya mendapatkan intinya. Saya pikir pertimbangan utama saya kemudian adalah dengan integritas data dan tidak menyiapkan apa pun lebih lama dari yang seharusnya - yang tampak jelas sekarang - terima kasih
Martin Hügi
Alat utama untuk mengucapkan terima kasih kepada mereka yang menjawab pertanyaan Anda adalah untuk memperbaiki dan menandai pertanyaan yang dijawab. Jika Anda tidak jelas tentang sesuatu, tanyakan. Idenya di sini adalah untuk membangun jawaban yang baik .
Vince
1
@Vince menjawab ini dengan baik, hanya ada satu alasan lagi yang ingin saya tambahkan: Menjelaskan maksudnya. Ketika bidang bernama "negara" hanya memiliki 2 karakter, jelas bidang tersebut seharusnya memiliki singkatan standar untuk negara. Namun, jika Anda membuat bidang itu 50 atau 200 karakter, itu mungkin ditafsirkan sebagai memegang nama lengkap negara. Ini mengikat kembali ke kualitas data keseluruhan.
RustProof Labs
Tindak lanjut - Setelah 18 bulan semua ini menjadi jauh lebih masuk akal sekarang - jawaban yang bagus
Martin Hügi