Trova lat long più vicino a un input long long (SQL Server 2008)


12

Ho una nuvola di punti nel mio database (spaziale di SQL Server 2008). Sono circa 6 milioni di dischi. Ci sono 3 colonne: id, value, geom. Qual è il modo ottimale per ottenere il 'valore' in input lat long ??

Sono nuovo alle query spaziali in SQL Server 2008. Qualcuno può pubblicare un semplice esempio di come trovare il punto nella colonna geom, corrispondente o più vicino all'input lat long?



Provai. Ma ci sono 6 milioni di record e la creazione dell'indice fallisce per diversi motivi. Sto provando ora a creare una tabella vuota, aggiungere un indice spaziale su geom e quindi aggiungere dati. funziona?
Shaunak,

Quali errori stai riscontrando? Un indice può rallentare molto il caricamento, poiché per molte righe penso che aggiungere un indice dopo il caricamento sarebbe molto più veloce. Le prestazioni dipenderanno fortemente dall'indice, quindi vale la pena farlo bene.
Kirk Kuykendall,

Risposte:



4

Questo utilizza Geografia non Geometria (se i dati sono Lat / Lng, i dati devono essere Tipo di geografia non Geometria)

"Il tipo di dati geografici di SQL Server archivia i dati ellissoidali (terra rotonda), come le coordinate di latitudine e longitudine GPS."

Per selezionare i primi 5 record più vicini da un punto lat / lng (-122,0 37,0) che è possibile utilizzare.

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);

Che cos'è p? scusa, sono un nuovo amico, ecco perché chiederlo
Shax,

DECLARE @p geografia
Andrew Hill
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.