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.