Re: [OSM-talk-fr] Limites administratives - rendu mapnik

2010-10-19 Par sujet Étienne Loks
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Le 19/10/2010 17:02, sly (sylvain letuffe) a écrit :
> Si bug il y a, il pourrait être lié au calcul de la place prise par la police 
> choisie. Je dis peut-être une connerie, mais son style indique une taille de 
> police de 40 points, hors à y regarder de plus prêt, à l'affichage, la police 
> semble plutôt être entre 12 et 15 points.

J'ai sensiblement réduit l'image avant de vous la soumettre. J'ai
environ divisé la taille par 4.

> J'ai essayé sur mon rendu d'utiliser la police fontset_name="book-fonts" mais 
> mon système ne semble pas l'avoir.
> 
> Étienne, si tu remplaces juste fontset_name="book-fonts"  par 
> face_name="DejaVu Sans Bold" est-ce que ça règle ton problème ?
> (sans utiliser allow_overlap="true" évidement)

En entête j'ai :




Donc on travaille avec la même police ;)

Bien cordialement,

- -- 
Étienne Loks
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAky9t8YACgkQtXI+41wn9OTvAgCdHFnmPQZO7hmRoitecZ/9zXVp
56YAnj+X42EaPlpVacDa/pBMgHL0QHo7
=fpob
-END PGP SIGNATURE-

___
Talk-fr mailing list
Talk-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-fr


Re: [OSM-talk-fr] Limites administratives - rendu mapnik

2010-10-19 Par sujet Étienne Loks
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Le 19/10/2010 16:37, Gilles Bassière a écrit :
> La surface des géométrie n'entre pas en considération dans le placement
> des étiquettes. Si mes souvenirs sont bons, ce placement est fait après
> tout le reste pour que les étiquettes apparaissent toujours au-dessus
> des autres couches. L'algorithme utilise alors seulement les centroïdes
> des géométries et positionnent les étiquettes les unes après les autres
> en s'assurant qu'elles ne chevauchent pas d'autres étiquettes (en tenant
> compte d'une marge).
> 
> Si mes souvenirs sont bons, cette détection de chevauchement considère
> les étiquettes de *toutes* les couches, pas seulement celles de la
> couche concernée, ce qui rendrait le résultat d'autant plus
> difficilement prévisible.

Ok. L'algorithme semble sensiblement plus complexe que ce que j'avais
supposé.

>>> La vérité est ailleurs, et il faudrait faire plus de test pour savoir si ça 
>>> vient d'un bug de mapnik, un problème de mémoire quelque part ou autre.
>>
>> Probablement un bug de mapnik du coup. Car en forçant le chevauchement
>> ça passe. Il sera p-e utile que je reporte ce cas de figure sur la liste
>> mapnik.
> 
> Possible que ce soit un bug mais possible aussi que ce soit une
> configuration inappropriée. Le placement des étiquettes est un mécanisme
> compliqué et très certainement capricieux. Il faut savoir que ce
> mécanisme était un des points forts du projet dès ses débuts, j'imagine
> que ça a été testé en long en large et en travers. Bref, si tu contactes
> mapnik-users, mieux vaut avancer prudemment avant de parler de bug.

Oui. Je commence juste à m'intéresser à Mapnik, je ne vais pas crier de
suite au bug sans avoir compris le quart de son mode de fonctionnement.

> La clause order by reste aussi une piste à ne pas négliger, quand tu
> fais la requête à la main, est-ce que rennes et paimpont (pour reprendre
> l'exemple) arrivent avant les communes qui leur sont limitrophes ?

Elles sont ordonnées de manière descendante par way_area et donc
Paimpont et Rennes apparaissent avant leur voisins.

Bien cordialement,

- -- 
Étienne Loks
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)

iEUEARECAAYFAky9tc4ACgkQtXI+41wn9OQulgCYynnR6mI8IbV11/y0564EQPiF
+wCfSk7DgD98nCeI88/JIWAZqh26Q4k=
=VT3y
-END PGP SIGNATURE-

___
Talk-fr mailing list
Talk-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-fr


Re: [OSM-talk-fr] Limites administratives - rendu mapnik

2010-10-19 Par sujet Gilles Bassière
Étienne Loks wrote:
> Bonjour,
> 
> Le 19/10/2010 15:49, sly (sylvain letuffe) a écrit :
>> On mardi 19 octobre 2010, Étienne Loks wrote:
>>> communes dont le nom n'apparaît pas (comme Rennes, Paimpont, etc.).
>> L'hypothèse de Gilles me semble insuffisante pour expliquer les deux que tu 
>> viens de citer, puisque la surface des deux communes est grande, et il y 
>> aurait largement la place.
> 

La surface des géométrie n'entre pas en considération dans le placement
des étiquettes. Si mes souvenirs sont bons, ce placement est fait après
tout le reste pour que les étiquettes apparaissent toujours au-dessus
des autres couches. L'algorithme utilise alors seulement les centroïdes
des géométries et positionnent les étiquettes les unes après les autres
en s'assurant qu'elles ne chevauchent pas d'autres étiquettes (en tenant
compte d'une marge).

Si mes souvenirs sont bons, cette détection de chevauchement considère
les étiquettes de *toutes* les couches, pas seulement celles de la
couche concernée, ce qui rendrait le résultat d'autant plus
difficilement prévisible.

J'ai bien dit plusieurs fois "si mes souvenirs sont bons". Mieux vaut
reposer la question sur mapnik-users. Les développeurs du projet ont la
mémoire plus fraîche et sont habituellement très réactifs.

>> La vérité est ailleurs, et il faudrait faire plus de test pour savoir si ça 
>> vient d'un bug de mapnik, un problème de mémoire quelque part ou autre.
> 
> Probablement un bug de mapnik du coup. Car en forçant le chevauchement
> ça passe. Il sera p-e utile que je reporte ce cas de figure sur la liste
> mapnik.
> 

Possible que ce soit un bug mais possible aussi que ce soit une
configuration inappropriée. Le placement des étiquettes est un mécanisme
compliqué et très certainement capricieux. Il faut savoir que ce
mécanisme était un des points forts du projet dès ses débuts, j'imagine
que ça a été testé en long en large et en travers. Bref, si tu contactes
mapnik-users, mieux vaut avancer prudemment avant de parler de bug.

Il me semble qu'il y a un paramètre pour jouer sur l'écartement entre
les étiquettes, min_distance peut-être (à vérifier dans la doc). Je ne
sais plus quelle est la valeur par défaut.

La clause order by reste aussi une piste à ne pas négliger, quand tu
fais la requête à la main, est-ce que rennes et paimpont (pour reprendre
l'exemple) arrivent avant les communes qui leur sont limitrophes ?

Cordialement
-- 
Gilles Bassière - Web/GIS software engineer
http://gbassiere.free.fr/

___
Talk-fr mailing list
Talk-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-fr


Re: [OSM-talk-fr] Limites administratives - rendu mapnik

2010-10-19 Par sujet Étienne Loks
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Bonjour,

Le 19/10/2010 15:49, sly (sylvain letuffe) a écrit :
> On mardi 19 octobre 2010, Étienne Loks wrote:
>> communes dont le nom n'apparaît pas (comme Rennes, Paimpont, etc.).
> 
> L'hypothèse de Gilles me semble insuffisante pour expliquer les deux que tu 
> viens de citer, puisque la surface des deux communes est grande, et il y 
> aurait largement la place.
> 
> La vérité est ailleurs, et il faudrait faire plus de test pour savoir si ça 
> vient d'un bug de mapnik, un problème de mémoire quelque part ou autre.

Probablement un bug de mapnik du coup. Car en forçant le chevauchement
ça passe. Il sera p-e utile que je reporte ce cas de figure sur la liste
mapnik.

> - ta requête "and (waterway is null or waterway <> 'riverbank')" est 
> étrange, elle sert à quoi ? (bien que je ne pense pas que cela influence)

Avec le admin_level='8' à rien effectivement. Je suis parti du osm.xml
de base et l'ai modifié. C'est du mauvais ménage de ma part (juste une
condition inutile).

Bien cordialement,

- -- 
Étienne Loks
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAky9pEUACgkQtXI+41wn9OQBqQCcDLQ6fmHue45gwdai/ngETrSl
TkwAni9ygUjR3wvs84sjgW0nXGdezR5m
=EpZF
-END PGP SIGNATURE-

___
Talk-fr mailing list
Talk-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-fr


Re: [OSM-talk-fr] Limites administratives - rendu mapnik

2010-10-19 Par sujet Étienne Loks
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Re-bonjour,

Le 19/10/2010 14:56, Gilles Bassière a écrit :
> Étienne Loks wrote:
>> J'ai fait un rendu personnalisé avec mapnik pour pouvoir disposer d'une
>> carte mettant en avant les communes sur une zone donnée.
>> Alors que les limites semblent avoir été bien faites j'ai quelques
>> communes dont le nom n'apparaît pas (comme Rennes, Paimpont, etc.).
>>
>> En base la requête faite pour disposer des noms me renvoie bien les
>> communes manquantes.
>>
>> Avez-vous une idée du pourquoi ?
> 
> Le placement des étiquettes est fait automatiquement par mapnik.
> L'algorithme qui s'en charge évite de surcharger la carte en éliminant
> les étiquettes qui se chevauchent.
> 
> Si mes souvenirs sont bons, les étiquettes sont placées dans l'ordre
> elles sont lues dans les résultats de la requête, c'est à dire qu'on
> peut prioriser en ajoutant une clause ORDER BY à la requête source.
> 
> On peut aussi commander à mapnik de ne pas éviter le chevauchement avec
> l'attribut allow_overlap. Par exemple :
> 

Merci !
Avec le allow_overlap="true", j'ai un rendu correct. Je n'avais bêtement
pas testé car le problème survenait sur des communes assez étendues qui
ne me semblaient pas sujettes à un recouvrement.

> Mais généralement, ça fait plus de mal que de bien. Mieux vaut
> prioriser et laisser faire mapnik afficher tout ce qu'il peut sans
> forcer. Ce qui n'est pas visible à un niveau de zoom le sera
> probablement au suivant.

En l'occurrence, je fais du rendu pour juste une image, il était
important que tout apparaisse.

> Plus d'infos sur : http://trac.mapnik.org/wiki/TextSymbolizer.
> 
> Pour info, le projet mapnik dispose d'une liste
> mapnik-us...@lists.berlios.de qui me semble plus indiquée pour des
> questions aussi pointues.

Oui en effet. J'ai cédé à la facilité d'une liste en français.

Bien cordialement,

- -- 
Étienne Loks
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAky9ocUACgkQtXI+41wn9ORnGQCfSbsJ81LbQUk68yGwIx/Yqhs0
qvgAmQGNIf1oxNkUEZ8V18wNE+f5b0By
=KdqP
-END PGP SIGNATURE-

___
Talk-fr mailing list
Talk-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-fr


Re: [OSM-talk-fr] Limites administratives - rendu mapnik

2010-10-19 Par sujet Gilles Bassière
Étienne Loks wrote:
> Bonjour,
> 
> Le problème a p-e déjà été évoqué mais je ne trouve pas en recherchant
> dans les messages.
> 
> J'ai fait un rendu personnalisé avec mapnik pour pouvoir disposer d'une
> carte mettant en avant les communes sur une zone donnée.
> Alors que les limites semblent avoir été bien faites j'ai quelques
> communes dont le nom n'apparaît pas (comme Rennes, Paimpont, etc.).
> 
> En base la requête faite pour disposer des noms me renvoie bien les
> communes manquantes.
> 
> Avez-vous une idée du pourquoi ?

Le placement des étiquettes est fait automatiquement par mapnik.
L'algorithme qui s'en charge évite de surcharger la carte en éliminant
les étiquettes qui se chevauchent.

Si mes souvenirs sont bons, les étiquettes sont placées dans l'ordre
elles sont lues dans les résultats de la requête, c'est à dire qu'on
peut prioriser en ajoutant une clause ORDER BY à la requête source.

On peut aussi commander à mapnik de ne pas éviter le chevauchement avec
l'attribut allow_overlap. Par exemple :

Mais généralement, ça fait plus de mal que de bien. Mieux vaut prioriser
et laisser faire mapnik afficher tout ce qu'il peut sans forcer. Ce qui
n'est pas visible à un niveau de zoom le sera probablement au suivant.

Plus d'infos sur : http://trac.mapnik.org/wiki/TextSymbolizer.

Pour info, le projet mapnik dispose d'une liste
mapnik-us...@lists.berlios.de qui me semble plus indiquée pour des
questions aussi pointues.

Bien cordialement
-- 
Gilles Bassière - Web/GIS software engineer
http://gbassiere.free.fr/

___
Talk-fr mailing list
Talk-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-fr