[Talk-it] Layer A12

Federico Cozzi f.cozzi at gmail.com
Wed May 26 17:09:21 BST 2010


2010/5/26 Carlo <cybor69 at gmail.com>:
>> E' corretto anche se inutile.
>> Il tag layer serve a "mappare per il render".
> Ma questo non è contrario a quello detto nel
> wiki:
> http://wiki.openstreetmap.org/wiki/Key:layer

Il wiki è sibillino:
"Do not use this tag to correct render behaviour, as in just to make
the output look better"
"Non usare questo tag per *correggere* il comportamento del render,
cioè per migliorare l'aspetto grafico".

Mi spiego meglio: è *previsto* che il render usi questo tag per
mostrare un aspetto grafico "corretto", cioè con le vie sopra che
nascondono quelle sotto.
Cioè se la way A passa sotto la way B è corretto assegnare layer=0
alla A e layer=1 alla B e *aspettarsi* che il render faccia quello che
deve. Se non lo fa, è un bug del render!
Come cercavo di dire, però questo è proprio "mappare per il render"
nel senso che l'informazione "A sta sotto B" è un'informazione
esclusivamente grafica, cioè serve per dirigere l'"algoritmo del
pittore" di Mapnik (se volessi un'informazione oggettiva, metterei il
tag ele sia ad A che a B)

Quello che il wiki proibisce è di giocare con layer per puri scopi
grafici, come ad esempio un lago dentro un bosco, ma il bosco non è
correttamente taggato come multipolygon. Potrebbe capitare che il
render nasconda il lago perché disegna il bosco sopra il lago.
In questo caso sarei tentato di giocare con layer assegnando layer=0
al bosco e layer=1 al lago. Questo è scorretto: sto aggirando un
problema (di altro tipo!) con layer.

> Che significato ha layer=1 in questi tratti ?

Assolutamente nessuno.
Ma secondo me stai vedendo un significato eccessivo al tag layer, che
serve esclusivamente come suggerimento agli algoritmi di Mapnik.

> Mi ripeto, perchè non vorrei essermi spiegato male, parlo di tratti che
> sono in superfice, non passano sopra a fiumi od altre strade ne in
> galleria.

Sei stato chiarissimo. Ma vorrei obiettare che "in superficie" ==
"layer=0" non è assolutamente vero.
Prendi un fiume per i fatti suoi. E' in superficie, quindi secondo te "layer=0"
Prendi una strada per i fatti suoi. E' in superficie, quindi "layer=0".
Ora supponi che si incontrino. Come assegni il tag layer?

Sento già che dici: "se la strada scavalca il fiume, c'è un ponte,
quindi la strada (in un tratto) diventa layer=1 e il fiume rimane
layer=0". Ma io potrei obiettarti: "se guardi bene, la strada rimane
alla stessa altezza (il ponte è a raso): è il fiume che è sempre stato
un metro più sotto del livello della strada, quindi in quel tratto il
fiume diventa layer=-1"
Chi ha ragione? Entrambi!

Il fatto è che un tag layer, assegnato ad un unico oggetto, non ha
alcun significato. Diventa significativo solo quando prendi due
oggetti e ne confronti il layer (con la regola che layer=0 di
default): l'oggetto con layer più alto sta sopra.
Quindi entrambe le mappature (+1,0 oppure 0,-1) hanno lo stesso significato.

>> Quindi una way completamente isolata può avere un tag layer qualsiasi:
>> ciò non ha alcun effetto estetico, e neppure semantico ("questa way è
>> più alta delle way con layer=0 che incrocia" è un'affermazione vera,
>> perché non incrocia nessuna way!)
> Io avevo capito esattamente l'opposto, ovvero che il layer andasse
> usato in presenza di incroci per specificare chi sta sotto a chi.

Sì hai ragione, serve proprio a quello!

Io sto dicendo che un tag layer ad una way isolata è del tutto
pleonastico. Tu stai dicendo che il tag layer serve solo quando due
way si incrociano. Stiamo dicendo la stessa cosa da punti di vista
opposti!

> Un dubbio mi assale :-) Ma a che serve una strada isolata a layer -5
> per esempio ?

Assolutamente a niente. Cancella pure quel tag se ti fa stare più tranquillo :-)

Ciao,
Federico




More information about the Talk-it mailing list