cs_eli42
Messages postés143Date d'inscriptionmardi 24 décembre 2002StatutMembreDernière intervention11 juillet 2023
-
6 févr. 2010 à 04:04
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 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.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 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.