Nathan Woodrow made another nice video showing the activity of the QGIS developers between versions 1.6 and 1.7 (1265 commits were made during this time). The spike in activity in November is a hackfest.
Most Android devices can determine their position with some accuracy. This is achieved by using the Global Positioning System (GPS), triangulation from mobile network base stations, or by using open (public) hotspots. To use these features, we need the android.location package.
There are several classes in this package. The most important ones are:
LocationManager — provides access to the system location services, i.e., GPS and others. It also allows you to select the service that best meets your criteria (power consumption, positioning accuracy, etc.)
LocationProvider is an abstract class from which all providers of geographic location information are derived. The provider periodically provides information about changes in geographic coordinates of the device
LocationListener — used to receive notifications from the LocationProvider when coordinates change
Other classes that are worth mentioning are Location (geographical location of the device at a given point in time) and Criteria (criteria for selecting a provider).
In this post, I will focus on getting coordinates from the GPS_PROVIDER provider.
Android… So, it got to me. No, I did not become the happy owner of a shovel-shaped device mistakenly called a “phone” (my old SE K320i is great). It’s much worse than that :-). I had to find out how to develop applications for Android.
After successfully downloading and installing the SDK, I started looking for an IDE. On Android Developers there are two options: Eclipse with the ADT plugin and command line + any editor. I tried this Eclipse… IMHO, it’s an abomination. Firstly, it is terribly slow. So slow that M$ Visual Studio under VirtualBox beats it in terms of responsiveness and convenience. Secondдн, the interface organisation is awful. I have often heard that GIT is for aliens, in this case, Eclipse is not clear who wrote it and for whom :-). You won’t believe me, I spent about 15 minutes trying to find a way to open an existing project. It turns out that you have to import them not open. And the rest, like annoying hints on a quarter of the screen, the inability to change anything in the project properties if there are errors, etc. In short, Eclipse didn’t work for me.
I decided to write the code in Geany and build it manually in the terminal. However, there is also IntelliJ IDEA, which is rumoured to support the Android SDK, but I didn’t bother to try it (maybe for nothing).
P.S. By the way, for me the emulator wouldn’t work on the main X server, failing with
XDM authorization key matches an existing client! SDL init failure, reason is: Couldn't open X11 display
I wasn’t in the mood to look into it, so I just ran it on a separate X server.
A few days ago, at the suggestion of a friend, I read “Jonathan Livingston Seagull” by Richard Bach. It’s a wonderful thing, I’m still under the impression.
The weather is not good today. It’s thawing. Everything is melting, it’s damp and foggy. Normally, you would not want to do anything in weather like this, except maybe lie around with a book or watch a film. But no…
Since I did not get any feedback on the new tool in GdalTools for several days, I did some tests myself. After finally making sure that it works, I submitted the patch and wrote to Giuseppe. Since r15135 there is another tool available in GdalTools — gdaltindex.
I’ve slightly improved the symbology import/export patch (I wrote about it a few days ago) and submitted it too. Waiting for feedback now.
Then I started to improve the usability of the import/export dialogue of PostGIS and WMS connections. I decided not to bother with a patch (the changes are not that big) and cheekily committed everything directly to trunk.
I finally went into a frenzy and fixed a long-standing and nasty bug in RasterCalc, extended the set of available comparison operators and started updating the documentation.
Nathan has published an interesting video showing 8 years of QGIS development.
The video was created using Gource, detailed explanations of the process can be found on Nathan’s blog. Each cluster of files represents a directory, and branches show the directory hierarchy of the source code.
With this post I’ll try to summarise the past year.
Last year I changed jobs twice. I left the area where I had been working for more than 6 years - the land registry. Then I worked for some time in a software company developing a trading platform for the Forex market. I had to learn the Ada language as the trading server was developed in this language. Despite the new field and new tools, I did quite well, although there were some difficulties. But I wanted something else…
Private life, this area is best described by the title of E. M. Remarque’s famous novel “All Quiet on the Western Front”. There is nothing to add.
There were lot of changes in the GIS world. The OSM (OpenStreetMap) project has gained worldwide recognition. In addition, Microsoft has given the project access to raster data from its Bing Maps service. Unfortunately, I am not yet involved in the OSM community, but I am very pleased with the development of the project.
ESRI has opened the Geodatabase API, Shapefile is still alive. GIS are pawing their way into the mobile device market.
QGIS is evolving: improved new symbology, raster calculator, QGIS MapServer, many new useful plugins. I have developed and released a few new plugins and continue to improve existing ones. QGIS User Guide was translated into Russian.
This year I was unable to attend the QGIS developer meetings in Pisa and Wrocław. It’s a shame and a pity.
Party of Regions won majorities on most regional and city councils as well as most of the mayoralties.
It’s been 10 years since school and 5 years since university.
On the desktop, I switched from Slackware to Debian testing. There is a dual-boot to Windows XP, as I need it sometimes, e.g. to build QGIS and/or test some bugs (the power of the computer does not allow comfortable use of virtual machines).
Basically, this is the year I gave up dancing. Most likely, for good.
After reading manuals and smart books, I decided to migrate some of my local SVN repositories to Git. It would seem to be a simple process, but no… there were some problems.
I’m running DeepStyle 3.1 (which is basically Slackware 12.2). Git 1.6.1.3 was installed with the system.
So I created a directory for the project, ran git-svn and got a “command not found” error. The first problem turned out to be quite simple, you have to use git svn (at least on Slackware), i.e. without the hyphen. Strange, almost all articles refer to git-svn…
OK, I tried to run the correct command and got a scary error message
Can't locate Error.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i486-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/5.8.8/i486-linux-thread-multi /usr/lib/perl5/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i486-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl .) at /usr/lib/perl5/vendor_perl/5.8.8/Git.pm line 93.
BEGIN failed--compilation aborted at /usr/lib/perl5/vendor_perl/5.8.8/Git.pm line 93.
Compilation failed in require at /usr/bin/git-svn line 45.
BEGIN failed--compilation aborted at /usr/bin/git-svn line 45.
This one took a bit longer. It turned out that I needed to install additional Perl modules and the corresponding bindings for SVN. To install the modules, use the following command (internet access required):
sudo cpan Alien::SVN Error Term::ReadKey
Wait for the installation to finish. Now download subversion-bindings SlackBuild. Extract the archive, change the SVN version in the script to the one you are using and run it. Wait for it to compile and then install the package that was created. Everything should be working now.
The actual repository migration is quite simple (at least in my case). First, we need to match the usernames in SVN and Git, so we create a text file with the following content (of course, the names should be real):
jdoe = Jon Doe
tomm = Tom Morton
Then create a temporary directory for the project, initialise the Git repository, and import the sources from SVN:
The --no-metadata switch in the third command is needed to ignore SVN-specific information. The fourth command creates a mapping between Subversion and Git usernames using a previously created file. The last command performs the import of the source code. The import process will take some time (depending on the size of the repository and the number of commits). Once it has finished, you can clone the temporary repository to get rid of any garbage left behind by SVN.