Znajdź długość najbliższą łatowi do długości wejściowej (SQL Server 2008)


12

Mam chmurę punktów w mojej bazie danych (SQL Server 2008 przestrzenne). To około 6 milionów rekordów. Istnieją 3 kolumny: identyfikator, wartość, geom. Jaki jest optymalny sposób uzyskiwania „wartości” na wejściu lat long?

Jestem nowy w zapytaniach przestrzennych w SQL Server 2008. Czy ktoś może opublikować prosty przykład znalezienia punktu w kolumnie geom, dopasowania lub najbliższego wejścia od dłuższego?



Próbowałem. Ale istnieje 6 milionów rekordów i tworzenie indeksu kończy się niepowodzeniem z różnych powodów. Próbuję teraz utworzyć pustą tabelę, dodać indeks przestrzenny na geom, a następnie dodać dane. Czy to działa?
Shaunak,

Jakie masz błędy? Indeks może spowolnić bardzo dużo ładowania, dla tych wielu wierszy myślę, że dodanie indeksu po załadowaniu byłoby znacznie szybsze. Wydajność będzie w dużym stopniu zależeć od indeksu, więc warto to zrobić dobrze.
Kirk Kuykendall

Odpowiedzi:



4

Używa to Geografii, a nie Geometrii (jeśli dane są Lat / Lng, dane powinny mieć Typ Geografii, a nie Geometrii)

„Typ danych geograficznych SQL Server przechowuje dane elipsoidalne (okrągłe), takie jak współrzędne szerokości i długości geograficznej GPS”.

Aby wybrać 5 najbliższych rekordów z punktu lat / lng (-122,0 37,0), którego możesz użyć.

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

Co to jest p? przepraszam, jestem nowy bie, dlatego pytam
Shax

ZADEKLARUJ @p geografia
Andrew Hill,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.