GIS 4 point libre et distance vers point fixe

Bonjour,

Je n'arrive pas à afficher la distance entre un point libre et un point fixe avec GIS 4 . J'ai pourtant lu et relu, peut être pas suffisamment mais voilà si j'applique cette boucle copié sur contrib j'ai l'id, le titre mais pas la distance:
<BOUCLE_c(GIS){distancefrom #ARRAY{lat,#ENV{glat},lon,#ENV{glon}}, <=, #ENV{dist}}>
     <p>#ID_GIS / #TITRE / #DISTANCE km</p>
     </BOUCLE_c>
Il faut savoir que je récupère glat et glon depuis le point libre (dans l'url)
Ensuite j'ai appliqué ce qui est recommandé sur cette page: https://contrib.spip.net/Tutoriel-GIS-et-la-mobilite
La fonction php me retourne une page blanche!
Je sèche..
Avez vous un fil conducteur à me proposer, voir même une information qui m'aurait échappé?
Merci!

Je reviens à ma question qui ne semble pas inspirer grand monde.
Je reprends donc les coordonnées de mon point libre GIS. J'ai bien vérifié le contenu des #ENV qui retournent le glat et glon du point libre, la distance également. Un simple boucle data de l'array me donne bien:
lat 48.8252998 lon 3.4037566 <= 100
La boucle gis ci dessous me retourne
1 / Montmirail / 48.8703607224138 /3.5381555557251/ km
Soit bien les coordonnées du point fixe le plus proche mais aucune distance!

Je bloque sérieusement là dessus depuis plusieurs jours et un coup de main serait bien venu car je suis paumé et je me demande si c'est faisable simplement comme je le fais?

Le 15/06/2017 à 09:52, Bernard Blazin a écrit :

Bonjour,

Je n'arrive pas à afficher la distance entre un point libre et un point fixe avec GIS 4 . J'ai pourtant lu et relu, peut être pas suffisamment mais voilà si j'applique cette boucle copié sur contrib j'ai l'id, le titre mais pas la distance:
<BOUCLE_c(GIS){distancefrom #ARRAY{lat,#ENV{glat},lon,#ENV{glon}}, <=, #ENV{dist}}>
    <p>#ID_GIS / #TITRE / #DISTANCE km</p>
    </BOUCLE_c>
Il faut savoir que je récupère glat et glon depuis le point libre (dans l'url)
Ensuite j'ai appliqué ce qui est recommandé sur cette page: Tutoriel : GIS et la mobilité - SPIP-Contrib
La fonction php me retourne une page blanche!
Je sèche..
Avez vous un fil conducteur à me proposer, voir même une information qui m'aurait échappé?
Merci!

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Bonjour,
Si j'ai bien compris ce qui est décrit dans :
Tutoriel : GIS et la mobilité - SPIP-Contrib, la distance est un
rayon qui donne tous les points géolocalisés dans ce rayon.
Et toi ce que tu cherches c'est la distance entre deux points ?
Si oui, je ne suis pas surpris que tu ne trouvent pas ce que tu cherches.
Donc à partir des coordonnées de ton point libre et de celles de ton point
fixe, il faut faire un petit calcul de trigonométrie/géométrie pour avoir la
distance entre les deux points.
Soit le point libre X1,Y1 et le point fixe X2,Y2, la distance est racine
carrée ( (X2-X1)au carré +(Y2-Y1)au carré) un petite fonction en php à
appeler à chaque fois que besoin.
A+
Sylvain Le Doaré

-----Message d'origine-----
De : Bernard Blazin [mailto:bernard.blazin@free.fr]
Envoyé : samedi 17 juin 2017 11:17
À : SPIP <spip@rezo.net>
Objet : Re: [Spip] GIS 4 point libre et distance vers point fixe

Je reviens à ma question qui ne semble pas inspirer grand monde.
Je reprends donc les coordonnées de mon point libre GIS. J'ai bien vérifié
le contenu des #ENV qui retournent le glat et glon du point libre, la
distance également. Un simple boucle data de l'array me donne
bien:
lat 48.8252998 lon 3.4037566 <= 100
La boucle gis ci dessous me retourne
1 / Montmirail / 48.8703607224138 /3.5381555557251/ km Soit bien les
coordonnées du point fixe le plus proche mais aucune distance!

Je bloque sérieusement là dessus depuis plusieurs jours et un coup de main
serait bien venu car je suis paumé et je me demande si c'est faisable
simplement comme je le fais?

Le 15/06/2017 à 09:52, Bernard Blazin a écrit :

Bonjour,

Je n'arrive pas à afficher la distance entre un point libre et un
point fixe avec GIS 4 . J'ai pourtant lu et relu, peut être pas
suffisamment mais voilà si j'applique cette boucle copié sur contrib
j'ai l'id, le titre mais pas la distance:
<BOUCLE_c(GIS){distancefrom #ARRAY{lat,#ENV{glat},lon,#ENV{glon}}, <=,
#ENV{dist}}>
    <p>#ID_GIS / #TITRE / #DISTANCE km</p>
    </BOUCLE_c>
Il faut savoir que je récupère glat et glon depuis le point libre
(dans l'url) Ensuite j'ai appliqué ce qui est recommandé sur cette
page:
Tutoriel : GIS et la mobilité - SPIP-Contrib
La fonction php me retourne une page blanche!
Je sèche..
Avez vous un fil conducteur à me proposer, voir même une information
qui m'aurait échappé?
Merci!

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Bonsoir,

Je me doutais bien que géométriquement parlant ce devait être possible mais de là à mettre la formule en php c'est une autre paire de manches..
Très grossièrement ça devrait donner un truc comme ça non?
$km = sqrt (($glat - $glon)pow(2) + ($lat - $lon)pow(2))
Est ce que cette fonction existe quelque part?
Désolé, je suis gourmand, mais je ne vois pas trop comment me lancer.
Par contre grand merci Sylvain pour ta piste et ton aide.
Bernard

Le 22/06/2017 à 09:26, papounet.net@laposte.net a écrit :

Bonjour,
Si j'ai bien compris ce qui est décrit dans :
Tutoriel : GIS et la mobilité - SPIP-Contrib, la distance est un
rayon qui donne tous les points géolocalisés dans ce rayon.
Et toi ce que tu cherches c'est la distance entre deux points ?
Si oui, je ne suis pas surpris que tu ne trouvent pas ce que tu cherches.
Donc à partir des coordonnées de ton point libre et de celles de ton point
fixe, il faut faire un petit calcul de trigonométrie/géométrie pour avoir la
distance entre les deux points.
Soit le point libre X1,Y1 et le point fixe X2,Y2, la distance est racine
carrée ( (X2-X1)au carré +(Y2-Y1)au carré) un petite fonction en php à
appeler à chaque fois que besoin.
A+
Sylvain Le Doaré

-----Message d'origine-----
De : Bernard Blazin [mailto:bernard.blazin@free.fr]
Envoyé : samedi 17 juin 2017 11:17
À : SPIP <spip@rezo.net>
Objet : Re: [Spip] GIS 4 point libre et distance vers point fixe

Je reviens à ma question qui ne semble pas inspirer grand monde.
Je reprends donc les coordonnées de mon point libre GIS. J'ai bien vérifié
le contenu des #ENV qui retournent le glat et glon du point libre, la
distance également. Un simple boucle data de l'array me donne
bien:
lat 48.8252998 lon 3.4037566 <= 100
La boucle gis ci dessous me retourne
1 / Montmirail / 48.8703607224138 /3.5381555557251/ km Soit bien les
coordonnées du point fixe le plus proche mais aucune distance!

Je bloque sérieusement là dessus depuis plusieurs jours et un coup de main
serait bien venu car je suis paumé et je me demande si c'est faisable
simplement comme je le fais?

Le 15/06/2017 à 09:52, Bernard Blazin a écrit :

Bonjour,

Je n'arrive pas à afficher la distance entre un point libre et un
point fixe avec GIS 4 . J'ai pourtant lu et relu, peut être pas
suffisamment mais voilà si j'applique cette boucle copié sur contrib
j'ai l'id, le titre mais pas la distance:
<BOUCLE_c(GIS){distancefrom #ARRAY{lat,#ENV{glat},lon,#ENV{glon}}, <=,
#ENV{dist}}>
     <p>#ID_GIS / #TITRE / #DISTANCE km</p>
     </BOUCLE_c>
Il faut savoir que je récupère glat et glon depuis le point libre
(dans l'url) Ensuite j'ai appliqué ce qui est recommandé sur cette
page:
Tutoriel : GIS et la mobilité - SPIP-Contrib
La fonction php me retourne une page blanche!
Je sèche..
Avez vous un fil conducteur à me proposer, voir même une information
qui m'aurait échappé?
Merci!

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Il y a des éléments de réponses ici pour la racine carré : PHP: sqrt - Manual
Et là ; PHP: pow - Manual pour la fonction puissance.
A+
Sylvain Le Doaré

-----Message d'origine-----
De : Bernard Blazin [mailto:bernard.blazin@free.fr]
Envoyé : jeudi 22 juin 2017 18:35
À : papounet.net@laposte.net; 'SPIP' <spip@rezo.net>
Objet : Re: [Spip] GIS 4 point libre et distance vers point fixe

Bonsoir,

Je me doutais bien que géométriquement parlant ce devait être possible mais de là à mettre la formule en php c'est une autre paire de manches..
Très grossièrement ça devrait donner un truc comme ça non?
$km = sqrt (($glat - $glon)pow(2) + ($lat - $lon)pow(2)) Est ce que cette fonction existe quelque part?
Désolé, je suis gourmand, mais je ne vois pas trop comment me lancer.
Par contre grand merci Sylvain pour ta piste et ton aide.
Bernard

Le 22/06/2017 à 09:26, papounet.net@laposte.net a écrit :

Bonjour,
Si j'ai bien compris ce qui est décrit dans :
Tutoriel : GIS et la mobilité - SPIP-Contrib, la distance est
un rayon qui donne tous les points géolocalisés dans ce rayon.
Et toi ce que tu cherches c'est la distance entre deux points ?
Si oui, je ne suis pas surpris que tu ne trouvent pas ce que tu cherches.
Donc à partir des coordonnées de ton point libre et de celles de ton
point fixe, il faut faire un petit calcul de trigonométrie/géométrie
pour avoir la distance entre les deux points.
Soit le point libre X1,Y1 et le point fixe X2,Y2, la distance est
racine carrée ( (X2-X1)au carré +(Y2-Y1)au carré) un petite fonction
en php à appeler à chaque fois que besoin.
A+
Sylvain Le Doaré

-----Message d'origine-----
De : Bernard Blazin [mailto:bernard.blazin@free.fr] Envoyé : samedi 17
juin 2017 11:17 À : SPIP <spip@rezo.net> Objet : Re: [Spip] GIS 4
point libre et distance vers point fixe

Je reviens à ma question qui ne semble pas inspirer grand monde.
Je reprends donc les coordonnées de mon point libre GIS. J'ai bien
vérifié le contenu des #ENV qui retournent le glat et glon du point
libre, la distance également. Un simple boucle data de l'array me
donne
bien:
lat 48.8252998 lon 3.4037566 <= 100
La boucle gis ci dessous me retourne
1 / Montmirail / 48.8703607224138 /3.5381555557251/ km Soit bien les
coordonnées du point fixe le plus proche mais aucune distance!

Je bloque sérieusement là dessus depuis plusieurs jours et un coup de
main serait bien venu car je suis paumé et je me demande si c'est
faisable simplement comme je le fais?

Le 15/06/2017 à 09:52, Bernard Blazin a écrit :

Bonjour,

Je n'arrive pas à afficher la distance entre un point libre et un
point fixe avec GIS 4 . J'ai pourtant lu et relu, peut être pas
suffisamment mais voilà si j'applique cette boucle copié sur contrib
j'ai l'id, le titre mais pas la distance:
<BOUCLE_c(GIS){distancefrom #ARRAY{lat,#ENV{glat},lon,#ENV{glon}},
<=, #ENV{dist}}>
     <p>#ID_GIS / #TITRE / #DISTANCE km</p>
     </BOUCLE_c>
Il faut savoir que je récupère glat et glon depuis le point libre
(dans l'url) Ensuite j'ai appliqué ce qui est recommandé sur cette
page:
Tutoriel : GIS et la mobilité - SPIP-Contrib
La fonction php me retourne une page blanche!
Je sèche..
Avez vous un fil conducteur à me proposer, voir même une information
qui m'aurait échappé?
Merci!

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Le 22/06/2017 à 18:34, Bernard Blazin a écrit :

Très grossièrement ça devrait donner un truc comme ça non?
$km = sqrt (($glat - $glon)pow(2) + ($lat - $lon)pow(2))

Ce serait plutôt ça :
$delta_x = ($glon-$lon) * ech_lon;
$delta_y = ($glat-$lat) * ech_lat;
$km = sqrt ($delta_x * $delta_x + $delta_y * $delta_y);

- On combine les lat entre elles et les lon entre elles, ça ne se mélange pas et ce ne sont pas les mêmes échelles.

- Les lat et lon sont des mesures d'angles sur un ellipsoïde, les distances se mesurent en mètres (ou km) sur une projection plane. La relation entre les deux dépend du système de projection utilisé. La formule ci-dessus (simple) vaut pour une projection cylindrique, type Mercator.

- Pour calculer les échelles (qui dépendent de la latitude), il faut utiliser les formules correspondant à la projection, ça se trouve sur Wikipedia ou sur des sites spécialisés en géodésie.

- Pour élever au carré, il vaut mieux utiliser le produit que les fonctions d'élévation à une puissance, ça consomme moins de ressources.

CM

Merci à tous! Ceci dit comme je voulais trouver une solution et qu'il est vrai je n'avais pas trop de réponses sur le sujet pendant un certain temps, je me suis dirigé vers la formule de l'haversine. Haversine formula - Wikipedia
Certes elle manque de précision sur de longues distances mais comme je ne vais pas dépasser un rayon de 60 km cela me convient très bien. Après j'ai vu des tas de calculs qui prennent en compte l'altitude mais bon, il faut savoir se limiter! :wink:
Je suis simplement surpris que GIS 4 n'est pas prévu ce cas,surtout qu'il me semble avoir vue passer dans le code cette même formule.
En tout cas je ne peux que vous remercier pour votre implication..
Bernard

Le 22/06/2017 à 22:42, Christian Marget a écrit :

Le 22/06/2017 à 18:34, Bernard Blazin a écrit :

Très grossièrement ça devrait donner un truc comme ça non?
$km = sqrt (($glat - $glon)pow(2) + ($lat - $lon)pow(2))

Ce serait plutôt ça :
$delta_x = ($glon-$lon) * ech_lon;
$delta_y = ($glat-$lat) * ech_lat;
$km = sqrt ($delta_x * $delta_x + $delta_y * $delta_y);

- On combine les lat entre elles et les lon entre elles, ça ne se mélange pas et ce ne sont pas les mêmes échelles.

- Les lat et lon sont des mesures d'angles sur un ellipsoïde, les distances se mesurent en mètres (ou km) sur une projection plane. La relation entre les deux dépend du système de projection utilisé. La formule ci-dessus (simple) vaut pour une projection cylindrique, type Mercator.

- Pour calculer les échelles (qui dépendent de la latitude), il faut utiliser les formules correspondant à la projection, ça se trouve sur Wikipedia ou sur des sites spécialisés en géodésie.

- Pour élever au carré, il vaut mieux utiliser le produit que les fonctions d'élévation à une puissance, ça consomme moins de ressources.

CM
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc