Temukan lat paling dekat ke input lat panjang (SQL Server 2008)

12

Saya memiliki cloud point di basis data saya (SQL Server 2008 spatial). Itu sekitar 6 juta catatan. Ada 3 kolom: id, nilai, geom. Apa cara optimal untuk mendapatkan 'nilai' di input lat panjang ??

Saya baru mengenal kueri spasial di SQL Server 2008. Dapatkah seseorang memposting contoh sederhana untuk menemukan titik dalam kolom geom, cocok atau paling dekat dari input lat panjang?

Shaunak
sumber
Sudahkah Anda membuat indeks spasial ?
Kirk Kuykendall
Saya mencoba. Tetapi ada 6 juta catatan dan membuat indeks gagal dengan alasan berbeda. Saya mencoba sekarang untuk membuat tabel kosong, menambahkan indeks spasial pada geom dan kemudian menambahkan data. Apakah itu bekerja?
Shaunak
Kesalahan apa yang Anda dapatkan? Indeks dapat memperlambat pemuatan banyak, untuk itu banyak baris saya pikir menambahkan indeks setelah memuat akan jauh lebih cepat. Kinerja akan sangat bergantung pada indeks, sehingga layak untuk melakukannya dengan benar.
Kirk Kuykendall

Jawaban:

4

Ini menggunakan Geografi, bukan Geometri (jika data Lat / Lng, data Anda harus Tipe Geografi, bukan Geometri)

"Tipe data geografi SQL Server menyimpan data ellipsoidal (round-earth), seperti koordinat lintang dan bujur GPS."

Untuk Memilih 5 Rekor Terdekat Terdekat dari titik lat / lng (-122.0 37.0) yang dapat Anda gunakan.

SELECT   TOP 5
         geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p) 
FROM     markers
WHERE    geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p) < 25
ORDER BY geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p);
Mapperz
sumber
Apa itu p? maaf saya bie baru itu sebabnya bertanya
Shax
DECLARE @p geography
Andrew Hill