Rechercher le lat le plus proche d'un lat long en entrée (SQL Server 2008)

12

J'ai un nuage de points dans ma base de données (SQL Server 2008 spatial). Cela représente environ 6 millions d'enregistrements. Il y a 3 colonnes: id, valeur, geom. Quelle est la meilleure façon d'obtenir la «valeur» à l'entrée lat longue ??

Je suis nouveau dans les requêtes spatiales dans SQL Server 2008. Quelqu'un peut-il publier un exemple simple de recherche du point dans la colonne geom, correspondant ou le plus proche de l'entrée lat long?

Shaunak
la source
Avez-vous créé un index spatial ?
Kirk Kuykendall
J'ai essayé. Mais il y a 6 millions d'enregistrements et la création d'index échoue pour différentes raisons. J'essaie maintenant de créer une table vierge, d'ajouter un index spatial sur geom puis d'ajouter des données. ça marche?
Shaunak
Quelles erreurs obtenez-vous? Un index peut ralentir beaucoup le chargement, pour autant de lignes, je pense que l'ajout d'un index après le chargement serait beaucoup plus rapide. Les performances dépendront grandement de l'indice, il vaut donc la peine de bien faire les choses.
Kirk Kuykendall le

Réponses:

4

Cela utilise Géographie et non Géométrie (si les données sont Lat / Lng, vos données doivent être de type Géographie et non Géométrie)

«Le type de données géographiques SQL Server stocke des données ellipsoïdales (terre ronde), telles que les coordonnées GPS de latitude et de longitude.»

Pour sélectionner les 5 enregistrements les plus proches à partir d'un point lat / lng (-122.0 37.0) que vous pouvez utiliser.

SELECT   TOP 5
         geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p) 
FROM     markers
WHERE    geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p) < 25
ORDER BY geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p);
Mapperz
la source
Qu'est-ce que p? désolé je suis un nouveau bie c'est pourquoi demander
Shax
DECLARE @p geography
Andrew Hill