je suis en train de tester google maps, et je cherche à afficher des
points présent dans ma base de donnée dans un rayon de x km
autour d'un autre point ( pour simplifier, les bureaux de poste les plus
près de chez moi, sachant que j'ai une bdd avec les bureaux géocodés)
mes géo-connaissances étant très limitées, une ame charitable
pourrait-elle m''aiguiller ? ( calcul de distance, algorithme de
recherche ...)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Roumégou Eric
phig a exprimé avec précision :
bonjour.
je suis en train de tester google maps, et je cherche à afficher des points présent dans ma base de donnée dans un rayon de x km autour d'un autre point ( pour simplifier, les bureaux de poste les plus près de chez moi, sachant que j'ai une bdd avec les bureaux géocodés)
mes géo-connaissances étant très limitées, une ame charitable pourrait-elle m''aiguiller ? ( calcul de distance, algorithme de recherche ...)
wclausein,chOrder est chaîne wch=Rtv_CoordXY(CDP,"") PPL_POSX=ExtraitChaîne(wch,1) PPL_POSY=ExtraitChaîne(wch,2) ville=ExtraitChaîne(wch,3) SI B1_NB=0 ALORS Erreur("Ce nombre doit être égal ou supérieur à 1") RepriseSaisie(B1_NB) FIN
SI PPL_POSX=0 ALORS Erreur("Les coordonnées de positionnement ne sont pas disponibles"+RC+"Opération impossible") RETOUR FIN wclausein=Remplace(LePlusProche(LVL_ID,PPL_POSX,PPL_POSY,B1_NB),TAB,",") chOrder="SQRT(POWER("+PPL_POSX+"- PEOPLE.PPL_POSX,2)+POWER("+PPL_POSY+" - PEOPLE.PPL_POSY,2))" Ouvre(PEOPLE_TAB,"PEOPLE.LVL_ID="+LVL_ID+" AND PEOPLE.PPL_ID IN("+wclausein+")",LVL_DESC+" plus proches de "+CDP+" "+ville,Vrai,"",chOrder) Ferme
// renvoie le PPL_ID des pNb individus d'une population pLvl_id les plus proches en fn des coordonnées X et Y // si pNb<>1 alors les PPL_ID sont séparés par des TAB lCurReq est un entier commande est chaîne chretour est chaîne
commande="SELECT PPL_ID FROM PEOPLE "+... " WHERE LVL_ID="+pLvl_id+" AND SQRT(POWER("+pX+"- PPL_POSX,2)+POWER("+pY+" - PPL_POSY,2)) IS NOT NULL " SI pFiltre<>"" ALORS commande+=" AND "+pFiltre commande+=" ORDER BY SQRT(POWER("+pX+"- PPL_POSX,2)+POWER("+pY+" - PPL_POSY,2))" commande+=" LIMIT 0,"+pNb chretour=""
lCurReq=2 SI fSQL:mySQLExec(commande,lCurReq) fSQL:mySQLPremier(lCurReq) TANTQUE PAS fSQL:mySQLEnDehors chretour+=fSQL:mySQLCol(lCurReq,1)+TAB fSQL:mysqlsuivant(lCurReq) FIN SINON fSQL:mySQLMsgBox(commande) FIN fSQL:mySQLFerme(lCurReq) RENVOYER TronqueDernierCaractere(chretour)
c'est du pythagore. tu prends les occurrences dont la racine carré((posx1-posx2)²+ posy1-posy2)²) est la plus faible.
dans mon exemple, je pars d'un point précis et je passe mon filtre (c du mysql) avec ma variable ppl_posx et ma variable ppl_posy que je connais (c'est celle de mon point de référence) et les posx,posy de la base. Ensuite un LIMIT n, et j'ai les n plus proches de mon point.
-- Eric Roumégou Webmaster des wtablettes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour me contacter en privé)
phig a exprimé avec précision :
bonjour.
je suis en train de tester google maps, et je cherche à afficher des points
présent dans ma base de donnée dans un rayon de x km
autour d'un autre point ( pour simplifier, les bureaux de poste les plus près
de chez moi, sachant que j'ai une bdd avec les bureaux géocodés)
mes géo-connaissances étant très limitées, une ame charitable pourrait-elle
m''aiguiller ? ( calcul de distance, algorithme de recherche ...)
wclausein,chOrder est chaîne
wch=Rtv_CoordXY(CDP,"")
PPL_POSX=ExtraitChaîne(wch,1)
PPL_POSY=ExtraitChaîne(wch,2)
ville=ExtraitChaîne(wch,3)
SI B1_NB=0 ALORS
Erreur("Ce nombre doit être égal ou supérieur à 1")
RepriseSaisie(B1_NB)
FIN
SI PPL_POSX=0 ALORS
Erreur("Les coordonnées de positionnement ne sont pas
disponibles"+RC+"Opération impossible")
RETOUR
FIN
wclausein=Remplace(LePlusProche(LVL_ID,PPL_POSX,PPL_POSY,B1_NB),TAB,",")
chOrder="SQRT(POWER("+PPL_POSX+"- PEOPLE.PPL_POSX,2)+POWER("+PPL_POSY+"
- PEOPLE.PPL_POSY,2))"
Ouvre(PEOPLE_TAB,"PEOPLE.LVL_ID="+LVL_ID+" AND PEOPLE.PPL_ID
IN("+wclausein+")",LVL_DESC+" plus proches de "+CDP+"
"+ville,Vrai,"",chOrder)
Ferme
// renvoie le PPL_ID des pNb individus d'une population pLvl_id les
plus proches en fn des coordonnées X et Y
// si pNb<>1 alors les PPL_ID sont séparés par des TAB
lCurReq est un entier
commande est chaîne
chretour est chaîne
commande="SELECT PPL_ID FROM PEOPLE "+...
" WHERE LVL_ID="+pLvl_id+" AND SQRT(POWER("+pX+"-
PPL_POSX,2)+POWER("+pY+" - PPL_POSY,2)) IS NOT NULL "
SI pFiltre<>"" ALORS commande+=" AND "+pFiltre
commande+=" ORDER BY SQRT(POWER("+pX+"- PPL_POSX,2)+POWER("+pY+" -
PPL_POSY,2))"
commande+=" LIMIT 0,"+pNb
chretour=""
lCurReq=2
SI fSQL:mySQLExec(commande,lCurReq)
fSQL:mySQLPremier(lCurReq)
TANTQUE PAS fSQL:mySQLEnDehors
chretour+=fSQL:mySQLCol(lCurReq,1)+TAB
fSQL:mysqlsuivant(lCurReq)
FIN
SINON
fSQL:mySQLMsgBox(commande)
FIN
fSQL:mySQLFerme(lCurReq)
RENVOYER TronqueDernierCaractere(chretour)
c'est du pythagore.
tu prends les occurrences dont la racine carré((posx1-posx2)²+
posy1-posy2)²) est la plus faible.
dans mon exemple, je pars d'un point précis et je passe mon filtre (c
du mysql) avec ma variable ppl_posx et ma variable ppl_posy que je
connais (c'est celle de mon point de référence) et les posx,posy de la
base.
Ensuite un LIMIT n, et j'ai les n plus proches de mon point.
--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
je suis en train de tester google maps, et je cherche à afficher des points présent dans ma base de donnée dans un rayon de x km autour d'un autre point ( pour simplifier, les bureaux de poste les plus près de chez moi, sachant que j'ai une bdd avec les bureaux géocodés)
mes géo-connaissances étant très limitées, une ame charitable pourrait-elle m''aiguiller ? ( calcul de distance, algorithme de recherche ...)
wclausein,chOrder est chaîne wch=Rtv_CoordXY(CDP,"") PPL_POSX=ExtraitChaîne(wch,1) PPL_POSY=ExtraitChaîne(wch,2) ville=ExtraitChaîne(wch,3) SI B1_NB=0 ALORS Erreur("Ce nombre doit être égal ou supérieur à 1") RepriseSaisie(B1_NB) FIN
SI PPL_POSX=0 ALORS Erreur("Les coordonnées de positionnement ne sont pas disponibles"+RC+"Opération impossible") RETOUR FIN wclausein=Remplace(LePlusProche(LVL_ID,PPL_POSX,PPL_POSY,B1_NB),TAB,",") chOrder="SQRT(POWER("+PPL_POSX+"- PEOPLE.PPL_POSX,2)+POWER("+PPL_POSY+" - PEOPLE.PPL_POSY,2))" Ouvre(PEOPLE_TAB,"PEOPLE.LVL_ID="+LVL_ID+" AND PEOPLE.PPL_ID IN("+wclausein+")",LVL_DESC+" plus proches de "+CDP+" "+ville,Vrai,"",chOrder) Ferme
// renvoie le PPL_ID des pNb individus d'une population pLvl_id les plus proches en fn des coordonnées X et Y // si pNb<>1 alors les PPL_ID sont séparés par des TAB lCurReq est un entier commande est chaîne chretour est chaîne
commande="SELECT PPL_ID FROM PEOPLE "+... " WHERE LVL_ID="+pLvl_id+" AND SQRT(POWER("+pX+"- PPL_POSX,2)+POWER("+pY+" - PPL_POSY,2)) IS NOT NULL " SI pFiltre<>"" ALORS commande+=" AND "+pFiltre commande+=" ORDER BY SQRT(POWER("+pX+"- PPL_POSX,2)+POWER("+pY+" - PPL_POSY,2))" commande+=" LIMIT 0,"+pNb chretour=""
lCurReq=2 SI fSQL:mySQLExec(commande,lCurReq) fSQL:mySQLPremier(lCurReq) TANTQUE PAS fSQL:mySQLEnDehors chretour+=fSQL:mySQLCol(lCurReq,1)+TAB fSQL:mysqlsuivant(lCurReq) FIN SINON fSQL:mySQLMsgBox(commande) FIN fSQL:mySQLFerme(lCurReq) RENVOYER TronqueDernierCaractere(chretour)
c'est du pythagore. tu prends les occurrences dont la racine carré((posx1-posx2)²+ posy1-posy2)²) est la plus faible.
dans mon exemple, je pars d'un point précis et je passe mon filtre (c du mysql) avec ma variable ppl_posx et ma variable ppl_posy que je connais (c'est celle de mon point de référence) et les posx,posy de la base. Ensuite un LIMIT n, et j'ai les n plus proches de mon point.
-- Eric Roumégou Webmaster des wtablettes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour me contacter en privé)
MiF
Bonjour,
Vous trouverez un exemple dans ce projet sur l'orthodromie : http://forum.pcsoft.fr/thread.awp?postid1429
Michel Fages
On 10 août, 08:58, phig wrote:
bonjour.
je suis en train de tester google maps, et je cherche à afficher des points présent dans ma base de donnée dans un rayon de x km autour d'un autre point ( pour simplifier, les bureaux de poste les plus près de chez moi, sachant que j'ai une bdd avec les bureaux géocodé s)
mes géo-connaissances étant très limitées, une ame charitable pourrait-elle m''aiguiller ? ( calcul de distance, algorithme de recherche ...)
Bonjour,
Vous trouverez un exemple dans ce projet sur l'orthodromie :
http://forum.pcsoft.fr/thread.awp?postid=171429
Michel Fages
On 10 août, 08:58, phig <p...@free.fr> wrote:
bonjour.
je suis en train de tester google maps, et je cherche à afficher des
points présent dans ma base de donnée dans un rayon de x km
autour d'un autre point ( pour simplifier, les bureaux de poste les plus
près de chez moi, sachant que j'ai une bdd avec les bureaux géocodé s)
mes géo-connaissances étant très limitées, une ame charitable
pourrait-elle m''aiguiller ? ( calcul de distance, algorithme de
recherche ...)
Vous trouverez un exemple dans ce projet sur l'orthodromie : http://forum.pcsoft.fr/thread.awp?postid1429
Michel Fages
On 10 août, 08:58, phig wrote:
bonjour.
je suis en train de tester google maps, et je cherche à afficher des points présent dans ma base de donnée dans un rayon de x km autour d'un autre point ( pour simplifier, les bureaux de poste les plus près de chez moi, sachant que j'ai une bdd avec les bureaux géocodé s)
mes géo-connaissances étant très limitées, une ame charitable pourrait-elle m''aiguiller ? ( calcul de distance, algorithme de recherche ...)
phig
MiF a écrit :
Bonjour,
Vous trouverez un exemple dans ce projet sur l'orthodromie : http://forum.pcsoft.fr/thread.awp?postid1429
Michel Fages
On 10 août, 08:58, phig wrote:
bonjour.
je suis en train de tester google maps, et je cherche à afficher des points présent dans ma base de donnée dans un rayon de x km autour d'un autre point ( pour simplifier, les bureaux de poste les plus près de chez moi, sachant que j'ai une bdd avec les bureaux géocodés)
mes géo-connaissances étant très limitées, une ame charitable pourrait-elle m''aiguiller ? ( calcul de distance, algorithme de recherche ...)
u
merci a tous les deux, j'ai fini par adapter une requete sql trouvée sur sqlfr:
[code] local sReqdist est une chaine centre_xy est une source de données
sReqdist="select 6366*acos(cos(WL.conversion(%1,'degree','radian'))*cos(WL.conversion(centre.lat,'degree','radian'))*cos(WL.conversion(centre.long,'degree','radian')-WL.conversion(%2,'degree','radian'))+sin(WL.conversion(%1,'degree','radian'))*sin(WL.conversion(centre.lat,'degree','radian'))) as distance,nom,adresse1,adresse2,ville,cp,tel,codecentre,long,lat from centre where distance<%3"
TableauSupprimeTout(gtabCentre)
SI HExécuteRequêteSQL(centre_xy,hRequêteDéfaut+hModifieFichier,ChaîneConstruit(sReqdist,rlata,rlonga,25)) ALORS pour tout centre_xy //snip fin [code]
ou rlata et rlonga sont les latitude/longitude du centre, les distances étant exprimée en km. 6366 étant la moyenne du rayon de la terre en km. on doit pouvoir faire plus précis, je regarderai le projet othodromie quand j'aurai un peu de temps ...
MiF a écrit :
Bonjour,
Vous trouverez un exemple dans ce projet sur l'orthodromie :
http://forum.pcsoft.fr/thread.awp?postid1429
Michel Fages
On 10 août, 08:58, phig <p...@free.fr> wrote:
bonjour.
je suis en train de tester google maps, et je cherche à afficher des
points présent dans ma base de donnée dans un rayon de x km
autour d'un autre point ( pour simplifier, les bureaux de poste les plus
près de chez moi, sachant que j'ai une bdd avec les bureaux géocodés)
mes géo-connaissances étant très limitées, une ame charitable
pourrait-elle m''aiguiller ? ( calcul de distance, algorithme de
recherche ...)
u
merci a tous les deux, j'ai fini par adapter une requete sql trouvée sur
sqlfr:
[code]
local
sReqdist est une chaine
centre_xy est une source de données
sReqdist="select
6366*acos(cos(WL.conversion(%1,'degree','radian'))*cos(WL.conversion(centre.lat,'degree','radian'))*cos(WL.conversion(centre.long,'degree','radian')-WL.conversion(%2,'degree','radian'))+sin(WL.conversion(%1,'degree','radian'))*sin(WL.conversion(centre.lat,'degree','radian')))
as distance,nom,adresse1,adresse2,ville,cp,tel,codecentre,long,lat from
centre where distance<%3"
TableauSupprimeTout(gtabCentre)
SI
HExécuteRequêteSQL(centre_xy,hRequêteDéfaut+hModifieFichier,ChaîneConstruit(sReqdist,rlata,rlonga,25))
ALORS
pour tout centre_xy
//snip
fin
[code]
ou rlata et rlonga sont les latitude/longitude du centre, les distances
étant exprimée en km. 6366 étant la moyenne du rayon de la terre en km.
on doit pouvoir faire plus précis, je regarderai le projet othodromie
quand j'aurai un peu de temps ...
Vous trouverez un exemple dans ce projet sur l'orthodromie : http://forum.pcsoft.fr/thread.awp?postid1429
Michel Fages
On 10 août, 08:58, phig wrote:
bonjour.
je suis en train de tester google maps, et je cherche à afficher des points présent dans ma base de donnée dans un rayon de x km autour d'un autre point ( pour simplifier, les bureaux de poste les plus près de chez moi, sachant que j'ai une bdd avec les bureaux géocodés)
mes géo-connaissances étant très limitées, une ame charitable pourrait-elle m''aiguiller ? ( calcul de distance, algorithme de recherche ...)
u
merci a tous les deux, j'ai fini par adapter une requete sql trouvée sur sqlfr:
[code] local sReqdist est une chaine centre_xy est une source de données
sReqdist="select 6366*acos(cos(WL.conversion(%1,'degree','radian'))*cos(WL.conversion(centre.lat,'degree','radian'))*cos(WL.conversion(centre.long,'degree','radian')-WL.conversion(%2,'degree','radian'))+sin(WL.conversion(%1,'degree','radian'))*sin(WL.conversion(centre.lat,'degree','radian'))) as distance,nom,adresse1,adresse2,ville,cp,tel,codecentre,long,lat from centre where distance<%3"
TableauSupprimeTout(gtabCentre)
SI HExécuteRequêteSQL(centre_xy,hRequêteDéfaut+hModifieFichier,ChaîneConstruit(sReqdist,rlata,rlonga,25)) ALORS pour tout centre_xy //snip fin [code]
ou rlata et rlonga sont les latitude/longitude du centre, les distances étant exprimée en km. 6366 étant la moyenne du rayon de la terre en km. on doit pouvoir faire plus précis, je regarderai le projet othodromie quand j'aurai un peu de temps ...