Ini adalah pertanyaan sederhana namun mungkin kontroversial: mengapa sebagian besar (jika tidak semua) paket GIS mengharuskan lapisan yang ditentukan memiliki pengidentifikasi numerik yang tidak dapat dibatalkan ?
Mengapa ada kebutuhan untuk kunci pengganti seperti itu daripada yang alami?
Contoh:
ArcGIS memberlakukan OBJECTID (atau GlobalID)
QGIS tidak memuat layer ketika mereka tidak memiliki id numerik.
Jawaban:
Karena mereka harus memiliki bidang indeks yang dioptimalkan. Untuk mengindeks bidang string berulang kali akan membutuhkan lebih banyak overhead dan pada akhirnya tidak seefisien.
ESRI sebenarnya mendukung di dunia SDE 'GLOBALID' yang merupakan bidang GUID, jadi ini adalah bidang 32char tetapi masih diindeks untuk meningkatkan kinerja.
sumber
Jika Anda mulai menambahkan catatan ke lapisan Anda bisa mengandalkan pengguna memasukkan kode alfanumerik unik untuk setiap fitur baru sebelum menulisnya ke disk ..
..atau Anda bisa menerapkan bidang bilangan bulat autoincrementing sederhana.
sumber
Seperti yang disarankan banyak orang, ini adalah masalah kenyamanan; tapi mungkin yang lebih dalam, itu adalah konvensi.
Sebagai seorang programmer, insting pertama saya adalah menggunakan kunci numerik untuk layer ID karena itulah yang selalu dilakukan. Memang, bahkan mungkin tidak terpikir oleh saya, pada tingkat sadar setidaknya, bahwa saya harus melakukannya dengan cara lain. Tentu saja, jika ada alasan teknis untuk tidak menggunakan bilangan bulat, katakan jika ada kemungkinan ada lebih banyak lapisan daripada yang dapat disimpan dalam 32-bit (proposisi yang sangat tidak mungkin!), Atau jika ada alasan bisnis untuk itu, maka alternatif akan dipertimbangkan.
Ada juga pertimbangan algoritmik dengan tombol angka. Menyortir, dan mencari daftar nilai yang diurutkan akhirnya bermuara pada perbandingan antara dua angka, bahkan jika itu adalah daftar string atau objek kompleks; mereka hanya diubah menjadi angka dengan fungsi hashing . Karena itu, pada komputer modern, mencari daftar katakanlah 100 atau bahkan 1000 item biasanya sama cepatnya dengan pendekatan brute-force seperti halnya dengan algoritma yang sangat dioptimalkan. Dalam kasus lapisan dalam GIS, saya tidak dapat melihat bahkan peta yang paling kompleks sekalipun memiliki lebih dari 1000, dan bahkan jika itu terjadi, perhitungan lain yang terkait akan mengambil urutan besarnya lebih lama daripada keuntungan kecil dari pengoptimalan mencari daftar pendek.
Kunci integer "masuk akal" untuk seorang programmer, dan seperti kata Brad, ada lebih banyak upaya dalam menggunakan kunci non-numerik. Mungkin bukan lebih banyak kode, tetapi lebih banyak upaya mental, dan kita adalah makhluk kebiasaan yang malas. Juga, kunci yang secara unik mengidentifikasi sesuatu seperti lapisan dalam GIS dianggap "tersembunyi" dari pengguna, untuk memastikan mereka tidak mengacaukannya dan memecah kode yang bergantung pada keunikannya (meskipun kata kunci UNIK DB DB). Karena jika Anda memberi pengguna cukup tali, cepat atau lambat seseorang akan menggantung diri dengannya. Dengan segala cara menegakkan keunikan pada bidang yang dapat diedit pengguna, tetapi sistem yang mendasarinya harus menganggap kuncinya unik dan tidak teramputasi.
sumber
bigint
untuk kunci utama mereka.bigint
s untuk semua kunci primer tabelnya.Pertanyaan ini telah membingungkan orang (seperti saya) yang mengembangkan sisi geodatabase.
Ini bukan batasan penyimpanan basis data, karena PostgreSQL dapat mendefinisikan tabel dengan tombol KUNCI UTAMA dari tipe data yang berbeda, namun, tabel ini tidak dapat dimuat ke dalam program seperti QGIS. Pada catatan historis terkait, PostgreSQL digunakan untuk membutuhkan kolom OID sebagai kunci internal, yang juga merupakan bilangan bulat 32-bit. Ini diperlukan hingga versi 7.2 .
Persyaratan ID integer 32-bit sebenarnya adalah batasan pemrograman. Jauh lebih mudah untuk memiliki indeks ke set catatan sebagai tipe data tetap (bilangan bulat 32-bit), dan lebih nyaman untuk ini juga menjadi KUNCI UTAMA untuk catatan itu. Lebih sulit untuk membuat program memungkinkan kunci primer komposit, dan untuk itu mengambil catatan unik berdasarkan beberapa dan / atau berbagai tipe data. Namun, seperti OID PostgreSQL, batasan ini dapat diatasi dengan waktu pengembangan. Untuk QGIS, bug [ 5 tahun ] yang sudah berusia 5 tahun mungkin teratasi suatu hari nanti (inilah beberapa diskusi terkini tentang topik tersebut).
sumber
Dalam ESRI, dan perangkat lunak GIS lainnya, biasanya memiliki folder atau set file yang dibuat pada kelas fitur atau dataset.
misal cakupan arcinfo, shapefile, file geodatabase.
"Kumpulan" file ini perlu "digabungkan" oleh perangkat lunak untuk memungkinkan banyak fungsi GIS.
Tabel attrubute, jaringan, kontrol topologi.
Itulah tujuan dari OID dan juga alasan untuk membuatnya tidak dapat dibatalkan, disembunyikan, dikendalikan oleh perangkat lunak.
sumber