Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

WD - geolocalisation et distances

3 réponses
Avatar
titou44
bonjour

encore une nouvelle demande de mon client technophile

peut-on simplement en connnaisant une adresse avoir la liste des villes
dans un périmètre de n km ?

ou autre approche : j'ai 2 adresses, comment connaitre la distance
entre les 2 adresses ?

merci par avance ?

titou44 chez libresurf.com

ps : wd15

3 réponses

Avatar
Pouet Pouet
bonjour

La première question m'intéresse vivement.

La deuxième question, quant à elle, est "solutionnable" par exemple en s'inspirant de ce site :
http://www.touraineverte.com/
Avatar
phig
Le 22/09/2013 21:43, titou44 a écrit :
bonjour

encore une nouvelle demande de mon client technophile

peut-on simplement en connnaisant une adresse avoir la liste des villes
dans un périmètre de n km ?

ou autre approche : j'ai 2 adresses, comment connaitre la distance entre
les 2 adresses ?

merci par avance ?

titou44 chez libresurf.com

ps : wd15




Le 22/09/2013 21:43, titou44 a écrit :> bonjour

encore une nouvelle demande de mon client technophile

peut-on simplement en connnaisant une adresse avoir la liste des villes
dans un périmètre de n km ?

ou autre approche : j'ai 2 adresses, comment connaitre la distance entre
les 2 adresses ?

merci par avance ?

titou44 chez libresurf.com

ps : wd15





salut.
deux solutions:
1 géocoder les deux adresses et utiliser une formule de calcul
( la formule de calcul de distance est dans la requete dessous)
je te donne ma vieille fonction de géocodage Google adaptée en API v2:

PROCEDURE geocode(sadr1,sadr2,scp, sville)
LOCAL
sstatus,s,s2,sSreq,sSxml est une chaîne
rrlat,rrlong est un réel
sadr1=SansEspace(sadr1)
sadr2=SansEspace(sadr2)
SI Val(scp)<>0 ALORS
scp=NumériqueVersChaîne(Val(scp),"05d")
FIN

s=URLEncode(Remplace(sadr1," ","+")+iif(sadr2<>"","+"+Remplace(sadr2,"
","+"),"")+iif(sadr1+sadr2<>"",",","")+SansEspace(scp)+","+Remplace(Remplace(SansEspace(sville),"
","+"),"-","+")+",France")


//ssreq="http://maps.google.com/maps/geo?q="+s+"&output=csv&oe=utf8&sensorúlse&key="+Gsggkey
sSreq="http://maps.googleapis.com/maps/api/geocode/xml?address="+s+"&output=xml&sensorúlse&region=fr&quot;
SI HTTPRequête(sSreq) ALORS
s2=HTTPDonneRésultat(httpRésultat)
SI XMLDocument("sxml",s2) ALORS
sstatus=XMLLit("sxml","/GeocodeResponse/status")
SI sstatus="OK" ALORS

rrlat=Val(XMLLit("sxml","/GeocodeResponse/result/geometry/location/lat" ))

rrlong=Val(XMLLit("sxml","/GeocodeResponse/result/geometry/location/lng") )

FIN
XMLTermine("sxml")
SINON
//erreur("Requete Maps impossible",ssreq)
s2=HTTPDonneRésultat(httpEntête)
sstatus="ERR XML "+sSreq+CR+s2
FIN
FIN

// gsgoogle+=s2+tab

RENVOYER(rrlat+TAB+rrlong+TAB+sstatus)

ca existe en natif dans WD je crois, mais c'est moins éducatif :)



2 - stocker les geocodes de villes ( ou de client) ans une bdd ( celle
des communes dans mon cas) et une requete sql de recherche.

sReqdist=ChaîneConstruit("select
%3*acos(cos(WL.conversion(%1,'degree','radian'))*cos(WL.conversion(commune.gglat,'degree','radian'))*cos(WL.conversion(commune.gglong,'degree','radian')-WL.conversion(%2,'degree','radian'))+sin(WL.conversion(%1,'degree','radian'))*sin(WL.conversion(commune.gglat,'degree','radian')))
as distance,nom,adresse1,adresse2,ville,cp,tel,commune,gglong,gglat from
commune where distance<%4 order by distance
asc",rlata,rlonga,rayonterre,rayonkm)


ou :
- rayonterre est une constante (~c67.445 pour Bordeaux , ca varie
selon le //)
- rayon km est le rayon de recherche
- rlata,rlonga sont les coordonnées du centre de la recherche


hope this help ;)
Avatar
Eric H.
Le 22/09/2013, titou44 a supposé :
bonjour

encore une nouvelle demande de mon client technophile

peut-on simplement en connnaisant une adresse avoir la liste des villes dans
un périmètre de n km ?

ou autre approche : j'ai 2 adresses, comment connaitre la distance entre les
2 adresses ?

merci par avance ?

titou44 chez libresurf.com

ps : wd15



Salut,

Va voir le projet Orthdromie !

@+