[OSM-talk-fr] Rendu du nom d'une commune nouvelle
Philippe Verdy
verdy_p at wanadoo.fr
Jeu 14 Juil 11:26:40 UTC 2016
C'est limite, car comme Christian je pense qu'il y a bien aussi un
"village" au sens OSM (population) et au sens physique (agglomération,
panneaux, publicité, adresses...) pour la commune nouvelle. Ca mérite bien
un noeud place=* ! Le placement du noeud en revanche est arbitraire (et n'a
pas à être superposé avec celui du chef-lieu). On a bien 3 noms qui ont
chacun leur existence.
Cela n'empêche pas du tout en revanche de mettre deux noeuds dans la
relation de la commune nouvelle, un de rôle admin_centre mentionnant la
commune déléguée chef-lieu, l'autre avec le rôle "label". C'est documenté
depuis longtemps...
Note: un noeud place=* ne suffit pas à lui même à délimiter un lieu quel
qu'il soit, on est toujours obligé de chercher un objet frontière séparé
pour savoir jusqu'où s'étend la validité de ce nom. Les noeuds place=* sont
un besoin historique, on pourrait même les supprimer tous ceux qui ont une
frontière associée et dans ce cas plus besoin des rôles admin_centre et
label non plus.
Au pire ne garder qu'un noueud label mais totalement anonyme (les noms sont
dans la relation qui référence ce label uniquement pour le positionnement
adéquat, si possible dans l'agglomération principle de la commune, mais ce
n'est même pas le cas pour les autres entités de niveau supérieur où le
label est seulement positionné dans la surface).
----
On pourrait tout à fait positionner automatiquement les labels sans rien
mettre dans la base (aucun noeud nécessaire, pas même un "label") :
* prendre un objet frontière, déterminer sa bounding-box précise et placer
un noeud au centre
* tracer une horizontale passant par ce noeud et déterminer les
intersections avec la frontière pour former des paires de segments
* sélectionner le segment le plus long et garder le point médian
* tracer une vertical passant par ce noeud et et déterminer les
intersections avec la frontière pour former des paires de segments
* sélectionner le segment le plus long et garder le point médian
* On peut recommencer plusieurs fois les coupures horizontales et
verticales jusqu'à ce que le point reste dans la surface occupée par le
label dont on a prédéterminé les dimensions selon la police et le style
utilisé.
* Si un label ne peut pas être positionné exactement car il entraine une
collision avec un autre label, on peut aussi regarder la place qui reste
non occupée par cet autre label pour exclure la portion de segment occupé.
Si un autre label occupe toute la place, on peut chercher à couper selon
l'autre axe (sinon on n'affiche pas le label). L'idéal est que le rendu ne
trace pas tout de suite les libellés mais les insère dans une liste
permettant ensuite de l'éliminer de la liste pour céder sa place à un autre
libellé à placer de façon plus "prioritaire" (capital=* de niveau
inférieur, sinon population plus importante)
L'algo peut cependant échouer à trouver un seule placement (si on ignore
les autres labels déjà positionnés) si dès le départ la ligne passant par
le point au centre de la bounding box ne coupe aucune frontère: il faudra
alors parcourir les "rings" *externes* de la frontière avec des bounding
box distinctes, avant de tracer les lignes horizontales et verticales (et
les faire couper toutes les frontières externes et internes dans cette
bounding box).
Le résultat de ce placement serait meilleur que les actuels "centroïdes".
Le 14 juillet 2016 à 12:57, Stéphane Péneau <stephane.peneau at wanadoo.fr> a
écrit :
> Le 14/07/2016 à 11:22, Christian Quest a écrit :
>
>>
>> Je ne pense pas qu'on soit dans "tagguer pour le rendu", c'est à dire
>> utiliser de mauvais tags pour quelque chose apparaisse sur le rendu. On est
>> ici dans un choix qui facilite le rendu et qui sépare bien les roles de
>> chaque place=* dans la relation de la commune nouvelle.
>>
>
> On peut raisonner différemment :
> Si le rendu affichait correctement le nom de cette commune nouvelle,
> aurais-tu ajouté ce node "place" ?
> Je ne pense pas.
> Donc c'est bien "taguer pour le rendu".
>
> Les solutions que je vois sont des modifs sur le rendu :
> - Si l'admin-center d'une relation porte un tag name différent de celui de
> la relation, alors les 2 doivent être affichés.
> - Plus simple : gérer le tag label
>
>
> Stf
>
> _______________________________________________
> Talk-fr mailing list
> Talk-fr at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-fr
>
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/talk-fr/attachments/20160714/7bbb7aa4/attachment.htm>
Plus d'informations sur la liste de diffusion Talk-fr