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?

Shaunak
źródło
Czy utworzyłeś indeks przestrzenny ?
Kirk Kuykendall
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);
Mapperz
źródło
Co to jest p? przepraszam, jestem nowy bie, dlatego pytam
Shax
ZADEKLARUJ @p geografia
Andrew Hill,