Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > SQLite
SQLite Forum d'entraide SQLite
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/01/2011, 13h13   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 0
Points : 0
Par défaut sqrt pour geocodage

Bonjour,
je me sers d'une BDD SQLITE gérant des données géographiques avec latitude et longitude.
Je lance une requête me remontant les points par rapport à ma position GPS.
Par contre je n'arrive pas à trier les résultats par ordre de proximité de ma position.
Je voudrais faire
Code :
1
2
3
SELECT latitude, longitude, sqrt((latitude * latitude )+(longitude * longitude )) distance 
FROM matable 
ORDER BY distance;
mais pas de fonction SQRT sous sqlite
ni non plus d'exposant du type :
Code :
1
2
3
SELECT latitude, longitude, ((latitude * latitude )+(longitude * longitude )) ** 0.5 distance 
FROM matable 
ORDER BY distance;
Une idée pour réaliser cette requête ?
Merci d'avance

Vince
vince_38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 13h24   #2
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 0
Points : 0
Par défaut Correctif

En fait il faut lire :
Code :
1
2
3
SELECT latitude, longitude, sqrt(((malatitude-latitude) * (malatitude-latitude ))+((malongitude-longitude) *( malongitude-longitude ))) distance 
FROM matable 
ORDER BY distance;
Avec malatitude et malongitude étant mes données de localisation GPS

Ceci pour une application à réaliser sous ANDROID

Merci de vos retours.
vince_38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 15h57   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 0
Points : 0
Par défaut [RESOLU] Réponse trouvé

Bonjour,
En fait je suis pas très futé car ce n'est pas la distance qui m'intéresse mais juste l'ordre de tri des résultats par distance croissante en regard de ma position.
Donc le simple calcul sans la racine carré me suffit amplement !!

Voila ce que j'ai testé sous sqllitebrowser :
valorisation de données fictives
Code :
1
2
3
4
5
6
7
8
9
10
INSERT INTO matable ( latitude, longitude ) VALUES ( 1, 2 );
INSERT INTO matable ( latitude, longitude ) VALUES ( 1, 3 );
INSERT INTO matable ( latitude, longitude ) VALUES ( 1, 4 );
INSERT INTO matable ( latitude, longitude ) VALUES ( 2, 1 );
INSERT INTO matable ( latitude, longitude ) VALUES ( 2, 2 );
INSERT INTO matable ( latitude, longitude ) VALUES ( 2, 3 );
INSERT INTO matable ( latitude, longitude ) VALUES ( 2, 4 );
INSERT INTO matable ( latitude, longitude ) VALUES ( 3, 1 );
INSERT INTO matable ( latitude, longitude ) VALUES ( 3, 2 );
INSERT INTO matable ( latitude, longitude ) VALUES ( 3, 3 );
Test de la remontée d'onformations :
hypothese je suis en 3, 2
Code :
1
2
3
4
5
SELECT latitude, longitude FROM matable;
 
SELECT latitude, longitude ,((latitude -3) * (latitude - 3)) + ((longitude -2) * (longitude -2) ) distance 
FROM matable 
ORDER BY distance;
resultat :
3 2 0
2 2 1
3 1 1
3 3 1
2 1 2
2 3 2
1 2 4
1 3 5
2 4 5
1 4 8

hypothese je suis en 0, 0
Code :
SELECT latitude, longitude ,((latitude -0) * (latitude - 0)) + ((longitude -0) * (longitude -0) ) distance FROM matable ORDER BY distance;
resultat :
1 2 5
2 1 5
2 2 8
1 3 10
3 1 10
2 3 13
3 2 13
1 4 17
3 3 18
2 4 20

Si cela peut en aider certains !

En fait le fait de formuler ma demande m'a donné la solution !

Merci à tous

Vince
vince_38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 10h46   #4
Invité de passage
 
Inscription : juin 2011
Messages : 1
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 1
Points : 1
Points : 1
Citation:
Envoyé par vince_38 Voir le message
Si cela peut en aider certains !
En fait le fait de formuler ma demande m'a donné la solution !

Merci à tous
Je me suis inscris sur le forum juste pour te dire que tu es un génie
Tu m’enlèves un belle épine du pied !!


Merci à toi.
alesc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h25.


 
 
 
 
Partenaires

Hébergement Web