Trie sur CODE POSTAL

Résolu
cs_eli42 Messages postés 143 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 juillet 2023 - 6 févr. 2010 à 04:04
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 8 févr. 2010 à 01:47
Bonjour,

Voila je dois sélectionner des code Postaux sur une distance environ de 10 km à vol d'oiseau par rapport
A une saisie de l'utilisateur, la table ce compose de:
Code Postal
Ville
Latitude reconverti en Integer
Longitude reconverti en Integer

Pour l'instant je filtre sur un Carré avec :
//------------------------------------------------------------------------------
CP.Open;
CP.Filter := '';
CP.Locate('NFICHE', ORE1.Text, []); // NFiche=Code Postal, ORE1.Text=Saisie
X := CP.FieldByName('POSX').AsFloat; // Latitude
Y := CP.FieldByName('POSY').AsFloat; // Longitude
//------------------------------------------------------------------------------
CP.Filter :=
'(POSX>=''' + FloatToStr(X - 2000) + ''')' // Filtrer Latitude
+ ' And (POSX<=''' + FloatToStr(X + 2000) + ''')' // Filtrer Latitude
+ ' AND (POSY>=''' + FloatToStr(Y - 3000) + ''')' // Filtrer Longitude
+ ' And (POSY<=''' + FloatToStr(Y + 3000) + ''')'; // Filtrer Longitude
//------------------------------------------------------------------------------

Voila mon blême, le résultat est donc un Carré, et je n'arrive pas à faire une sélection en cercle ce qui logiquement devrait réduire considérablement le résultat d'enregistrement.

Si un passant a une idée fraiche...

Beau Temp, Belle Mer.
Georges

3 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
7 févr. 2010 à 00:34
distances entre deux points :

D² = (Ax - Bx)² + (Ay - By)²;

soit :

D = sqrt( sqr(Ax - Bx) + sqr(Ay - By));

merci à Pythagore.
3
cs_eli42 Messages postés 143 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 juillet 2023 1
7 févr. 2010 à 15:46
Bonjour,
Merci Foxi, je vais regarder ca

Beau Temps, Belle Mer
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
8 févr. 2010 à 01:47
par contre, faire une selection carré en premier et faire le test sur les points restant, il ne faudrait pas trop appeler SQRT et SQR trop souvent non plus.
3
Rejoignez-nous