2010-10-06 14 views
2

J'ai lu quelques articles sur l'utilisation de tables optimisées spatiales. En fait j'utilise la latitude et la longitude stockées comme varchar séparés par des virgules (lat; lng).Besoin de déplacer SQL Server 2005 Table de stockage Lat; Lng comme varchar à Spatial?

Pourriez-vous suggérer la meilleure façon d'effectuer ce changement et énumérer les avantages. C'est vraiment nécessaire pour un grand projet ou seulement passer à SQL Server 2008?

merci.

+0

Je l'ai déjà énuméré quelques options (colonnes calculées, les fonctions définies par l'utilisateur) pour votre situation quand vous avez posé la question ici: [MSSQL de; lng procédure varchar split à utiliser comme Lat et Lng pour la recherche de vitesse] (http : //stackoverflow.com/questions/3873619/mssql-latlng-varchar-split-procedure-to-use-as-lat-and-lng-for-speed-searching/3873892#3873892). –

+0

Les avantages obtenus en stockant vos valeurs lat/long dépendront de la façon dont vous UTILISEZ ces valeurs. Pouvez-vous élaborer sur cela? –

+0

Ces valeurs sont utilisées dans la distance de Haversine aux géopoints de calcule. Joe pourrait vous suggérez le meilleur chemin pour une grande base de données qui préservent la performance. – user325558

Répondre

1

Je voudrais ajouter deux nouveaux persisted computed colunns à votre table comme illustré dans la démo ci-dessous.

create table Demo (
    LatLng varchar(100), 
    Lat as CAST(LEFT(LatLng, charindex(';',LatLng)-1) as float) PERSISTED, 
    Lng as CAST(SUBSTRING(LatLng, charindex(';',LatLng)+1, LEN(LatLng)-charindex(';',LatLng)) as float) PERSISTED 
) 

insert into Demo 
    (LatLng) 
    values 
    ('33.0000;15.222222') 

select * 
    from Demo 

drop table Demo 
+0

Grand Joe, thks. Cette table n'est pas sqlserver2005 optimisée pour la recherche de géométrie. Pourriez-vous expliquer comment déplacer cette solution vers la géométrie optimisée http://mssqlspatial.codeplex.com/wikipage?title=Getting%20Started&referringTitle=Tutorials – user325558

+0

Je suis désolé, mais c'est bien au-delà de la portée d'une simple section de commentaire ici. Je suggère que vous continuiez à Google pour quelques tutoriels et exemples. Puis revenez à SO avec des questions spécifiques sur tout ce qui n'est pas encore clair pour vous. –