2010-06-04 25 views
6

Je travaille avec un point géographique en utilisant lat/long et j'ai besoin de trouver d'autres points dans notre base de données dans un rayon de 5 mile de ce point. Cependant, je n'arrive pas à trouver ce que sont les "unités" pour STBuffer, il ne semble pas se conformer aux pieds, miles, mètres, kilomètres, etc. La documentation ne fait référence qu'à eux comme "unités", à toutes suggestions ? MerciSQL Server 2008 Géographie .STBuffer() unités de mesure de distance

[...] à partir de geography :: STGeomFromText ('POINT (xy)', 4326) .STBuffer (z) .STIntersects (geography :: STGeomFromText ('POINT (' + CAST (v.Longitude comme varchar (max)) + '' + CAST (v.Latitude comme varchar (max)) + ')', 4326)) = 1

Répondre

5

STBuffer est en mètres. More info here.

à convertir, miles de mètres, on divise le nombre de miles par 0,0006213712

(à savoir 5 miles/0.0006213712 = 8,046.72 mètres)

+2

Bizarre le terme « mètre » montre que dans le * exemple *, et non dans la description du paramètre 'distance'. –

+0

Distance tout autour du monde est calculé en Mètres/Kilomètres/etc. Je pense que seuls les Etats-Unis utilisent encore le système impérial (pouce/pied/miles). – Nordes

9

L'unité de mesure dépend du système de référence spatiale en cours d'utilisation. Voir ce point de vue du système pour plus de détails:

SELECT * FROM sys.spatial_reference_systems;

+2

Même si la question initiale spécifiait la géographie, je suis arrivé ici en cherchant généralement l'unité de mesure STBuffer (géométrie ou géographie). Pour sauver quelqu'un d'autre en regardant plus loin, pour la géométrie, l'unité de mesure est le système de coordonnées de la géométrie. Donc, si vous utilisez Lat/Long, geometry.STBuffer (1) serait 1 degré entier, pas 1 mètre. 1 degré est énorme en comparaison - environ 69 miles. –

+0

Ce qui va juste vous montrer que si vous essayez de représenter des points sur le globe, la géographie est le bon type de données à utiliser (pas la géométrie)! –