Finden Sie die Lat-Länge, die einer Eingabe-Lat-Länge am nächsten kommt (SQL Server 2008).

12

Ich habe eine Punktwolke in meiner Datenbank (SQL Server 2008 räumlich). Das sind ungefähr 6 Millionen Datensätze. Es gibt 3 Spalten: ID, Wert, Geom. Was ist der optimale Weg, um den 'Wert' am Eingang lat long zu erhalten?

Ich bin neu in räumlichen Abfragen in SQL Server 2008. Kann jemand ein einfaches Beispiel für das Finden des Punkts in der Geom-Spalte veröffentlichen, der mit der Eingabe lat long übereinstimmt oder dieser am nächsten kommt?

Shaunak
quelle
Haben Sie einen räumlichen Index erstellt ?
Kirk Kuykendall
Ich habe es versucht. Es gibt jedoch 6 Millionen Datensätze, und das Erstellen eines Index schlägt aus verschiedenen Gründen fehl. Ich versuche jetzt, eine leere Tabelle zu erstellen, einen räumlichen Index für Geom hinzuzufügen und dann Daten hinzuzufügen. funktioniert es?
Shaunak
Welche Fehler bekommen Sie? Ein Index kann das Laden erheblich verlangsamen. Für so viele Zeilen wäre das Hinzufügen eines Index nach dem Laden meiner Meinung nach viel schneller. Die Performance hängt stark vom Index ab, daher lohnt es sich, dies richtig zu machen.
Kirk Kuykendall

Antworten:

4

Diese Anwendungen Geografie nicht Geometrie (wenn Daten Lat / Lng sind Daten , die Sie sollten Geographie Typ nicht Geometrie sein)

"Der SQL Server-Geografiedatentyp speichert ellipsoide Daten (Runderddaten), z. B. GPS-Breiten- und Längengradkoordinaten."

So wählen Sie die 5 nächstgelegenen Datensätze aus einem lat / lng-Punkt (-122,0 37,0) aus, den Sie verwenden können.

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
quelle
Was ist p? Entschuldigung, ich bin ein neuer Bie, deshalb frage ich
Shax
DECLARE @p Geographie
Andrew Hill