Trie sur CODE POSTAL [Résolu]

Messages postés
132
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
12 novembre 2019
- - Dernière réponse : f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
- 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
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26
3
Merci
distances entre deux points :

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

soit :

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

merci à Pythagore.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de f0xi
Messages postés
132
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
12 novembre 2019
3
Merci
Bonjour,
Merci Foxi, je vais regarder ca

Beau Temps, Belle Mer

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_eli42
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de f0xi