menetapkan fitur id ke point yang unik


10

Standar paket MassGIS (http://www.mass.gov/mgis/ParstndrdVer1_5_1.pdf) menggunakan gabungan dari seluruh bagian x dan y-koordinat untuk membuat id unik (LOC_ID) untuk fitur. Saya sedang mempertimbangkan melakukan hal yang sama untuk kelas fitur titik. Saya suka metodologi yang konsisten, tapi mungkin saya mengabaikan sesuatu. Apakah ada standar atau praktik terbaik untuk membuat id unik untuk fitur titik?


Pertanyaan tindak lanjut: Apakah yang terbaik untuk membuat dan memelihara id unik di DBMS (SQL Server) atau dalam perangkat lunak GIS (ArcGIS)?
cwb

1
Bisakah Anda memberikan rincian lebih lanjut tentang proyek Anda. Apa yang diwakili fitur? Apakah mereka sudah memiliki ID unik alami. Apa yang Anda rencanakan untuk menggunakan nomor ini untuk (yaitu fitur trek, tautan ke sumber data lain, dll) Semua ini merupakan faktor dalam cara terbaik untuk menangani pembuatan ID.
Chris M

Fitur titik mewakili tangkapan menangkap. Tidak ada ID unik alami. Staf DPW ingin menghubungkan ke daftar informasi tentang program pembersihan daerah tangkapan. Saya tidak memiliki rincian lebih lanjut, tetapi menduga bahwa staf di lapangan akan membuat catatan kapan pembersihan dilakukan, kondisi bak
penampung

untuk cekungan, Anda memiliki nomor ottobasin. Dugaan saya adalah unik. cari ottobacia (ottobasin) untuk memahami metodologi ini. Saya hanya menemukan hasil dalam bahasa Portugis.
George Silva

Jawaban:


18

Jika Anda menggunakan id itu untuk sesuatu seperti kunci asing dalam kaitannya dengan tabel lain, seluruh basis data Anda akan mendapat masalah besar jika Anda harus memindahkan suatu titik karena suatu alasan. Mungkin Anda kemudian harus menyimpan id bahkan jika itu tidak menggambarkan koordinat xy lagi.

Sebagai kunci unik seringkali yang terbaik adalah memiliki sesuatu yang tidak mengatakan apa-apa tentang data, karena sebagian besar data mungkin berubah.

/ Nicklas


7
+1 Tidak pernah pernah menggunakan id yang berarti sesuatu atau menggunakan data bisnis di dalamnya. Seseorang di tempat kerja saya baru saja terbakar karena mereka menggunakan nama jalan di ID dan lihatlah nama jalan harus diubah, sekarang ID salah.
Nathan W

4

Menambahkan dari jawaban Nicklas dan komentar saya.

Saya akan mengatakan konvensi yang paling banyak digunakan dan paling direkomendasikan adalah hanya menggunakan ID penambahan-otomatis, misalnya mulai dari 1 dan teruskan. Tidak ada logika dan sederhana.

Jika Anda memiliki sistem terdistribusi, atau tidak suka nomor yang bertambah otomatis, Anda bisa menggunakan GUID. Sebagian besar basis data akan menangani pembuatan ID jenis ini untuk Anda. Namun mereka merepotkan bagi pengguna untuk masuk secara manual, untuk mencari dll, jadi ingatlah itu.

Pilihan lainnya adalah menggunakan semacam hash data tetapi saya tidak akan merekomendasikan ini. Ini berarti bahwa Anda harus menulis sebuah algoritma untuk melakukan ini untuk Anda, Anda tidak selalu dapat memastikan keunikan, mereka juga cenderung menyebalkan untuk pencarian.

Ini hanya pendapat saya, tetapi dari pengalaman pribadi, percayalah, tidak pernah menggunakan data bisnis dalam ID.


4

Pertanyaan tindak lanjut: Apakah yang terbaik untuk membuat dan memelihara id unik di DBMS (SQL Server) atau dalam perangkat lunak GIS (ArcGIS)?

Saya sangat menyarankan memeriksa keunikan di dalam DBMS. Itu salah satu dari banyak kekuatan DBMS. Ini juga memungkinkan Anda untuk mengakses data Anda dengan perangkat lunak SIG yang berbeda yang mungkin tidak akan menyadari kendala unik.


3

Skema identifikasi kami tidak dipilih oleh saya tetapi adalah sebagai berikut: 2,3,4 kode karakter yang merupakan kelas aset dan nomor urut 6 digit (Anda akan memilih jumlah digit apa pun yang cocok untuk Anda). Prosedur tersimpan membuat ID ini dan bergantung pada beberapa tabel non-geodatabase dalam database SQL Server yang sama.

Saya menyimpan ID kenaikan otomatis berurutan yang terpisah. Saya juga menyimpan bidang geohash 13 karakter (untuk fitur titik), tetapi saya tidak akan pernah menggunakannya sebagai kunci. Bidang ini terisi secara otomatis (oleh ekstensi editor khusus) setiap kali fitur dipindahkan.

Jika data GIS Anda akan digunakan dengan segala jenis sistem manajemen aset, Anda akan ingin ID Anda menjadi unik secara global dalam geodatabase Anda (dan mungkin unik dalam semua geodatabases dalam organisasi Anda). Ini juga akan membuatnya sedikit lebih mudah untuk melakukan geodatabase refactoring di masa depan.


1

Sebelumnya saya telah menggunakan perhitungan CRC di masa lalu untuk membuat nilai yang sama. Tidak terlalu sulit untuk dibuat dan perpustakaan / algoritma tersedia secara online.

Keuntungannya adalah bahwa Anda dapat melakukan fitur yang lebih besar daripada poin, sedangkan gabungan harus benar-benar menjadi fitur titik saja (kecuali jika Anda ingin kunci yang sangat besar).

Dan saya pikir itu tidak mungkin pengguna akhir akan mencari dengan ID ini, jadi saya tidak melihat itu sebagai masalah.

Karena itu, saya tidak melihat banyak manfaat eksplisit dari menetapkan ID seperti itu. Saya mungkin menggunakan metode untuk deteksi perubahan (karena cara ini lebih efisien untuk membandingkan dua nilai CRC daripada dua set geometri) tetapi bahkan kemudian - mengapa menggunakannya sebagai ID utama?


1

"GUIDs, tentu saja, dapat dihasilkan menggunakan VB Script. Tetapi mengingat penghilangan bertahap VB Script oleh ESRI, kami akan melakukan pembuatan GUID di ArcMap menggunakan keajaiban kesembilan dunia, Python. Bagi Anda yang belum berada di tahu, Python adalah hadiah Tuhan untuk membasmi para peretas SIG. Saran saya: Pelajari! Hidup! Senang! "

http://eaglemap.com/blog/bid/45555/How-to-Generate-GUIDs-in-ArcMap


0

Arc Hydro Tools ESRI dilengkapi dengan toolbar yang juga menginstal ID manager unik yang berjalan di latar belakang. Bilah alat memungkinkan Anda menetapkan ID unik per kelas fitur atau per geodatabase. Manajer ID per default hanya menangani atribut ID unik yang disebut eg HydroID, yang merupakan bagian dari model data Arc Hydro. Tetapi dapat diatur untuk menangani atribut lainnya juga. Alat ini dilengkapi dengan banyak dokumentasi, jadi mengonfigurasi ID manager sesuai kebutuhan Anda seharusnya tidak menjadi masalah.

ID unik saya, setahu saya, selalu bilangan bulat. Setelah menetapkan ID unik satu kali, manajer menangani pemberian ID unik baru untuk setiap fitur yang baru dibuat yang sesuai dengan konfigurasi.

Pengelola ID unik dapat berguna untuk database backend yang (AFAIK) tidak mendukung angka peningkatan otomatis seperti geodatabase pribadi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.