Logo OpenStreetMap OpenStreetMap

Deník uživatele Stefano Fraccaro

Nedávné deníkové záznamy

TMap (update)

Zapsal Stefano Fraccaro 5. 2. 2014 v jazyce 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)

Zapsal Stefano Fraccaro 2. 2. 2014 v jazyce 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

Zapsal Stefano Fraccaro 23. 1. 2014 v jazyce 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.

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)