Question

Groupe

Je colonnes de table ProductID, latitude,longitude,timestampGMT et la recherche d'une requête pour compter le nombre de numéros d'identification sont dans ce cadre de sélection ou enveloppe.

Toutes les suggestions utiles.

Était-ce utile?

La solution

SQL Server 2008 soutient type de données GEOGRAPHY.

Vous devez stocker lat, lon dans une seule colonne de ce type de données, créer un index de SPATIAL dessus et l'utiliser dans une requête:

SELECT  m.*
FROM    mytable
ON      coords.STDistance(@mypoint) <= @mydistance

Autres conseils

Vous cherchez la formule de distance « orthodromique »

http://www.sqlteam.com/forums/topic.asp ? topic_id = 81360

Pourquoi devriez-vous indiquer l'algorithme SQL correcte

Cette question ne devrait pas être un wiki communautaire. Mettez si vous le pouvez. De toute façon, voici votre réponse.

@Quassnoi a donné une excellente solution pour SQL 2008, mais vous demandez pour 2003, non? 2003 n'a pas le même soutien que la géographie 2008. Vous devrez rouler votre propre comme je l'ai fait. Il n'est pas difficile, selon le niveau de précision dont vous avez besoin. Voici une fonction scalaire que je suis venu avec 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((@lat2-@lat1)*(@lat2-@lat1) + cos(@lat2/57.29578)*cos(@lat1/57.29578)*(@long2-@long1)*(@long2-@long1))/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 boîte englobante, mais il vous fait bouger dans la bonne direction.

Vous pouvez également jeter un oeil à ceci:

SQL Server ZipCode Latitude Longitude proximité Distance Recherche

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top