How to make your own movie with OSM evolution – part I

Because of the interest on my post with the movies I have created to show OSM evolution in some locations in Romania, I have decided to write a tutorial with all the needed steps to create something similar. The tutorial will be splitted in two parts:
1. Creating a country extract from older planet files
2. Using mapnik and some simple scripts to create images for a specific area, and then compile those images in a MPEG movie.

Just to make things clear, I used a Ubuntu 9.04 to get everything done. I am not sure how easy will be to have something similar on Windows, but it will be almost identical for any Linux distro.

For the first part I would like to thank Frederik and Grant who pointed me to the right scripts, and also mentioned the differences between older OSM API’s and XML formats. The key to create a history of extracts for a country is to get older planet files and apply the correct scripts to them. For the planet files you may chose between the official provider http://planet.openstreetmap.org/ and the mirror hosted by Heanet http://ftp.heanet.ie/mirrors/openstreetmap.org/.

There are mutiple actions to be taken in order to get the extract, and these actions depends on the date of the file (which actually gives the version of the API). There is one common prerequisite, the country polygon. If you don’t have one already, you can probably get it from the Cloudmade’s download section (Romania’s polygon). Once you have the polygon file you can start to download the planet files starting with the oldest one (for Romania I started with 20061205, the country was almost a blank canvas at that time).

For planet files between 20061205 (and maybe older, but I haven’t tried it) and 20071003 the API version is 0.3 or 0.4 (the XML format is identical). So you will need a little bit of workaround to convert these to 0.5 that can be processed with current tools. Here are the steps in order to get the extract for 20061205:

$ sudo apt-get install subversion # needed if you didn't \
use SVN before on that machine
$ mkdir ~/svn
$ cd ~/svn
$ svn co -r 4779 http://svn.openstreetmap.org/\
applications/utils/osm-extract

The extract script will need the Math:Polygon Perl module, which yo can install using CPAN (I am not an expert, I followed some ideas found on the web and it worked. If you have problems I am not the guy to ask about Perl :-) ). You should also install some prerequisites:

$ sudo apt-get install lynx
$ sudo apt-get install ncftp
$ cpan

At the cpan prompt (that you will get after answering some questions) you should type:

cpan[1]> install Math::Polygon

When the installation is finished you should be ready to start extracting your country.

$ mkdir ~/planet
$ cd ~/planet
$ wget http://ftp.heanet.ie/mirrors/openstreetmap.org/\
planet-061205.osm.bz2

At this time you are ready to create the extract, but first get the polygon file and copy it to the new ~/planet directory. After that you can start the extract:

$ ~/svn/osm-extract/polygons/extract-polygon.pl \
-i planet-061205.osm.bz2 -o MY_COUNTRY-061205.osm \
-p MY_POLYGON_FILE

Of course you should replace MY_COUNTRY and MY_POLYGON_FILE your the correct names to have everything up  and running. I would use Romania in the examples to keep things simple, but you should use your country name. This should take a while depending on the country and of course the power of the server you use. In the end you should get a new .osm file for your country. Note 1: that this file is in 0.4 (or 0.3) XML format so we need to convert it to 0.5. For this we will need to get another script from SVN:

$ cd ~/svn
$ svn co http://svn.openstreetmap.org/applications/\
utils/conv05
$ cd ~/planet
$ mkdir 0.5
$ ~/svn/conv05/04to05.pl <romania-061205.osm \
>0.5/romania-061205.osm

After this step you should have a 0.5 compatible OSM extract of your country in the 0.5 directory. Note 2: If you get an error about a missing Perl package when starting a Perl script you should use CPAN to install it.

The next step is not mentioned anywhere from what I know but I have discovered that after the conversion you will get some ways that reference nodes without an ID. This can be fix easily using sed:

$ cd ~/planet/0.5
$ sed 's|<nd ref=""/>||g' romania-061205.osm \
>romania-061205.osm.temp
$ cp romania-061205.osm.temp romania-061205.osm

This is the final step of creating the extract. I usually validate such an extract by trying to open it in JOSM. If you get any errors while trying this leave a comment here or better post on the Talk list.

You should repeat (probably you will create a small script) the above steps in order to get the extracts until 20071003 (inclusive). For example to get the 20061213 extract  the steps will be:

$ cd ~/planet
$ wget http://ftp.heanet.ie/mirrors/openstreetmap.org/\
planet-061213.osm.bz2
$ ~/svn/osm-extract/polygons/extract-polygon.pl \
-i planet-061205.osm.bz2 -o romania-061205.osm -p romania.poly
$ ~/svn/conv05/04to05.pl <romania-061213.osm \
>0.5/romania-061213.osm
$ cd 0.5
$ sed 's|<nd ref=""/>||g' romania-061213.osm \
>romania-061213.osm.temp
$ cp romania-061213.osm.temp romania-061213.osm

This concludes the part where we describe how to extract a pre-0.5 country file. For planet files starting with 20071010 the things are a little bit simples, because we don’t have to convert it. For 0.5 version files we can use Osmosis to create the extract, but first we need to donwload the latest version:

$ cd ~
$ wget http://dev.openstreetmap.org/~bretth/osmosis-build/\
osmosis-latest-bin.tar.gz
$ tar zxf osmosis-latest-bin.tar.gz

Note 3: Osmosis needs Sun Java JRE 1.6, you should make sure you have it installed. For planet files from 20071010 up to 20090418 (inclusive) you should specify to Osmosis to use 0.5 tasks:

$ cd planet
$ wget http://ftp.heanet.ie/mirrors/openstreetmap.org/\
planet-071010.osm.bz2
$ bzcat planet-071010.osm.bz2 | ~/osmosis-0.31/bin/osmosis \
--read-xml-0.5 file=/dev/stdin --bounding-polygon-0.5 \
file=romania.poly  --write-xml-0.5 file=romania-071010.osm

Starting with 20090421 you can remove 0.5 suffix to the tasks:

$ cd planet
$ wget http://ftp.heanet.ie/mirrors/openstreetmap.org/\
planet-090429.osm.bz2
$ bzcat planet-090429.osm.bz2 | ~/osmosis-0.31/bin/osmosis \
--read-xml file=/dev/stdin --bounding-polygon file=romania.poly \
--write-xml file=romania-090429.osm

Using the above steps you should be able to get a history of .osm files for your country. We (OSM Romania) are using a Git repository to store the planet extracts but this is not necessary. I will try to create some simple scripts that will generate images with date caption that should make things simpler for those who don’t want to use Git.

To prepare for the next part of the tutorial I propose you to read the Mapnik install wiki page http://wiki.openstreetmap.org/wiki/Mapnik. We will use the generate_image.py script so you should make sure that you can generate images successfully using that script. You will probably find the PostGIS wiki page very useful as well http://wiki.openstreetmap.org/wiki/Mapnik/PostGIS. Also I recommend to compile osm2pgsql from source as described here: http://wiki.openstreetmap.org/wiki/Osm2pgsql.

I hope to have the second part ready until the end of the week, but I think in the meantime you have more than enough to play with. Questions are welcome in the comments.

http://downloads.cloudmade.com/europe/romania/romania.poly

Profesionalismul celor de la Apă-Canal Galați

Ajung astăzi acasă în jurul 18.30 și după ce mă fac comod mă așez la masă pentru o gustare de seară. După masă normal au rămas niște farfurii de spălat, însă descoper cu surpriză că apa caldă nu curge. Fac ochii mari și încerc apa rece. Sunetul care se aude nu face altceva decât să scoată și mai mult în evidență supriza care mă aștepta. Mă gândesc că e vreun vecin care a avut nevoie de o mică reparație și mă duc să ma pregătesc pentru o seară plină de fotbal.

Peste aproximativ o oră soția vine și mă anunță că apa încă nu a revenit. Interesant, zic, și mă gândesc dacă nu cumva a fost anunțat faptul că se oprește apa prin cartier cu toate lucrările din ultima vreme. Arunc o privire pe site-ul ziarului local și ăn cele din urmă găsesc un anunț care spunea că se oprește apa rece în zonă, însă în intervalul 8-18. În plus lista de blocuri afectate nu conține și blocul nostru, deși sunt destule blocuri din apropiere. Intru pe site-ul celor de la Apă-Canal și văd că apare și o hartă, dar supriză, nici acolo blocul nu este menționat. Asta explică de ce nu am văzut nici un anunț la intrarea în bloc, dar nu explică de ce este oprită apa.

Momentan e ora 22.30 și noi nu avem încă apă. Nici caldă, nici rece. Victime colaterale ale profesionalismului tipic instituțiilor statului.

UPDATE: La 22.45 am făcut o nouă încercare, și supriză, la robinet începuse să curgă un lichid cu o culoare nedefinită, asemănător unui ceai negru. La 23.55 apa caldă încă are aceeași culoare, apa rece este rezonabilă.

Câteva zile prin Viena

După cele 2 zile pierdute pe drum (prima, a doua) am ajuns în sfârșit în orașul muzicii. Ne-am cazat la hotelul Best Western Reither la recomandarea lui Lucian Stanciu și nu am regretat nici o secundă. Din ce bănuiesc hotelul este deținut de un român astfel încât personalul era în proporție destul de mare din România, inclusiv cei care îl administrau zi de zi. Acesta a fost un lucru bun pentru că engleza mea cu care am pretenția că mă pot descurca oriunde a fost un pic inutilă prin Austria, lucru ce l-am descoperit destul de repede (să nu uităm și doamna din vamă ce vindea vignete și care nu vorbea engleza).

Am lăsat mașina în fața hotelului (după ce ne-a fost confirmat faptul că nu riscăm să ne trezim cu ea ridicată sau cu o amendă – de fapt parcarea gratuită în fața hotelului a fost un bonus consistent, pentru o zi de parcare în centru trebuind să scoți din buzunar 17 euro) și am plecat pe jos fără o țintă anume. Am luat o hartă (gratuită, binețeles) din holul hotelului și în cele din urmă am ajuns la Schönbrunn și am făcut o plimbare (nu foarte scurtă pentru că parcul e imens) și primele poze din Viena prin grădinile ce înconjoară palatul. Ne-am întors apoi la hotel trecând printr-o zonă plină de magazine și restaurante chinezești. Dar cum mâncare chinezească pot găsi și în Galați am preferat să mâncăm la hotel câte un schnitzel vienez cât se poate de original (cel puțin așa am fost asigurați). La masă am avut încă o dată probleme cu engleza, domnișoara care ne-a servit vorbind doar germana (aveam să descoperim în curând că mai toți chelnerii deși vorbesc cu tine numai în germană vorbesc o engleză perfectă când îți aduc nota). Din fericire am fost ajutați de unul din românii care am observat că făceau de toate prin hotel, care ne-a și făcut câteva recomandări. Am încheiat seara cu o altă mică plimbare cu același scop de a găsi un bancomat (bancomatele nu sunt așa de multe ca în România, lucru normal pentru că poți folosi cardul la orice magazin) descoperind o zonă comercială care se anima cu precădere seara.

Schonbrunn, vedere din spate

Schonbrunn, vedere din spate

Grădină laterală de la Schonbrunn

Grădină laterală de la Schonbrunn

Nufăr la Schonbrunn

Nufăr la Schonbrunn

Citeşte mai departe »

Zi de zi

Sunt un pic mai bine de 2 săptămâni de când scriu zilnic, lucru care se vede în numărul de vizitatori și în cel al comentariilor. Luna octombrie a fost cea mai plină de când am pornit acest blog, iar săptămâna trecută deține recordul la numărul de afișări. Sper să pot cotinua în acest ritm, subiecte legate de călătorii și OpenStreetMap am destule. Când o să mă apropii de fundul sacului cu idei am să știu că e cazul să mă urc în mașină sau pe bicicletă și să mai plec să vizitez ceva sau să mai fac o hartă.

Asfalt nou prin județul Galați

Gropi pe drumurile județene
Gropi pe drumurile județene

Ultimele plimbări m-au făcut să îmi dau seama că bucățele de drum național care erau pline de gropi și de denivelări au căpătat o formă nouă. E vorba în primul rând de porțiunea de pe DN2B între ieșirea din Galați și Șendreni (păcat de podul de la Șendreni, aveți grijă la suspensii dacă veniți lansați) care face acum mult mai interesant drumul vechi Galați – Brăila dacă doriți să ieșiți spre Buzău (sau chiar Slobozia).

Apoi sunt anumite porțiuni de la DN25 Șendreni – Tecuci, unde se remarcă în special linia dreaptă dintre Independența și Piscu, devenit probabil noul paradis al Poliției rutiere.În plus am ajuns să văd asfaltat podul de la Nănești pe care probabil se certau Prefecturile Galați și Vrancea care să-l asfalteze (cei din Galați vroiau să-l asfalteze vrâncenii și invers, să nu credeți  că vroiau să-l asfalteze ei).

Nu am înțeles însă de ce s-au investiti bani în porțiunea Galați (Metro) – Vânători (da, cea cu 4 benzi) care era într-o stare decentă, iar acum riști să ajungi cu parbrizul crăpat din cauza pietricelelor ce sunt la fiecare pas.

În plus aș vrea să văd lucrări efectuate pe DJ251 Galați – Pechea – Cudalbi care este dureros pentru orice fel de mașină. Știu că sunt planuri, dar vorbele nu îmi sunt de ajuns și cu siguranță nu îmi plătesc amortizoarele atunci când mă duc să îmi fac revizia. Până atunci nu am altceva de făcut decât să ocolesc pe la Ivești – Grivița.

Asfalt bun și fără probleme în trafic!

Poza e luată de pe forumul galateni.net.

Rețeaua de transport public pe OpenMap.ro

În ultimele zile mi-am dedicat timpul liber creării unui layer separat pentru afișarea rețelei de transport public din OpenStreetMap. Momentan sunt afișate rutele de autobuz și tramvai precum și stațiile aferente, dar sunt ușor de adăugat și alte elemente (trolee, maxi-taxi) cât timp ele există în OSM. Deocamdată totul este un experiment, este posibil ca serverul să nu răspundă deloc, scopul principal este să vedem ce se poate face cu datele din OSM și să îmbunătățim această hartă. Aștept opiniile și sugestiile voastre ca și comentarii.

Mai multe informații despre cum puteți adăuga aceste rute găsiți pe Wiki:
- http://wiki.openstreetmap.org/wiki/Public_Transport
- o propunere mai complexă pentru transportul public: http://wiki.openstreetmap.org/wiki/User:Oxomoa/Public_transport_schema

Iată și cum arată acest nou layer în cele 3 zone care implementează momentan câteva rute conform cu informațiile din Wiki (Cluj-Napoca, Oradea și Târgu-Mureș):

Transport public în Cluj-Napoca

Transport public în Cluj-Napoca

Transport public în Oradea

Transport public în Oradea

Transport public în Târgu-Mureș

Transport public în Târgu-Mureș

Și link-urile directe către zonele de mai sus:
- Cluj-Napoca – http://www.openmap.ro/index.php?lat=46.7663&lon=23.599&zoom=14&layers=0B00FTTTTTTT
- Oradea – http://www.openmap.ro/index.php?lat=47.0612&lon=21.929&zoom=14&layers=0B00FTTTTTTT
- Târgu-Mureș – http://www.openmap.ro/index.php?lat=46.5398&lon=24.5587&zoom=14&layers=0B00FTTTTTTT

OpenStreetMap – al doilea mapping party* din România

A avut loc pe 13 septembrie 2009 și a fost mai mult un micro-mapping-party deoarece am fost doar eu și cu Eddy. Am plecat din Galați la ora 8 fără câteva minute cu bicicleta înghesuită în portbagaj și pe locurile din spate (după ce am pliat bacheta, binențeles), și am ajuns în Buzău în jur de 9.40. Am luat-o prin zona industrială pentru că doream să fac un survey din mașină prin cartierul Mihai Viteazul, știind că Eddy e un pic în întârziere. După ce am acoperit aproape de 90% din cartier m-am îndreptat spre locul de întâlnire, spitalul de urgență, unde a ajuns și Eddy în jurul orei 10.45. Am început să ne organizăm, să vedem ce zone putem acoperi, care sunt eventualele zone cu probleme pe care am fi preferat să le facem cu mașina, și care sunt punctele de întâlnire.

La 11.15 am pornit din nou GPS-ul și am purces la drum. În timp ce Eddy s-a confruntat cu ceva probleme tehnice la mine a mers totul ca pe roate. Am reușit să acoper destul de multe străzi, dar am fost dezamăgit de lipsa de indicatoare din zonele pline de blocuri (de exemplu cartierul Crâng). După o scurtă reîntâlnire am plecat din nou pe drumuri separate, împărțind frățeste zona centrală. Nu acoperisem încă jumătate din zona care o doream acoperită când Blackberry-ul mult lăudat a rămas fără baterie. Din fericire aveam un backup pregătit așa că partea finală a fost acoperită de un HTC Dream (G1). După aproximativ 5 ore de pedalat cu mici pauze ne-am întâlnit la giratoriul de la Obor și am luat-o ușurel spre mașini. Apoi ne-am întors la restaurantul Taverna Buzoiană unde am mâncat cu mare poftă o ciorbă de fasole în pită (cei care m-au urmărit pe twitter știu că de mult întrebam de așa ceva) și o gustare de-a casei. Și binențeles am băut și niște beri ca nu cumva să pierdem vreo calorie :)

Ciorbă de fasole în pită la Taverna Buzoiană

Ciorbă de fasole în pită la Taverna Buzoiană

Rezultatul acestei întâlniri a fost mai mult decât îmbucurător reușind să acoperim aproximativ două treimi din oraș. Pentru 2 voluntari, și 5 ore de pedalat, cred că e foarte bine. Imaginea de mai jos cred că face mai mult decât toate cuvintele:

Rezultate mapping-party Buzău

Rezultate mapping-party Buzău

Singura poză cu participanții a fost făcută de o doamnă care s-a lăsat greu convinsă să ne fotografieze, și căreia puștoaică ce o ținea de mână i-a spus că nu trebuia să se oprească și să vorbească cu străinii. Poza o găsiți la Eddy.

* Primul mapping party a avut loc pe 5 septembrie 2009, în Vaslui. A fost ideea lui Rene Hertzfeld, un german ce locuiește în Iași și ar fi trebuit să se desfăsoare în același timp cu mapping-party-ul din Buzău, însă noi am fost nevoiți să amânăm cu o săptămână din motive personale. Inițial a fost și ideea unui challenge, cine face prima contribuție de la fața locului, dar am pierdut prin neprezentare :)

Cât de ușor contribuim la OpenStreetMap – episodul 1

Probabil sunt destui cei care nu contribuie la OSM nu din lipsă de timp cu pur și simplu pentru că modul de editare al hărții li se pare prea dificil. Pentru aceștia am să încerc să prezint aplicații care fac contribuția la OSM cât mai ușoară.

Prima modalitate necesită un iPhone. Aplicația Mapzen POI Collector realizată de Cloudmade va fi disponibilă în curând și va oferi posibilitatea de a adăuga puncte de interes în peste 150 de categorii. Așadar indiferent că mergeți seara în baruri cu prietenii, sau poate la un bowling, sau pe munte cu gașca, veți putea contribui la OpenStreetMap.

Viitorul sună bine!

Cu bicicleta pe lângă Siret

A doua plimbare ceva mai lungă cu bicicleta (prima a fost cu peripeții) a fost împreună cu un bun prieten din copilărie cu făcusem multe drumuri la Brăila, reușind să ne întoarcem o dată chiar pe jos, pentru că una din biciclete se stricase chiar în orașul vecin.

Am fost tentați inițial să încercăm tot drumul de pe dig dar când am ajuns la noul cartier gălățean Dimitrie Cantemir am prins ideea cu un drum pe marginea Siretului și întoarcere prin Barboși. Așa că am luat-o pe drumul de lângă blocurile noi (asfaltat parțial) și mi-am dat seama că acest nou cartier nu este încă pe nici o hartă, așa că mi-am propus să revin cât de curând pe acolo. Am continuat până când drumul ajunge la o răscruce, și am decis să trecem calea ferată ce duce la portul mineralier pentru a continua drumul spre podul feroviar de peste Siret. Drumul a devenit cam denivelat pentru bicicleta mea fără suspensie dar am rezistat fără să mă plâng prea mult. Ne apropiam de calea ferată când am fost întâmpinați de 3 câini foarte bine hraniți, dar care dădeau semne că nu ar refuza o gustare. Se pare că “domnii” sunt destul de cunoscuți prin zonă, dar asta am aflat mai târziu când am trecut deja pe celălalt mal al Siretului. Citeşte mai departe »

Evoluția OpenStreetMap în România

Because this article was mentioned on OSM-talk mailing list I added the English translation of the post:

In order to help Eddy, who was invited to present OSM on the national TV channel, I took the scripts he used, and with little changes in order to fit my Mapnik installation I was able to generate a few movies with the OSM evolution in Romania. The results are not spectacular (compared to ITO World) but I think they show pretty well the work of so many people.

I have included the latest versions of the movies (in order: București, România, Galați, Timișoara and Caracal)

Pentru a-l ajuta pe Eddy, ce a fost invitat să prezinte OpenStreetMap pe postul național de televiziune, am preluat scripturile pe care le folosise el și cu mici modificări (necesare pentru a folosi instalarea proprie de Mapnik) am reușit să generez câteva filme cu evoluția proiectului OSM în România. Rezultatele nu sunt extraordinar de spectaculoase (vezi ITO World) dar cred că scot destul de bine în evidență munca atâtor oameni.

Mai jos am inclus ultimele versiuni ale filmelor (în ordine: București, România, Galați, Timișoara și Caracal):

Citeşte mai departe »