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?



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

Was ist p? Entschuldigung, ich bin ein neuer Bie, deshalb frage ich
Shax

DECLARE @p Geographie
Andrew Hill
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.