OpenStreetMap

Stefano Fraccaro's Diary

Recent diary entries

TMap (update)

Posted by Stefano Fraccaro on 5 February 2014 in Italian (Italiano).

Aggiunto funzionalità –draw-nodes per renderizzare punti di interesse sulla mappa, con o senza nome. Il nome visualizzato è quello del tag name salvo non sia stata indicata una preferenza linguistica differente. Esempio:

–draw-nodes veneto.pbf shop=optician veneto.png –scale 2000 –doc1 000000 –drawName –fontColor 000000 –fontSize 10 –fp topmiddle –language it –xml-info

TMap (update)

Posted by Stefano Fraccaro on 2 February 2014 in Italian (Italiano).

Rimosso funzionalità –extract-poly-relation a causa del nuovo codice che effettua il parsing del file xml. In compenso è ora possibile ricostruire profili molto lunghi come quelli nazionali (testato su comuni trevigiani, veneto e italia).

Aggiunto funzionalità –draw-poly. E’ ora possibile renderizzare un file .poly in modalità riempimento, solo bordo oppure misto con possibilità di specificare per entrambi il colore in formato esadecimale e lo spessore del bordo. Quasi tutti i parametri hanno una versione abbreviata, ad esempio –drawFillColor1 può essere abbreviato con -dfc1.

./tmap.exe –draw-poly veneto.poly veneto.png 2000 –drawStyle mixed –drawFillColor1 FF0000 –drawOutlineColor1 00FF00 –drawOutlineWidth 20

Questo comando renderizza il file veneto.poly sul file veneto.png con scala 2000. Il colore di riempimento è rosso mentre il bordo è verde. Lo spessore del bordo è 20 pixel. Se lo si desidera, è possibile renderizzare più poly files nella stessa immagine usando l’opzione –xml-info . Ad esempio:

  • ./tmap.exe –draw-poly veneto.poly veneto.png 1000 –dfc1 FF0000 –xml-info
  • ./tmap.exe –draw-poly resana.poly veneto.png 1000 –ds outline –doc1 000000 –dow 2 –xml-info

L’immagine finale sarà quella della regione veneto con disegnato al suo interno il perimetro della città di Resana.

TMap

Posted by Stefano Fraccaro on 23 January 2014 in Italian (Italiano).

TMap è uno strumento che mi serve per la Tourist Map . La prima funzionalità introdotta è la creazione dei file poly per fare degli estratti tematici da zone specifiche, ad esempio per città. TMap è un programma console scritto in C# e richiede la presenza sia di Mono/.Net che di Osmosis. Esempi di utilizzo:

tmap.exe –extract-poly /path/to/source.osm boundary=administrative,admin_level=8,name=city_name destination.poly

tmap.exe –extract-poly-relation /path/to/source.osm relation_id destination.poly

Il programma, al momento, supporta solo membri outer e relazioni relativamente piccole (non usare su regioni o elementi più grandi). A breve arriverà il supporto agli elementi inner e verrà rilasciato il codice sorgente in licenza GPL3. Il programma può essere scaricato a questo indirizzo.

Simple File Format

Posted by Stefano Fraccaro on 29 October 2013 in Italian (Italiano).

Descrizione

Sto lavorando su un nuovo formato file chiamato “Simple File Format” che dovrebbe risultare facile da implementare e veloce da analizzare. Il formato non è estendibile come il ProtocolBuffer di Google ma include un indicatore di versione nel file codificato.

Concetti di base

Nelle intestazioni è indicato il byte di partenza dei nodi, delle way e delle relazioni per saltare direttamente alla sezione che interessa senza dover analizzare tutto il file. Per ogni elemento base (nodi, way, rel.) è prevista una suddivisione in blocchi detta “stride” in modo che sia possibile utilizzare più thread in parallelo per l’analisi del file. La lunghezza della stride è variabile (parametro opzionale in fase di codifica) e deve essere letta dall’intestazione del file codificato. Ogni elemento viene salvato sequenzialmente e non viene fatta distinzione fra attributi e sottonodi.

struttura

  • 1 byte = versione maggiore della struttura file usata
  • 1 byte = versione minore della struttura file usata
  • 8 bytes = punto partenza nodi
  • 8 bytes = punto partenza way
  • 8 bytes = punto partenza relation
  • 8 bytes = lunghezza stride

  • 4 bytes = lunghezza blocco nodo
  • 8 bytes = id
  • 8 bytes = latitudine
  • 8 bytes = longitudine
  • 4 bytes = lunghezza elenco valori
  • N bytes = elenco valori separati da chr(1)
  • 4 byte = lunghezza elenco chiavi
  • N bytes = elenco chiavi separati da chr(1)
  • 4 bytes = lunghezza blocco way
  • 8 bytes = id
  • 4 bytes = lunghezza elenco id nodi (multiplo di 8)
  • N bytes = elenco valori in blocchi da 8 bytes
  • 4 bytes = lunghezza elenco valori
  • N bytes = elenco valori separati da chr(1)
  • 4 byte = lunghezza elenco chiavi
  • N bytes = elenco chiavi separati da chr(1)
  • 4 bytes = lunghezza blocco relation
  • 8 bytes = id
  • 4 bytes = lunghezza elenco valori
  • N bytes = elenco valori separati da chr(1)
  • 4 byte = lunghezza elenco chiavi
  • N bytes = elenco chiavi separati da chr(1)