Apa tipe data terbaik untuk digunakan saat menyimpan data geopositional di C #? Saya akan menggunakan desimal untuk ketepatannya, tetapi operasi pada bilangan desimal floating point lebih lambat dari bilangan biner floating point (ganda).
Saya membaca bahwa sebagian besar waktu Anda tidak memerlukan lebih dari 6 atau 7 digit ketepatan untuk lintang atau bujur. Apakah ketidaktepatan dua kali lipat itu penting atau dapatkah diabaikan?
c#
latitude-longitude
geopoints
KRTac
sumber
sumber
double
,double
mungkin paling cocok.Jawaban:
Untuk itu
double
, ada beberapa alasan.sumber
Ganda memiliki presisi hingga 15 digit desimal. Jadi, mari kita asumsikan tiga dari angka tersebut akan berada di sebelah kiri koma desimal untuk nilai lintang / bujur (maksimal 180 derajat). Ini menyisakan 12 digit presisi di sebelah kanan. Karena derajat lintang / bujur adalah ~ 111km, 5 dari 12 digit tersebut akan memberi kita presisi pada pengukur. 3 digit lagi akan memberi kita presisi ke milimeter. 4 digit sisanya akan membuat kita presisi menjadi sekitar 100 nanometer. Karena dobel akan menang dari perspektif kinerja dan memori, saya tidak melihat alasan untuk mempertimbangkan penggunaan desimal.
sumber
Saya menghadapi pertanyaan ini beberapa waktu yang lalu ketika saya mulai dengan pemrograman spasial. Saya membaca sebuah buku beberapa waktu lalu yang membawa saya pada hal ini.
//SqlGeography.Point(dblLat, dblLon, srid)
Ini adalah cara terbaik saat bekerja di aplikasi Anda dengan data spasial. kemudian untuk menyimpan data gunakan ini di sql
lain, jika Anda menggunakan sesuatu yang lain yang bukan sql, cukup ubah titik menjadi heksadesimal dan simpan. Saya tahu setelah sekian lama menggunakan spasial bahwa ini adalah yang paling aman.
sumber
Dua kali lipat
Menggabungkan jawaban itu adalah bagaimana Microsoft merepresentasikan dirinya di perpustakaan SqlGeography
[dapatkan: Microsoft.SqlServer.Server.SqlMethod (IsDeterministic = true, IsPrecise = true)] publik System.Data.SqlTypes.SqlDouble Lat {get; } Nilai Properti SqlDouble A SqlDouble nilai yang menentukan garis lintang.
sumber