2010-06-04 7 views
6

Ich arbeite mit einem geographischen Punkt mit lat/long und muss andere Punkte in unserer Datenbank innerhalb eines 5-Meilen-Radius von diesem Punkt finden. Allerdings kann ich nicht herausfinden, was die "Einheiten" für STBuffer sind, es scheint nicht Fuß, Meilen, Meter, Kilometer usw. zu entsprechen. Die Dokumentation bezieht sich nur auf sie als "Einheiten", irgendwelche Vorschläge ? DankeSQL Server 2008 Geografie .STBuffer() Entfernungsmaßeinheiten

[...] aus Geographie :: STGeomFromText ('POINT (xy)', 4326) .STBuffer (z) .STIntersects (geography :: STGeomFromText ('POINT (' + CAST (v.Longitude als varchar (max)) + '' + CAST (v.Latitude als varchar (max)) + ')', 4326)) = 1

Antwort

5

STBuffer ist in Metern angegeben. More info here.

To, Meilen in Meter, teilen die Anzahl von Meilen von 0,0006213712

(d.h. 5 Meilen/0,0006213712 = 8,046.72 Meter)

+2

Sonderbare der Begriff "Meter" nur im * Beispiel zeigt nach oben *, und nicht in der Beschreibung des 'distance' Parameter. –

+0

Entfernung in der ganzen Welt wird in Meter/Kilometer/etc berechnet. Ich denke, dass nur USA immer noch das imperiale System (Zoll/Fuß/Meilen) verwenden. – Nordes

9

Die Einheit der Messung hängt von der räumlichen Bezugssystem in Gebrauch wandeln. Sehen Sie diese Systemansicht für Details:

SELECT * FROM sys.spatial_reference_systems;

+2

Obwohl die ursprüngliche Frage Geografie angegeben hat, bin ich hier angekommen und suche generell nach STBuffer Maßeinheit (Geometrie oder Geographie). Um jemand anderen zu speichern, der weiter nach Geometrie sucht, ist die Maßeinheit das Koordinatensystem der Geometrie. Also, wenn Sie Lat/Long, Geometrie verwenden. STBuffer (1) wäre 1 ganze Grad, nicht 1 Meter. 1 Grad ist im Vergleich riesig - ungefähr 69 Meilen. –

+0

Das zeigt Ihnen, dass, wenn Sie versuchen, Punkte auf dem Globus darzustellen, Geografie der richtige Datentyp ist (nicht Geometrie)! –