2010-06-04 15 views
6

Pracuję z punktem geograficznym za pomocą lat/long i trzeba znaleźć inne punkty w naszej bazie danych w promieniu 5 mil od tego punktu. Jednak nie mogę wydawać się dowiedzieć, jakie są "jednostki" dla STBuffer, to nie wydaje się być zgodne z nogi, mile, metry, kilometry, itp. Dokumentacja odnosi się do nich jako "jednostki", wszelkie sugestie ? DziękiSQL Server 2008 Geografia .STBuffer() jednostki pomiaru odległości

[...] z geografii :: STGeomFromText ("POINT (xy)", 4326) .STBuffer (z) .STIntersects (geografia :: STGeomFromText ('POINT (' + CAST) (v.Longitude as varchar (max)) + '' + CAST (v.Latitude as varchar (max)) + ')', 4326)) = 1

Odpowiedz

5

STBuffer jest w metrach. More info here.

przeliczania mil m podzielić odległością od 0,0006213712

(to znaczy 5 mil/0.0006213712 = 8,046.72 m)

+2

Dziwne określenie „metr” pokazuje tylko w * np *, a nie w opisie 'distance' parametru. –

+0

Odległość na całym świecie obliczana jest w metrach/kilometrach/itd. Sądzę, że tylko USA wciąż używa imperialnego systemu (cal/stopa/mile). – Nordes

9

Jednostka pomiaru zależy od przestrzennego układu odniesienia w użyciu. Zobacz ten pogląd system informacji:

SELECT * FROM sys.spatial_reference_systems;

+2

Mimo że pierwotne pytanie dotyczyło geografii, przybyłem tutaj, szukając ogólnie jednostki miary STBuffer (geometrii lub geografii). Aby ocalić kogoś, kto szuka dalej, dla geometrii, jednostką miary jest układ współrzędnych geometrii. Więc jeśli używasz Lat/Long, geometria.STBuffer (1) będzie 1 cały stopień, a nie 1 metr. 1 stopień jest ogromny w porównaniu - około 69 mil. –

+0

Co tylko pokazuje, że jeśli próbujesz reprezentować punkty na kuli ziemskiej, geografia jest właściwym typem danych do użycia (a nie geometrii)! –

Powiązane problemy