Cette question ne devrait pas être un wiki communautaire. Changez si vous le pouvez. De toute façon, voici votre réponse.
@Quassnoi a donné une excellente solution pour SQL 2008, mais vous demandez 2003, n'est-ce pas? 2003 n'a pas le même support géographique que 2008. Vous devrez rouler le vôtre comme je l'ai fait. Ce n'est pas difficile, selon le niveau de précision dont vous avez besoin. Voici une fonction scalaire que je suis venu avec la base d'une formule populaire pour calculer la distance entre deux ensembles de coordonnées:
-- =====================================================================
-- Author: Byron Sommardahl
-- Create date: June 15, 2007
-- Description: Calculates the distance between two sets of coordinates.
-- ======================================================================
CREATE FUNCTION [dbo].[Distance]
(
@lat1 float,
@long1 float,
@lat2 float,
@long2 float
)
RETURNS float
AS
BEGIN
RETURN (3958*3.1415926*sqrt((@[email protected])*(@[email protected]) + cos(@lat2/57.29578)*cos(@lat1/57.29578)*(@[email protected])*(@[email protected]))/180);
END
GO
Pour l'utiliser, nourrir juste dans vos coords en utilisant SELECT:
SELECT dbo.Distance(MyPlace.Lat, MyPlace.Long, TheirPlace.Lat, TheirPlace.Long);
Ensuite, vous pouvez simplement vérifier si un produit est dans un certain rayon de votre point focal. Pas exactement la boîte de délimitation, mais il vous permet d'aller dans la bonne direction.
Je ne pense pas avoir jamais dit cela, mais ce sujet ne devrait pas être un wiki. –
D'accord, ce n'est pas ** un sujet wiki. – casperOne
MS Server 2003 R2 n'existe pas. Et qu'est-ce qu'une recherche de lieu en radians? – VladV