Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SQL Server 2008 : Premiers pas avec les index spatiaux (type geography)

Dans SQL Server 2005 il y a déjà eu des prémices de manipulations de données géographiques (http://blogs.codes-sources.com/christian/archive/2007/04/04/sql-server-2005-spatial-index-ou-comment-requeter-des-points-dans-l-espace-geolocalisation-entre-autres.aspx), dans SQL Server 2008 le support devient complet en supportant non seulement les points, mais aussi des formes (polygones, polylignes, etc.).

A savoir le support de tout ce qui est spatial est décomposé en 2 parties : geometry (support de la géométrie sur plan), geography (support de la géométrie sur une sphère).

Prenons un exemple de table avec le type geography :

CREATE TABLE MaTable
(
    Id int identity(1,1) primary key,
    Localisation geography NOT NULL
)

Puis ensuite utilisons notre générateur de points :

DECLARE @var int

SET @var = 100000

WHILE (@var > 0)
BEGIN

    INSERT INTO MaTable(localisation)
    VALUES(geography::Point((RAND() * 180) - 90, (RAND() * 360) - 180, 4326))

    SET @var -= 1

END

Le nombre 4326 est ici pour distinguer des types de points, imaginer que je peux travailler dans différents espaces ce qui me permet de les distinguer.

Et maintenant requêtons, qui habite à mois de 10km de chez moi ?

DECLARE @loc geography

SET @loc = geography::Point(48.834943,2.244349, 4326)

SELECT Id, localisation.STDistance(@loc) AS distance
FROM MaTable WHERE localisation.STDistance(@loc) < 10000
ORDER BY distance

Et pour améliorer la vitesse de la requête on y ajoute un petit index spatial :

CREATE SPATIAL INDEX Ix_spatial ON MaTable(localisation)

Le tour est joué, et comparez le temps avant et après :o)

Bonne localisation…

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié mardi 4 décembre 2007 19:49 par christian

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 13 heures et 52 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 15 heures et 6 minutes

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le 07-03-2009, 09:56

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le 07-03-2009, 09:00

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 07-03-2009, 08:45

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

- SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53

- EF avec WPF par Matthieu MEZIL le 07-02-2009, 10:18