Friday, March 18, 2022

Spring is coming

I've just released Barcelona Trees, Beta2 v0.0.4, which is just another extremely niche application, totally unrelated to MIDI, but also based on the Qt frameworks like my other free software projects.

The motivation of this program is to help Barcelona visitors or dwellers, answering questions such as:

  • What trees are nearby? (from manual or GPS location)
  • What trees are on a given street or garden?
  • Where can I find specimens of a certain genus/species?
  • For each specimen, obtain more information about its species from existing data on Wikipedia and public images.


This may be useful in many ways, from Botany students to simply curious people. Barcelona has plenty of trees: almost 230k at this moment. And the Open Data BCN service periodically publishes several datasets cataloging the Geo-located specimens in public spaces that are used by this application.

Palau GC- tarongers0682-01

As an example, there are more than 3k Bitter Orange trees like the above (the Courtyard of the orange trees is not in a public place, it is inside an official building) used as ornamental. They are not edible in raw, but can be used for cooking. On the other hand, there are a few (dozens) other Citrus gender specimens that are truly edible, and you may find using the program. Enjoy!


This release using Qt 5.15 may be the last one for this application. It won't be a Qt6 migration, because the Qt Location Maps have been removed in Qt6, but this may change in the future...

Another functionality lost in Qt6 is the QTextCodec class, removed from QtCore and moved to the Core5Compat module that has been already mentioned here, and provides conversion from many text encodings to Unicode. This issue has impacted applications reading MIDI files, and the Drumstick::File library. Well, I've tested two possible replacements...

iconv() is a POSIX API, and it is included in the C library of many Unix systems, like the GNU libc. This may be detected by cmake, and in this case no additional library needs to be linked to the application program, but the external libiconv is also supported when needed.

Character set detection was never provided by Qt. The iconv() POC uses the latest uchardet library (0.0.7 at the time of writing this), which only supports pkg-config. A newer version will include also support for find_package() and imported targets. On the other hand, libICU provides charset detection in addition to Unicode conversion.


  1. Mola!! A ver si te animas con Vigo😉

    1. Cuando se anime vuestro ayuntamiento a publicar un dataset con los árboles geolocalizados:

    2. Otras ciudades lo han hecho: