IT:Numeri civici

From OpenStreetMap Wiki
Jump to navigation Jump to search

A seguito dell'aumentato fabbisogno di metodi di ricerca degli indirizzi, non ultimo anche tramite applicazioni di navigazione basate su OSM, l'importanza di questa proposta è andata aumentando, e nel frattempo (situazione al 07/2010) non si limita più solo all'inserimento dei numeri civici, ma si applica agli indirizzi completi (vedi addr=*).

È solo uno tra i diversi schemi proposti.

Numeri civici 2016.jpg

Può essere modificato in qualunque momento, sulla base dell'esperienza acquisita nella registrazione dei dati e nel loro utilizzo.

Fondamenti

Le case sono locate in prossimità delle strade. Sono messe in relazione con le strade tramite l'indirizzo postale. Allo stesso tempo hanno anche delle proprie coordinate geografiche.

Detto nel linguaggio di OSM:

  • Fondamentalmente, ad ogni numero civico corrisponde un punto o una superficie che giace in prossimità di una strada (ma non direttamente sulla strada!).
  • In alternativa è possibile introdurre delle speciali linee che collegano tali punti, per permettere di ricavare le posizioni dei numeri civici intermedi mediante interpolazione. Vale a dire che con tali linee viene indicato, per esempio, che se sulla linea sono riportati i numeri civici 10 e 20, allora i numeri civici 12, 14, 16, 18 stanno nel mezzo.

Nota: per gli indirizzi corrispondenti a località prive di strade, o le cui strade sono prive di nome, si usa quanto riportato sull'indirizzo postale: se si tratta di un quartiere, indicare al posto della strada il nome del quartiere stesso; per case isolate (es: cascine, fattorie) il nome della località (es: Località Bedola).

Chiavi

I tag essenziali per identificare un numero civico sono addr:street e addr:housenumer , gli altri (city, country, state, postcode) si possono desumere dal posizionamento del civico stesso. Per l'inserimento completo di un indirizzo, è stato stabilito (situazione del 2010; nel 2016 verificare se sia sempre così) che le seguenti chiavi vengano utilizzate sul nodo dell'indirizzo (aggiungendo un nodo sul perimetro dell'edificio o, in caso di accesso tramite giardino a cancello, il punto dove si trova l'accesso) oppure sulle relazioni indirizzo (vedi sotto il paragrafo sulle relazioni, sistema consigliabile agli utenti esperti):

Chiave Uso Tipo d'elemento Valore Descrizione
addr:housenumber o

addr:housename

obbligatorio node area testo il numero civico (numeri ed eventuali lettere). Se allo stesso elemento corrispondono più numeri civici, separarli con una virgola, senza spazio. Es.: "12b,12c".

oppure

Il nome di una casa, quando usato in alternativa ad un numero civico.

addr:street obbligatorio node area testo Nome della strada, come appare sull'indirizzo postale.
addr:interpolation obbligatorio way even / odd / all / alphabetic tipo di interpolazione (pari, dispari, continua o alfabetica per 7a-7e).
addr:full opzionale node area testo Indirizzo postale completo.
addr:postcode obbligatorio node area testo Codice di avviamento postale. Il formato varia a seconda del paese, in Italia è composto da 5 cifre.
addr:city obbligatorio node area testo Nome della città o del comune, come riportato nell'indirizzo postale.
addr:country obbligatorio node area due lettere poiché i codici di avviamento postale sono univoci solo all'interno di uno stato, conviene usare il codice di due lettere maiuscole identificativo dello stato, secondo la classificazione ISO 3166-1 alpha-2). Esempi: 'IT' per l'Italia, 'DE' per la Germania, 'FR' per la Francia, 'GB' per il Regno Unito.
addr:state opzionale node area testo il nome dello stato, da usare nelle confederazioni in cui la sua abbreviazione fa parte dell'indirizzo (es. gli USA). Non usato in Italia.

Nota: la chiave contiene il carattere due punti. Allo stesso modo in cui, per esempio, alla chiave highway si assegna il valore residential, alla chiave addr:housenumber si assegna il valore 10.

Esempi: addr:housenumber=10 addr:housenumber=16B addr:housenumber=4 rosso

Utilizzo

Singole case inserite come nodo vicino alla strada

NodeNextToRoad.png Il punto inserito vicino alla strada, viene contrassegnato così:

addr:housenumber=10

Se la strada non è indicata esplicitamente, nella maggior parte dei casi il programma applicativo può ricavare il nome della strada dal tratto di strada più prossimo (i percorsi ciclopedonali e le tracce non vengono considerati). Attenzione: L'informazione addr:housenumber=* da sola si è rivelata causa di errori. Per esempio, nel caso di case prossime agli angoli o in quello di case aventi l'ingresso sulla strada parallela sul retro della casa, il software da solo non riesce sempre a decidere correttamente da quale strada deve ricavare il nome. Pertanto è molto opportuno che venga inserito un valore per tutte le chiavi, per permettere alle applicazioni (ricerca di indirizzi, calcolo di itinerari, ecc.) di ricavare il nome in maniera più certa e con minor rischio di errori. (Vedi 'Indicazione esplicita della strada di appartenenza').

Singole case inserite come area

HousePolygonNextToRoad.png

Una casa inserita come area viene etichettata con:

building=yes (o building=apartements, ...)
+ addr:housenumber=10

Come per l'esempio precedente, solo che viene usata un'area al posto di un nodo.

Uso dell'interpolazione per marcare più case lungo una strada

L'interpolazione è una tecnica provvisoria.
Sarebbe meglio inserire singolarmente tutte le case, e a tutte attribuire il relativo numero civico.

HouseNumbersInterpolation.png

Parallelamente alla way che rappresenta la strada, tracciamo una linea supplementare. Almeno due nodi di questa linea (almeno i nodi terminali) vengono etichettati con i numeri civici delle case corrispondenti, come descritto sopra per le "singole case". Questa linea supplementare (non i suoi nodi!) viene etichettata come segue:

per numeri civici pari:

addr:interpolation=even 

per numeri civici dispari:

addr:interpolation=odd 

per numeri civici continui:

addr:interpolation=all

Questo metodo non funziona quando i numeri civici contengono anche caratteri non numerici (esempio: 21a). Quando dei numeri civici non esistono (per esempio non esiste una casa corrispondente al numero civico 12), e si vuole essere precisi, è necessario tracciare due linee (esempio: "1-11" e "13-25").

Se la strada non è indicata esplicitamente, nella maggior parte dei casi il programma applicativo può ricavare il nome della strada dal tratto di strada più prossimo (i percorsi ciclopedonali e le tracce non vengono considerati). Attenzione: L'informazione addr:housenumber=* da sola si è rivelata causa di errori. Per esempio, nel caso di case prossime agli angoli o in quello di case aventi l'ingresso sulla strada parallela sul retro della casa, il software da solo non riesce sempre a decidere correttamente da quale strada deve ricavare il nome. Pertanto è molto opportuno che venga inserito un valore per tutte le chiavi, per permettere alle applicazioni (ricerca di indirizzi, calcolo di itinerari, ecc.) di ricavare il nome in maniera più certa e con minor rischio di errori. (Vedi 'Indicazione esplicita della strada di appartenenza').

(per ulteriori dettagli consultare la pagina in inglese)

Indicazione esplicita della strada di appartenenza

Le relazioni sono il metodo preferibile per indicare la strada di appartenenza, perchè sono facilmente interpretabili in maniera programmatica. Se non si vogliono impiegare le relazioni, si può usare anche l'etichetta addr:street (vedi il paragrafo seguente).

Secondo Marcus Wolschon è sufficiente usare o addr:street oppure la relazione associatedStreet) (vedere il messaggio "Re: Hausnummernmapping & Relationen (Karlsruher Schema)" (Wayback Machine) del 2009-04-15 09:18:48 GMT nella mailing list talk-de).

strada di appartenenza per una singola casa

HousePolygonNextToRoadWName.png

Oltre al numero civico viene indicata anche la strada:

addr:housenumber=10
addr:street=Via Carducci

o anche l'indirizzo completo:

addr:housenumber=10
addr:street=Via Carducci
addr:postcode=00118
addr:city=Roma
addr:country=IT

Entrambe le forme sono di semplice utilizzo e immediata interpretazione da parte degli utenti.

mediante una relazione

Le relazioni sono facilmente interpretabili dai calcolatori, ma meno intuitive per le persone.

Tuttavia il loro impiego può offrire vantaggi anche ai mappatori. Quando in JOSM viene richiamata una relazione tramite un doppio click, ne vengono mostrati tutti i membri. In questo caso i tratti di strada ed i numeri civici associati. Così è semplice controllare se una strada è completa.

Caratteristiche
Chiave Valore Annotazioni
type associatedStreet
name nome della strada Opzionale?!?! Per semplificare l'impiego in JOSM


Membri della relazione
Tipo di oggetto Ruolo Quantità Annotazioni
way street uno strada cui appartengono i numeri civici
node area house uno o più uno o più numeri civici


Esempio
Schermata che mostra una relazione di esempio in JOSM.

Le case dotate di numero civico vengono associate ad una strada tramite una relazione, come segue:

Nodo/Area per il numero civico „10“:

building=yes
+ addr:housenumber=10

più

Linea per „Via Carducci“:

highway=residential 
+ name=Via Carducci

→ vengono associati con la relazione:

type=associatedStreet

I membri della relazione sono entrambi gli oggetti sopra citati:

  • nodo del numero civico, con ruolo house
  • linea (way) della strada, con ruolo street

strada di appartenenza per una fila di case

Parallelamente alla strada si traccia una linea supplementare. Questa linea viene etichettata con:

addr:interpolation=* 

Il primo nodo della linea riceve l'etichetta addizionale:

addr:street=*

Anche qui si può lavorare con le relazioni: la linea etichettata con addr:interpolation=* viene inserita nella relazione con ruolo house.

Informazioni sul un accesso stradale particolare

<relation id="??">
  <tag k="type" v="roadAccess" />
  <member type="node" ref="11" role="accessto" />
  <member type="node" ref="12" role="accessvia" />
  <!-- (se necessario usare più <member type="node" ref="11" role="accessvia" />
        per edifici che hanno più di un accesso -->
  <member type="way" ref="???" role="accessfrom" /> <!-- se necessario -->
</relation>

In altre parole: creare una relazione di tipo type=roadAccess con i seguenti membri:

  • accessto = un nodo con informazioni sul numero civico (address node), che come detto sopra è etichettato almeno con addr:housenumber=*, ma che a causa della verosimile distanza dalla strada è ragionevole etichettare almeno anche con addr:street=*.
  • accessvia = un nodo (access node) sulla strada o in prossimità della strada (ad es. un cancello). Un algoritmo di calcolo del percorso deve considerare questo nodo come un punto avente le corrispondenti informazioni sul numero civico e che non è membro di una tale relazione. Se più nodi di accesso sono indicati con accessvia, bisogna scegliere il migliore secondo il criterio dato (per es. il percorso più breve o il più veloce).
  • accessfrom (se necessario) = un cammino (strada, via, percorso di accesso) che bisogna obbligatoriamente usare per raggiungere il/i punto/i assegnato/i in accessvia.

Utilizzo pratico fino ad ora

  • Nella sola Germania, più di 1 400 000 nodi sono etichettati con addr:housenumber=*, Italia più di 27 000 (situazione al 04.4.2011).
  • Il router Traveling Salesman ha una opzione a riga di comando org.openstreetmap.osm.data.searching.HouseNumberFinderTest che può cercare e fornire le coordinate geografiche corrispondenti ad un indirizzo specificato con strada e numero civico.
  • OpenRouteService (OSR) usa gli indirizzi per il calcolo degli itinerari.
  • Osmarender mostra i numeri civici in modo accattivante: singole case, interpolazione
  • A partire dal Febbraio 2009 lo fa anche Mapnik: singole case, interpolazione
  • JOSM ha dei preset per semplificare l'inserimento di etichette nella forma addr:*=*, le versioni più recenti, alla voce "Building", hanno dei preset per l'introduzione dei numeri civici secondo questo schema.
  • mkgmap inserisce i dati dell'indirizzo nelle informazioni dei POI. Al momento la relazione associatedStreet non viene ancora interpretata.
  • LoroDux offre ai ciechi itinerari accurati verso i numeri civici. A tale scopo siete pregati di assegnare addr:housenumber ai nodi di ingresso.

Brainstorm Relation/Einzelerfassung su talk-de 07/2010

Fonte: argomento di discussione sulla mailing list talk-de: Zum 1000. mal - Hausnummern und Straßennamen? (per la millesima volta sui numeri civici e nomi delle strade).

  • Riassunto: si è discusso se il metodo di derivazione esclusiva del numero civico, del rilevamento singolo dei dati dell'indirizzo (si intende qui non solo il numero civico, ma piuttosto l'indirizzo completo!) dagli edifici inseriti (building=yes) o dai nodi di indirizzo con informazioni complete su tutte le chiavi di indirizzo (vedi la sezione "Chiavi") sia più o meno sensato della derivazione e rappresentazione di tutti i dati di indirizzo mediante uso di Relazioni(vedi la sezione "mediante una relazione"). (Bisognerebbe evitare di derivare i soli numeri civici, perché altrimenti il software in molti casi si troverebbe a dovere indovinare la relazione con la strada. Per esempio nel caso di strade sull'angolo, o di case che stanno in mezzo tra due strade parallele).
  • Risultato: il metodo, suggerito nello schema Karlsruhe, dell'inserimento dei numeri civici insieme alla strada di appartenenza, in una relazione di tipo associatedStreet" ha il vantaggio di avere ridotta ridondanza (i valori di addr:postcode=*, addr:city=* und addr:country=* possono essere assegnati alla relazione, non è necessario inserirli su ogni edificio o nodo di indirizzo) e una corrispondente maggiore eleganza dei dati. Ha tuttavia anche lo svantaggio che i nuovi mappatori devono occuparsi da subito delle relazioni per potere inserire degli indirizzi, il che può costituire per questi nuovi utenti un ostacolo ed intimidazione, come pure una fonte di errori. Ciò non riguarda solo l'inserimento dei dati di indirizzo, ma ancor di più le modifiche alle strade mediante divisione, aggiunta di nodi, ecc., che potrebbero corrompere le relazioni. (La semplice modifica od integrazione di etichette su una way di per sé non altera le relazioni cui appartiene). Il metodo, suggerito nello schema Karlsruhe, degli inserimenti individuali dei dati di ingresso sui singoli edifici inseriti (building=yes) o sui nodi di indirizzo è il metodo più semplice per i neofiti. Tramite etichettatura multipla di edifici e nodi già esistenti si può inserire rapidamente i dati condivisi (strada, CAP, città, nazione). Inserendo i dati di indirizzo direttamente sugli edifici/nodi di indirizzo, in caso di errore non viene pregiudicato o danneggiato alcun altro elemento, quale la strada di appartenenza. Mentre per gli utenti inesperti questo si potrebbe verificare con l'uso delle relazioni di indirizzo.
  • Conclusione: poiché si vogliono incoraggiare piuttosto che scoraggiare i nuovi utenti ad inserire gli indirizzi, per questo gruppo di neo utenti OSM la soluzione più praticabile, ma non l'unica corretta, è il metodo dei valori addr: (vedi la sezione "chiavi") come etichette sugli edifici o sui nodi. Gli utenti esperti possono preferire le relazioni, che offrono una minore ridondanza. (In entrambi i casi, non bisogni inserire i soli numeri civici. Altrimenti nel primo caso il software in molti casi sbaglierebbe l'associazione alla strada, come pure CAP, città, nazione, per esempio nel caso di case sugli angoli, case nel mezzo di due strade parallele, ecc. Nel caso delle relazioni si ricaverebbero certamente le strade, ma non il CAP, città e nazione).