Tuesday, June 11, 2013

Denumiri stradale în România




Am calculat un clasament al frecvenței denumirilor stradale folosite în România așa cum apar ele în datele OpenStreetMap.

Mai jos câteva rezultate.


Cele mai frecvente nume de străzi din România (primele 30 de poziții)

           Frecvența |        Nume         
          -----------+---------------------
                 163 | Mihai Eminescu
                 156 | Tudor Vladimirescu
                 129 | Nicolae Bălcescu
                 128 | Gării
                 125 | Unirii
                 121 | Ștefan Cel Mare
                 115 | Dig
                 108 | Avram Iancu
                 102 | Libertății
                  97 | 1 Mai
                  90 | Viilor
                  90 | Republicii
                  88 | George Coșbuc
                  87 | Florilor
                  87 | Trandafirilor
                  87 | Decebal
                  87 | Eroilor
                  87 | Mihail Kogălniceanu
                  86 | Mărășești
                  86 | Ion Creangă
                  83 | Oituz
                  82 | Vasile Alecsandri
                  78 | Primăverii
                  77 | Independenței
                  76 | Crișan
                  76 | Gheorghe Doja
                  75 | Traian
                  74 | Victoriei
                  74 | Tineretului
                  74 | Aurel Vlaicu

La poziția 7 "Dig" este cel mai probabil o eroare - editorii OSM au denumit segmente de străzi care traversează diguri (în tabelă apare la altă poziție, cu frecvență 22, denumirea "Digului" provenită din "Strada Digului", "Aleea Digului", etc).


Localități care conțin "Strada/Aleea/Bulevardul Mihai Eminescu"


  1. 23 August
  2. Adjud
  3. Aiud
  4. Alba Iulia
  5. Ardud
  6. Bacău
  7. Baia Sprie
  8. Baraolt
  9. Bârlad
  10. Bistrița
  11. Bocșa
  12. Brăila
  13. Brașov
  14. Bucuresti
  15. Buftea
  16. Câmpina
  17. Câmpulung Moldovenesc
  18. Caracal
  19. Cehu Silvaniei
  20. Cernavodă
  21. Cluj-Napoca
  22. Constanța
  23. Craiova
  24. Curtea de Argeș
  25. Dăbuleni
  26. Deva
  27. Eforie Nord
  28. Făgăraș
  29. Filiași
  30. Găești
  31. Galați
  32. Gheorgheni
  33. Gura Humorului
  34. Hârlău
  35. Horezu
  36. Hunedoara
  37. Jimbolia
  38. Lugoj
  39. Mangalia
  40. Mediaș
  41. Miercurea Ciuc
  42. Mioveni
  43. Satu-Mare
  44. Odorheiu Secuiesc
  45. Oradea
  46. Pașcani
  47. Piatra Neamț
  48. Pitești
  49. Ploiești
  50. Predeal
  51. Pucioasa
  52. Râmnicu Sărat
  53. Râmnicu Vâlcea
  54. Roșiorii de Vede
  55. Roman
  56. Săcele
  57. Salonta
  58. Sighișoara
  59. Simeria
  60. Slănic
  61. Slănic-Moldova
  62. Slatina
  63. Slobozia
  64. Sovata
  65. Strehaia
  66. Streisângeorgiu
  67. Suceava
  68. Tălmaciu
  69. Tășnad
  70. Târgoviște
  71. Târgu Mureș
  72. Târgu Ocna
  73. Târgu Secuiesc
  74. Teaca
  75. Seini
  76. Ștei
  77. Timișoara
  78. Tulcea
  79. Turda
  80. Turnu Măgurele
  81. Urlați
  82. Vălenii de Munte
  83. Vatra Dornei
  84. Voineasa
  85. Vulcan
  86. Zărnești
  87. Zimnicea

Notă: Din listă lipsesc două străzi pentru care OSM nu conține granițe de localitate.



Personalități în ordinea descrescătoare a frecvenței denumirilor stradale

Din cele mai folosite 200 de denumiri stradale (care totalizează 8700 de strazi din totalul de 33000 prezente in OpenStreetMap), 62 au nume de personalități (~30%):

  1. Mihai Eminescu
  2. Tudor Vladimirescu
  3. Nicolae Bălcescu
  4. Ștefan Cel Mare
  5. Avram Iancu
  6. George Coșbuc
  7. Mihail Kogălniceanu
  8. Decebal
  9. Ion Creangă
  10. Vasile Alecsandri
  11. Gheorghe Doja
  12. Crișan
  13. Traian
  14. Cloșca
  15. Aurel Vlaicu
  16. Mihai Viteazul
  17. Cuza Vodă
  18. Horea
  19. Alexandru Ioan Cuza
  20. Nicolae Titulescu
  21. Nicolae Iorga
  22. Mihai Viteazu
  23. George Enescu
  24. Ana Ipătescu
  25. Ion Luca Caragiale
  26. Gheorghe Lazăr
  27. Simion Bărnuțiu
  28. Ecaterina Teodoroiu
  29. Dimitrie Cantemir
  30. Octavian Goga
  31. Matei Basarab
  32. Dragoș Vodă
  33. Constantin Brâncoveanu
  34. Alexandru Vlahuță
  35. Vlad Țepeș
  36. Petru Rareș
  37. Ciprian Porumbescu
  38. Miron Costin
  39. Liviu Rebreanu
  40. Mihail Sadoveanu
  41. Iuliu Maniu
  42. Popa Șapcă
  43. Vasile Lupu
  44. Petru Maior
  45. Traian Vuia
  46. Mircea Cel Bătrân
  47. Gheorghe Șincai
  48. Andrei Mureșanu
  49. Nicolae Grigorescu
  50. Anton Pann
  51. Lucian Blaga
  52. Alexandru Cel Bun
  53. Ioan Slavici
  54. Titu Maiorescu
  55. Spiru Haret
  56. Alecu Russo
  57. Andrei Șaguna
  58. Gheorghe Asachi
  59. Barbu Ștefănescu Delavrancea
  60. Victor Babeș
  61. Alexandru Odobescu
  62. Ecaterina Varga
  63. Grigore Alexandrescu

Notă: "Cuza Vodă" și "Alexandru Ioan Cuza" apar pe poziții distincte.




Străzi cu denumiri de personalități plasate pe hartă: Mihai Eminescu, Avram Iancu, Ștefan Cel Mare

Distribuția geografică a denumirilor nu e întotdeauna proporțională - deși "Mihai Eminescu" e folosit peste tot, "Avram Iancu" și "Ștefan Cel Mare" sunt împrăștiate neuniform (cel mai probabil din motive istorice).


Mihai Eminescu:




Avram Iancu:




Ștefan cel Mare:





Arbori și flori

16% din cele mai frecvente 200 denumiri sunt arbori si flori:

  1. Florilor
  2. Trandafirilor
  3. Liliacului
  4. Teilor
  5. Crinului
  6. Castanilor
  7. Lalelelor
  8. Narciselor
  9. Crizantemelor
  10. Ghioceilor
  11. Bujorului
  12. Nufărului
  13. Viorelelor
  14. Zambilelor
  15. Garofiței
  16. Macului
  17. Rozelor
  18. Magnoliei
  19. Plopilor
  20. Salcâmilor
  21. Salcâmului
  22. Teiului
  23. Teilor
  24. Stejarului
  25. Nucului
  26. Pinului
  27. Nucilor
  28. Bradului
  29. Brazilor
  30. Fagului
  31. Cireșului
  32. Mărului
  33. Merilor

Thursday, June 06, 2013

Pledoarie pentru o hartă digitală liberă a muntelui



Unul din scopurile secundare ale implicării mele în realizarea site-ului nostru de trasee montane este impulsionarea colectării de date din zonele montane în harta liberă OpenStreetMap. OpenStreetMap aduce în zona hărților ceea ce Wikipedia a adus în lumea enciclopediilor: face posibilă realizarea unui proiect de magnitudine prin cumulul unui număr mare de contribuții mici.

De ce unii nu găsesc necesară o hartă digitală a muntelui

În percepția mea posibilii consumatori ai unei hărți digitale a muntelui se împart în două categorii: turiști (cei ce merg pe traseele marcate și omologate) și alpiniști (merg și pe trasee marcate și în afara lor).

Din motive pe care nu le înțeleg complet dar între care se găsesc în mod sigur reportajele cu răniți pe munte realizate de televiziuni în căutare de senzațional, salvamontul care în perioada de iarnă anunța "interzicerea" accesului pe trasee, legea ariilor protejate care nu permite accesul în afara potecii marcate, pierderea marcajului la parcurgerea unui traseu omologat e de cele mai multe ori însoțită de stres nenecesar și urmată de întoarcere și încercarea localizării celui mai apropiat marcaj. Ori, dacă prezența continuă a marcajului este condiția parcurgerii unui traseu, o hartă devine puțin necesară.

În ce-i privește pe alpiniști, majoritatea par să nu considere necesară folosirea unei hărți digitale. Impresia mea este că tind să accepte faptul că accesul într-o zonă nouă necesită ori cooptarea unui coechipier care a fost deja acolo, ori investiția timpului necesar “descifrării” zonei noi pe baza monografiilor si topo-urilor pe hârtie.

În plus pentru alpiniști, afară de marșul de apropiere și retragere pe văi și brâne (1A-2B), verticalitatea traseelor face imposibilă folosirea unei hărți digitale realizate cu GPS-uri consumer-grade (sunt convins că se poate, cu echipament specializat, realizarea unui topo digital pentru Fisura Albastră dar probabil costul ar fi uriaș).

Mai există și frica că accesul facil la informație face posibile victime (turiști nepregătiți aleg trasee în afara zonei lor de confort) sau provoacă aglomerarea unei zone prin prezența unui număr mare de turiști, eventual prost echipați. Din punctul meu de vedere o hartă digitală nu e cu nimic mai îmbietoare decât un semn cu vopsea cum e cel ce marchează intrarea în Padina Lăncii din Piatra Craiului sau în Valea Urzicii din Bucegi.

Harta digitală ca succesor al hărților pe hârtie

Totuși harta digitală trebuie privită ca o evoluție a hărților pe hârtie.

În măsura în care un turist decide să regăsească marcajul folosindu-se de hartă, o hartă digitală e un instrument mult mai comod (și mai precis). Nu cred că harta digitală ne face dependenți de prezența ei (nu mai mult decât urmarea unui marcaj pom după pom); nu cred că dezavantajele mediului pe care e afișată (durata limitată a bateriei) constituie un motiv serios.

În privința accesului în afara traseelor marcate, harta digitală nu elimină necesitatea documentării înaintea accesului în traseu. Este evident că utilizatorul care decide să părăsească poteca turistică trebuie să fie conștient că se expune unor pericole specifice alpinismului. Avantajul major al hărții digitale este afișarea poziției utilizatoului pe hartă și, acolo unde aplicația permite, orientarea pe baza busolei digitale.

Pentru mine, harta digitală e o unealtă care permite bucuria explorării; pot merge în zone în care n-am fost nici eu nici coechipierul cu care împart coarda, bazându-mă pe date pe care le găsesc mult mai ușor de descifrat decât monografiile lui Cristea sau Kargel. Nu-l cunosc pe cel care folosește numele de utilizator "Claudiu C" în OpenStreetMap însă totuși și datorită lui m-am bucurat de urcarea pe Padina lui Călineț, la piolet și colțari, fără a folosi serviciile unui ghid.

Și, nu în ultimul rând, ar fi frumos să avem o hartă liberă a munților noștri pentru că e rușinos să folosim copii digitizate ale unor hărți vechi, distribuite mai mult sau mai puțin legal (nu cred că hărțile lui Dunăreanu au ieșit de sub incidența legilor de autor și totuși e plin de copii ale lor pe net).

Hărțile digitale moderne comerciale

Și totuși există hărți digitale de calitate - în mod sigur editurile BelAlpin și Dimap au hărți digitale pe baza cărora realizează hărțile pe hârtie pe care le comercializează, însă ei nu au niciun interes în distribuirea sub licență liberă a hărților lor, din motive evidente.

Hărțile digitale moderne non-comerciale

Există si câteva hărți distribuite gratuit - cum e excelenta hartă a Bucegilor realizată de Toma-Dănilă Dragoș sau cum sunt hărțile celor de la romania-natura.ro.

Din păcate în harta liberă OpenStreetMap nu se pot folosi decât date pe care editorul are el însuși drepturi de autor (ex track-uri GPS, poze și notițe din teren colectate de el) sau pentru care editorul obține acordul deținătorului dreptului de autor ca datele sale să fie folosite în harta liberă OpenStreetMap.

Din acest motiv, eforturile celor câțiva autori de hărți non-comerciale, în măsura în care ei nu aleg să permită accesul la datele din spatele hărților sub licență liberă, rămân izolate.

Tehnologiile noi necesită date în format digital

Un alt avantaj major al OpenStreetMap este că funcționează ca o bază de date spațială, nu doar o hartă digitală afișată pe osm.org.

Odată ce datele au fost definite în OSM ele vor fi folosite în moduri pe care probabil încă nu ni le imaginăm. Aplicații gen StarTaxi/CleverTaxi nu ar fi fost posibile fără o hartă în format digital și e greu de imaginat ce noutăți vor apărea în nișa de aplicații de munte în viitor.

Folosirea datelor în aplicații existente (Google Earth)

Accesul la date permite realizarea de proiecte care combină date din diverse surse; mai jos un exemplu în care traseele din abruptul Bucegilor prezente în OSM sunt folosite în Google Earth:

Aplicații noi, "augmented reality"

Este evident că smartphone-urile vor deveni în câțiva ani tipul de telefon dominant pe piață. Îmi imaginez că în zece ani (2020) nu vor fi zone în abruptul Bucegilor neacoperite de semnal de date (4G/5G sau ce va urma).

În măsura în care smartphone-ul devine tipul de telefon dominant și puterea lui de procesare crește constant, nu cred că un viitor în care o aplicație va identifica elemente geografice dintr-o imagine văzută prin camera smartphone-ului e atât de îndepărtat:

Imagine din Strunga Colților către Hornul Coamei - am adăugat pe poză etichetele pe care ar putea să le adauge o aplicație de "reality augmentation"

Presupunând că avem tehnologia, lipsa unei hărți digitale a munților României ne pune în imposibilitatea de a o folosi.

Alte referințe de utilizare a datelor OSM în afara hărții (ambele în engleză):

Starea actuală a datelor din OpenStreetMap în munții României

În România impulsul extraordinar al OpenStreetMap în materie de hărți stradale a venit odată cu posibilitatea editării folosind imaginile satelitare Yahoo. Totuși nici imaginile Yahoo, nici imaginile Bing de calitate superioară care le-au înlocuit nu sunt de folos în cartarea zonelor montane, poate cu excepția cabanelor și refugiilor care sunt vizibile la rezoluție mare.

Față de străzi, unde o tură cu un GPS pe bicicletă permite cartarea poate unui cartier într-o zi, în zona montană e nevoie de o zi pentru 1-2 trasee. Asta pentru că în zona montană se parcurg aproximativ 300 metri verticali pe oră; pentru traseul de pe Valea Cerbului care urcă de la Bușteni (~900m) până la Omu (~2500m) sunt de parcurs 1600 metri verticali -> 5 ore de urcat, 3 de coborât și transportul la și de la Bușteni).

Considerând cele de mai sus, este admirabil că s-a ajuns la aproximativ 300 de trasee marcate în OpenStreetMap (în 2011 erau 58 de trasee).

În final

Dacă ați ajuns până aici vă mulțumesc pentru răbdare.

Și data viitoare când mergeți pe munte cu un smartphone, înregistrați un track GPS și încărcați-l în OpenStreetMap.


Wednesday, May 29, 2013

Actualizare gis.modulo.ro



Odată cu importul setului de date din 29 Mai 2013 am adăugat:

Track GPS pentru primul traseu (până în Poiana Trei Fetițe) aici: GPS trace.

Traseul GPS nu coincide integral cu traseul marcat la traversarea văii Cheii - l-am rătăcit si l-am regăsit ceva mai târziu. În OSM am marcat segmentul afectat cu fixme (l-am desenat pe bază de imagine satelitară).

Marcaje:

Lângă Cabana Secuilor

În șaua Spinarea Calului (Șaua Calului)

În Poiana Trei Fetițe

În drumul forestier de pe Valea Cheia, la bifurcația cu traseele care urcă spre Trei Brazi și Poiana Secuilor

La bifurcația forestierului de pe Valea Tocilița cu traseul care urcă la Cabana Secuilor


Wednesday, May 15, 2013

Trasee noi în gis.modulo.ro

Odată cu actualizarea din 15 Mai 2013 în site-ul nostru de trasee montane au apărut:

Wednesday, April 10, 2013

Prognoze meteo de la wunderground.org

Am introdus un nou tab în site-ul nostru de trasee montane, care conține prognoza pe 3 zile pe baza datelor de la wunderground.com.

Prognoza este actualizată zilnic, deocamdată în engleză pentru că varianta în română pe care o oferă serviciul de la wunderground.com are câteva probleme.


Friday, January 11, 2013

Raspberry PI - MSP 430 - LCD

I finally managed to have the Raspberry PI talk to MSP430 over a SPI serial line and to have the MSP430 print whatever is received to the HD44780 LCD - my notes below.

DEM16101 LCD unusable

No matter how hard I tried, I couldn't figure out how to use it.

I think I managed to talk to the KS066 controller correctly (I reliably reset the controller using the initialization sequence) but I could not figure out the voltage required to power the LCD.

It looks like the LCD might require negative voltage (it's the only way I managed to have the LCD show some character blocks) but I did not find working setting.

In the end I replaced it with a HD44780 LCD and things went fairly smoothly.

MSP430 __delay_cycles

As part of trying to figure out why I could not initialize the DEM16101 I timed, using a scope, delays produced using __delay_cycles vs delays produced by using a timer interrupt.


ClockMethodTime (expected)Time (measured)
1 MHz__delay_cycles(1)1 us2.2 us
8 MHz__delay_cycles(8)1 us1.1 us
1 MHzTimer_A interrupt1 us1.1 us


Since the LCD controller is not that sensitive to the delay's length (it requires minimum values) in the end i used __delay_cycles and did not bother with timer interrupts.

MSP430 to LCD HD44780

I've used the code here to get started: Interface MSP430 Launchpad with LCD Module (LCM) in 4 bit mode. However, since I had 3 P1 pins busy for the SPI serial connection, I had to use a different pinout.

Although P2.0 was free, the voltage it yields when set to high is only 2.2-2.3V (the rest of the ports yield around 3V when high) so I switched to P1.7 for the register select RS pin. This makes the MSP code messier as two ports are in use - both P1 and P2.

I had to change the initialization a bit and add the 8 bit initialization before the 4 bit part, i.e. my working init routine is:

#define     LCM_DIR               P2DIR
#define     LCM_OUT               P2OUT

#define     LCM_PIN_RS            BIT7          // P1.7 -> on P1!
#define     LCM_PIN_EN            BIT1          // P2.1
#define     LCM_PIN_D7            BIT5          // P2.5
#define     LCM_PIN_D6            BIT4          // P2.4
#define     LCM_PIN_D5            BIT3          // P2.3
#define     LCM_PIN_D4            BIT2          // P2.2

void InitializeLcm(void)
{
        // P1 bit 7 is used for RS
        P1DIR |= BIT7;

        //
        // set the MSP pin configurations
        // and bring them to low
        //
        LCM_DIR |= LCM_PIN_MASK;
        LCM_OUT &= ~(LCM_PIN_MASK);


        // wait for the LCM to warm up and reach
        // active regions. Remember MSPs can power
        // up much faster than the LCM.
        //
        __delay_cycles(80000);
        P1OUT |= (LED_0 + LED_1); // turn LEDs on
        //
        // initialize the LCM module
        //
        P1OUT &= ~BIT7;
        LCM_OUT &= ~LCM_PIN_EN;


        // init (part of 8 bit mode)
        LCM_OUT = LCM_PIN_D4 | LCM_PIN_D5;
        PulseLcm();
        __delay_cycles(40000); // at least 4.1 ms
        LCM_OUT = LCM_PIN_D4 | LCM_PIN_D5;
        PulseLcm();
        __delay_cycles(200);
        LCM_OUT = LCM_PIN_D4 | LCM_PIN_D5;
        PulseLcm();

        // 4 bit mode
        // function set
        LCM_OUT = LCM_PIN_D5;
        PulseLcm();
        SendByte(0x28, FALSE);
        __delay_cycles(40000); //to check in datasheet

        // clear display
        SendByte(0x1, FALSE);
        __delay_cycles(40000); //to check in datasheet

        // entry mode set
        SendByte(0x6, FALSE);
        __delay_cycles(40000); //to check in datasheet

        SendByte(0xC, FALSE);
        __delay_cycles(40000); //to check in datasheet

        P1OUT &= ~(LED_0 + LED_1); // init complete, turn LEDs off
}

Rasperry PI to MSP430 via SPI

References:

My code is an awful hack using code from both references.

If you use the MSP430 board with the jumpers in their default position the maximum speed you can us is 9600. So you need to set the speed on the Raspberry Pi at 9600 and use the "-H" option (clock phase).

MSP430 hardware UART

To use the MSP430's hardware UART you need to rotate the TX and RX jumpers 90 degrees:

When using the hardware UART you can use higher speeds (50000 baud works). You still have to use the "-H" (clock phase) option on the Raspberry side


Circuit (drawn using fritzing.org)

Parts:

  • Raspberry PI
  • MSP 430 (powered from the PI via USB)
  • LCD HD44780
  • 5KΩ pot (LCD contrast)
  • 40Ω resistor (to LCD LED +)

Note: the pot for the LCD contrast is usually listed at 10KΩ. I didn't have one so I replaced it with a 5K.

and a photo of the physical setup (a bit different from the diagram depicted in the circuit (there's a pot used to drive an ADC input and the 5K pot used for LCD contrast is replaced by two fixed resistors):

Monday, October 29, 2012

Seagate Momentus XT 750 Gb drive probably incompatible with MacBook Pro Mid 2009

To whom it may concern:

It looks like Seagate Momentus XT is incompatible with some MacBook Pro models (Mid 2009, model identifier MacBookPro5,4, Serial-ATA NVidia MCP79).

The incompatibility manifests itself by the system being hung in I/O - in Activity Monitor both Reads in/sec and Writes in/sec will stay at zero for tens of seconds and eventually the hang will become permanent requiring reboot.

Another possible related symptom is smartctl (part of smartmontools) showing non-zero "UDMA_CRC_ERROR_COUNT", e.g. for a brand new drive:

199 UDMA_CRC_Error_Count    0x003e   200   196   000    Old_age   Always       -       32529

I've tried shorting two jumper pins as described in the Momentus XT manual to tell the drive to avoid negotiating at 3Gb and force 1.5 Gb instead to no avail - with the jumper in place System Report still showed a "Negotiated Link Speed" of 3Gb.

Most likely related: Ugh, SSDs in the MacBook Pro