GeoTransformer 4.3

Izlaista jauna GeoTransformer versija 4.3.

Galvenais jaunums ir “transformāciju” (datu ielādes vai publicēšanas) logs – tagad tas rāda progresa indikatoru ilgākiem procesiem (piemēram, attēlu ielādei), kā arī atsevišķi parāda brīdinājumus (piemēram, ja izmantotais pocket query ir pārāk vecs).

Kā parasti, esošās versijas atjaunojas automātiski, lejupielāde pieejama

Pilns izmaiņu saraksts:

  • Transformation status window now displays progress indicator for long running tasks.
  • Transformation status window displays warnings and errors separate from other messages.
  • Pocket query download now warns if the query is not available or is too old.
  • Pocket query download uses local copies when network connection is not available.
  • Pocket query download no longer remove fresh copies of pocket queries that are unselected.
  • User can now choose to ignore even fatal errors in the transformation process.
  • Refresh Images will no longer duplicate images if it is used together with Refresh Data.
  • Previously downloaded geocache images will be removed from disk one month after last use.

LĢIA kartes uz OziExplorer – jauna versija

LĢIA nesen pamatīgi izmainīja savas kartes, kā rezultātā Lgia2Ozi programmiņa kārtējo reizi pārtrauca darboties.

Saņēmos un beidzot uztaisīju, lai karšu dati tiktu ielādēti dinamiski, nevis būtu ierakstīti programmas kodā. Tas nes līdz šādus jaunumus:

  • palaižot programmu, tā ielādē visas LĢIA karšu pārlūkā šobrīd pieejamās rastra kartes;
  • Rīgas centra kartei tagad redzams, kādu teritoriju tā nosedz;
  • tagad tiek apstrādātas arī kartes, kuras sadalītas citos izmēros, ne tikai 512x512.

Jārēķinās, ka iepriekš lejupielādētie karšu fragmenti vairs nav derīgi.

Lejupielāde šeit. disku nedienas

11. jūlijā lapas, kas izvietotas uz servera, nebija pieejamas, jo vienlaicīgi nomira uzreiz divi cietie diski. Visu informāciju izdevās atgūt un naktī uz 12. jūliju viss atkal sāka strādāt, šoreiz tika pievienots vēl trešais disks, lai samazinātu iespēju, ka šādas nedienas atkārtotos.

Atvainojos par sagādātajām neērtībām!

GeoTransformer 4.2

A new version of GeoTransformer has been published to CodePlex. As usual, GeoTransformer will autoupdate itself.

The biggest change is the support for automatically publishing images (photos) to Garmin GPS devices. This requires Live API to be enabled (it works even for basic members) and a bit of patience while the needed data is loaded.

The first screenshot below shows the ability to load the URLs for images from Live API (both of the options do this but the “missing data” takes much more time since it will load much more data to fully refresh the caches).

The second screenshot shows the default (and recommended) configuration for publishing to Garmin GPS devices.

Remember that this does not work if you publish to a folder instead of choosing the GPS device directly from Export/Publish menu.


SpoilerSync and Garmin geocache photos

Garmin not so long ago added ability to view geocache images directly on the GPS unit (more details). The functionality is not limited to caches from and can be used by anyone.

Since currently the most popular way of downloading photos from is using SpoilerSync, I created a small application that converts the output from SpoilerSync into structure that is supported by Garmin devices.

Download the application (5Kb). You will need .NET Framework 4.0 to run it.

To run it, open a console window and run SpoilerSync2Garmin.exe “C:\Where\SpoilerSync\Saved\The\Images” “G:\”

The first parameter is the folder where SpoilerSync saved all the pictures (it will have a lot of images, the file names starting with GC12345 style codes).

The second parameter is the drive letter where the Garmin GPS (must be the internal storage; for now the SD card does not work for photos) is located.

The application can also resize the images but that most probably will not be used since you can specify the size in SpoilerSync. If you need the resize, add resize 240x400 before the folder parameters. First value is width in pixels, the second – height in pixels (240x400 is the screen size for Oregon 450).

Note that GeoTransformer will soon support this out of the box.

GeoTransformer 4.1

GeoTransformer 4.1 is now available. Download, issue tracker, discussions and documentation is now available at CodePlex.

Release notes:

  • Added an option to put geocache attributes in a log entry so it can be read on GPS.
  • Added an option to select which caches should be ignored when publishing.
  • Inner workings of GeoTransformer changed to strongly-typed objects which mean better performance and support for GPX 1.1 files. Partial support for Groundspeak 1.0.2 extensions is also implemented (this version is still under development by Groundspeak and not yet available for users).
  • Virtual caches are now displayed on the map with the correct symbol.
  • Geocache list tables now remember sort, column widths and hidden columns.
  • List view / editor size proportion is now saved between restarts.

Memory and performance of .NET dictionaries

Since generics were added to .NET everybody seems to have forgotten about all the different dictionaries available in the framework and uses Dictionary<,>. I was doing the same until recently I ran into a situation where tens of thousands of dictionaries are created and the memory usage went rather high.

In my case most of the dictionaries are rather small (mostly 2-3 items) so the first thing I tried was switching to HybridDictionary. A short test later I found out that by performing this simple switch I have reduced the memory usage by 10%.

So I went to investigate and compare the various dictionaries available in .NET both of the previously mentioned and also Hashtable, ListDictionary, OrderedDictionary, SortedDictionary, SortedList.

The test is very simple – it recursively creates dictionaries (with integers as keys) and captures both memory usage and time it took to create the dictionary and fully read it (once). Of course, each of the abovementioned classes have their specific usages, especially the sorted and ordered ones but this test only looks at a simple un-optimized scenario.


The first test creates small dictionaries in 9 levels (each dictionary contains 5 other dictionaries). What the results show is that HybridDictionary (together with ListDictionary that is used by it internally) takes the lead with much better timings and memory usage than the standard Dictionary<,>.


As expected, raising the size of each dictionary put ListDictionary in a bad position. Why SortedList with typed key has surprisingly good memory/performance ratings - it uses a simple array for storage and the test uses sequential keys that is the strong point for this class. A bit strange is the bad performance of Hashtable (memory-wise) especially since Hashtable is the class being used by HybridDictionary in this case and it does not show this weakness. It is not because of cold start as the tests were run multiple times and always produced the same result.

Obviously this needs more research and probably better ways of measuring the memory consumption (I am using GC.GetTotalMemory method) but it should be enough to remind that performance is not the only thing to measure when using lots of collections – there is a lot of memory overhead that should be investigated to find the best possible match for each scenario.

Another thing to mention is that the dictionaries increase their capacity in bulk so even if the dictionary size is 200 the capacity of the underlying data stores could as well be 300. It might seem to be a good idea to set the capacity with the appropriate constructor (as long as the maximum is known beforehand) but couple of quick tests showed that for Dictionary<,> it might produce even worse results. Although this again could be the result of suboptimal testing techniques.

Source code for the test application.

More results on different dictionary sizes.

GeoTransformer goes open source

GeoTransformer is now available at CodePlex as a open source project. This is not one those situations where “going open source” means “I’m out, if someone else wants, here”. In this case I really think that giving full access to the source code and moving to a solid platform for project maintenance will benefit the application.

The new website:

What new features this move brings to the table:

  • The source code is available to everyone under Ms-RL license (in short it means that you are free to use it in any project but you have to keep the copyright headers intact).
  • Wiki based documentation (currently it is still empty but it will come there).
  • Discussions section (forum).
  • Issue tracker – place to submit bugs and feature requests.

If there is someone who wants to join the development or help write the documentation, please send me a note.

Visual Studio 11 Beta

No šodienas lejupielādei un eksperimentiem ir pieejama Visual Studio 11 un TFS 11 Beta versijas.

Neliels brīdinājums – .NET Framework 4.5 ir update 4.0 versijai (kā 3.5 pret 2.0), nevis atsevišķa versija, līdz ar to Beta instalācija (jebkura produkta, jo tiem visiem vajag .NET Framework jauno) ietekmēs visas esošās aplikācijas un Visual Studio 2010. Diemžēl uz savas ādas pārbaudīju, ka izmaiņas nav tik perfekti atpakaļsavietojamas, kā gribētos (manā konkrētā gadījumā uzrāvos uz WCF servisiem). Esošā aplikācija pēkšņi ar ļoti dīvainu kļūdu sāka nestrādāt.

Kas vēl jautri – palaižot uninstall uz 4.5 Beta, tiek atinstalēts arī viss .NET Framework 4.0…

GeoTransformer 4.0

Layers-iconDownload (1.21 Mb)

A new version of GeoTransformer is now available. As usual, existing installations will update automatically.

The biggest change is the introduction of Live API. This means that there is a new search functionality directly in the application. Unfortunately pocket queries are still the way to go because the direct search is rather slow. There are only two benefits from the direct search – it allows filter by favorite points and it enables basic members to download cache names and coordinates (no descriptions and hints though).

Other changes:

  • First run now displays a welcome screen that should help new users to start using GeoTransformer – existing users should complete it as it includes logging into Live API and it is now required for pocket query download.
  • Additional waypoints will automatically be enhanced:
    • The description on the GPS unit will now display the name of the waypoint (that was previously not visible at all) and the name of the cache that the waypoint belongs to.
    • Trail head waypoints will now have the correct symbol (image on Garmin).
    • All other waypoints will now have a random color navaid (circle) symbol. This will allow you to visually group waypoints for a single cache. The color of waypoints are chosen from the cache code so it always remains the same.
  • Bing Maps view now displays disabled caches as grayed out icons. It also displays the name of the cache when the mouse hovers over the icon.
  • Various bug fixes, for example, now it is possible to move the GeoTransformer data file around without the application crashing.

Custom waypoint symbolsCustom waypoint symbolsMap viewDirect search queries