Page 1 sur 1

Postgis, question basique d'unités

Publié : dim. févr. 10, 2019 4:30 pm
par JBosm
Bonjour,
J'ai une question qui paraitra probablement évidente, mais je n'ai pas manipulé beaucoup les fonctions de Postgis.
Si un projet est défini avec :

Code : Tout sélectionner

<Layer name="rotated_buildings" srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over" status="on">
puis que la fonction suivante est appelée :

Code : Tout sélectionner

ST_SimplifyPreserveTopology(l.way,100)
l'unité 100 est-elle en mètres ou dans une autre unité ? 
(l'origine des fonctions est le projet OpenArdenneMap, https://github.com/nobohan/OpenArdenneM ... .xml#L6613)
JB.

Re: Postgis, question basique d'unités

Publié : lun. févr. 11, 2019 10:06 am
par cquest
Le paramètre tolerance est exprimé dans la même unité que la géométrie concernée.

Ici il s'agit de "metre" mercator... qui ne sont pas vraiment des metre (variable en fonction de la latitude).

Pour faire simple, un noeud est éliminé si la distance projetée perpendiculairement au segment sans ce noeud est inférieure à cette tolérance.

Voir ce pseudo code: https://en.wikipedia.org/wiki/Ramer%E2% ... Pseudocode

Re: Postgis, question basique d'unités

Publié : lun. févr. 11, 2019 8:56 pm
par JBosm
Il s'agit donc bien de 100"mètres mercators", ça me semblait assez grand comparé à la taille d'une église. Est-ce qu'il existe un moyen rapide de retrouver la distance réelle "au sol", ou est-ce qu'il faut repasser par lat/lon et la calculer (pas bien compliqué non plus) ?
En fait, la simplification ne fait pas dans la dentelle avec ces paramètres-là. En passant par Shapely, avec le même paramètre et dans la même zone géographique, j'obtiens ça :
Image Image
Pour la méthode, je n'avais pas de soucis, il me semble que c'est la même utilisée dans JOSM.
Merci Christian,
JB.

Re: Postgis, question basique d'unités

Publié : lun. févr. 11, 2019 10:50 pm
par cquest
Le ratio entre "metre mercator" et réels, est d'environ 1.5 sous nos latitudes.
Donc si tu veux simplifier à 1m près ça donne une tolérance de 1.5.