Browsers: QGIS vs MapInfo 11


Warning: This post contains small rants! You have been warned.

PBBI have recently released MapInfo 11, the new version has brought one change that I think deserves some attention – even if for the wrong reasons.

MapInfo’s browser window was in need of a very good make over; it didn’t follow normal keyboard conventions, eg holding shift to select rather than ctrl; couldn’t sort via the headers; keyboard navigation was poor; and it looked ugly. PBBI then announced that MapInfo 11 would have a new “improved” browser. I thought “Sweet! About time” and then we got a copy. /sigh

So what’s the problem?

First off it’s slow to resize, this would be due to them using .NET WPF for the new browser (I have never seen a good fast .NET WPF datagrid).

Then we have sorting, which is meant to be the cool new feature. This is not the normal just click on the header to sort the column, no because that would be too easy, you have to right click in the browser, click sort and select the options which then opens a new browser window. um what?

Yes this is a pretty handy feature but no it shouldn’t be the only way to sort, you should have a click on the header kind of sort. This seems to be what people wanted.

Next. No visible scroll progress. When you move the little scroll box on the side the browser waits until you have finished to show you the data. I guess the old browser did this too so why change it!

And finally shift click to select a block of rows doesn’t work, I mean come on this is not a hard thing to do.

Surly you can dock it? Nope!

In the end we have a browser that is pretty much the same as the old one but slower……oh and has alternating row colors.

Overall reaction: Disappointed

Enter QGIS

Now if you are reading this blog you are well aware that I am a huge fan of QGIS, I don’t really make that a secret. So I guess the overall point of this post is to compare the QGIS attribute table (browser) and the new MapInfo 11 one.

Lets run though the same list as MapInfo.

Slow to resize? Nope. Even with a large table open the resize speed doesn’t change.

Header based sorting? Yep. Just click the header and it will sort that column. Multi column sorting is on the to-do list.

Live scrolling (results update as you scroll)? Yep + no lag.

Shift click to select blocks of rows? Sure why not. Or you can hold ctrl to select rows all over the grid.

Docking? Yep and floating so you can put it on a different monitor if you need.

Bonus

The QGIS attribute table has a built-in search/filter box, saves having to run a query and have a new window like in MapInfo if you just want to filter the browser.

The QGIS attribute table (browser)

Extra Bonus
The QGIS browser can even have other UI objects inside the cells. Very bloody handy.

Combo box in browser table.

You can even have a calendar date picker if you want.

Lets review

Feature MapInfo 11 QGIS
Good resize speed. No Yes
Header sorting. Yes [See update] Yes
Multi column sorting. Yes [1] No [2]
Live scrolling. No Yes
Shift click for blocks of rows No Yes
Docking. No[3] Yes

[1] Why does it need to open a new browser window? At least make it an option.
[2] On the to-do list

[3] Yes you can use http://www.pbinsight.com/support/product-downloads/item/windowhelper for this support. It’s a good tool go and download it. I just think it should be built in.

Doesn’t look too good for MapInfo at the moment. QGIS is even accessing the TAB data though ogr. Quick tip: if a free program can access and manage your data faster than you, you are failing.

My work place spends a good deal of money on our annual MapInfo “maintenance” licence, money I would happily send to the QGIS project if I had the choice. Or at least part of it,

Data

Both programs opened a 27000 row .TAB file.

Just for the record I’m not anti-MapInfo. It still has some features that I really like. I just wish they would pick up the game.

Update for 11.03 patch

As promised in my comments this is an update to reflect the new header click sorting in MapInfo Professional 11.03.

The 11.03 patch has added header based sorting, and while the sorting works as expected which is good, there is something a little odd.

What is the typical sort pattern? Left click header, table sorts ascending click again and table sorts descending or vice versa.  Then you normally have any extra sorting stuff in the right-click menu e.g Sort Ascending, Sort Desending, Clear Sort etc.

Go into MapInfo 11.03 left click header, context menu appears 0_o…  I’m not aware of any program that  has ever done that.  A menu on left click is not normal, even crappy ol’ Lotus Notes doesn’t have a menu on left click and Lotus Notes is one really crappy program.

Nuff said.

P.S Don’t talk about your new feature i.e the browser, following normal conventions for browser style windows then do something no one has ever done….and still no shift click block select.

P.P.S I know it may sound like a constant bashing but really something like this should never got passed review. I know UI is hard but come, on a context menu on left click…

The things I would like to see in QGIS. What are yours?


So if you have not already guessed from my increasing post about QGIS. I really like it as a GIS system but with all systems it comes with its shortcomings. (Nothing that can’t be fixed of course)

Here is my little wishlist of a few things I would love to see in QGIS.

Multipule map canvases. (ArcGIS, MapInfo)

I was thinking more like ArcGIS data frames vs something like what MapInfo has (multiple windows).  I think the multi window system can add confusion for people new to GIS, plus I hate having to window manage.

SQL like interface. (MapInfo)

This is something that I really like from MapInfo.  It adds a lot of power to the application being able to spatially join two tables that don’t share a command link column and get back a new layer.  Adding this to QGIS could be a pretty big task, although a very rewarding one IMO.  

Now there is some credit in saying “well you can just import your data into PostGIS and use that”, however that is not always a option and I think having a layer above that can query any open layer would be very very powerful.

These are just two of the main things that I would like to see, I’ll update the post if I can think of anymore.

Of course being open source I can write the features myself but C++ is still a bit over my head at the moment.

I would love to see what other peoples thoughts, or mini wishlists, are.  So if you are willing, drop a comment and let me know.

MapInfo Pro Feature Requests – Things I would like to see – Better thematics


I have been working on a rather large mapping project over the last couple of months, and that thought I would write a blog post about some features that I would like to see implemented in MapInfo Pro to make map making a little bit easier.  This could get long so I might break in down into different posts.

Let us begin.

Linked thematic map templates:

Thematic maps are great, I use them all the time but unfortunately they are a big pain in the butt when it comes to using and applying them across a large range of maps and workspaces and using them to keep map updated.

I will elaborate a bit on that last point with a scenario.  Lets say you have a table with a series of maintenance points each with one of the following values:

  • Complete
  • Started
  • Failed

Now we can create a thematic map to show these values:

Sweet, now we can use the Save As… template option so we can save it as something like “Maintenance – Status – Standard”, we do this so that we can apply it to other maps later on.

Now I want to save a workspace because I have all sorts of maps open that need to keep their formating, so I do a Save Workspace…. as something like “Jobs.wor” , a couple of weeks later I would like to make a new set of maps, (say for a gridded map book for the field) using the same template so that I am using the same standard colors across all my maps.   I open the table, make my grid and apply the template to the maintenance layer, everything looks good, now I save the workspace… “Jobs Map book.wor”.  So by this time we have two workspaces: “Jobs.wor”;“Jobs Map book.wor”.

After a couple of weeks I realize that I have to change one of the colors that we use to show the job status.  So we open up the Maintenance.tab and apply the “Maintenance – Status – Standard” template that we have already set up, then we change the color of the Completed job status to yellow, and do a template Save As… and save it as the same name as the old template, overwriting the old one.

Now I want to generate my map book again to bring it up to the new standard colors, I open up the “Jobs Map book.wor” workspace, and what! my colors in the thematic for the maintenance job status are still the same as they were before I updated my template.  Opening up the “Jobs.wor” workspace I find the same thing, there is a disconnection between the template and where it is used.

The reason this happens is because when you save the workspace it hard codes the thematic values right into the workspace with the map. something like this:

shade 1 with Values values
“Complete” Symbol (34,16711680,12) ,
“Failed” Symbol (34,65280,12) ,
“Started” Symbol (34,255,12)
default Symbol (40,0,12)   # color 1 #

meaning that each map in the workspace now has its’ own independent thematic map regardless of the template changes.  If I would like my two workspaces to have the template  new colors I must open both of them and remove the thematic on each map that uses it and reapply it and save.  The problem with this is that it requires the user of the workspace to be aware of the changes in the template and reapply them.  In a multi user environment this becomes difficult.  I also becomes a problem when you have a large workspace 20+ maps all using the same thematic, that is 20+ changes every time you need to make a style change.

What I think would work

My idea is just like something Peter Horsboll Moller and Gentreau in this Mapinfo-l thread suggested beck in 2008, a syntax and command addition to MapBasic.
Something like the following:

Shade <tablename> Layer <layername> Using Template <full path to template> Column <column name>

This means you would be able to store templates in one place and any time somebody opens the workspace, the theme file is read and applied to the map, meaning you will always have the latest style changes.  By using the full path or just the theme name you could store theme files on a network drive or just with the workspaces if it is only going to be used for a selected job with lots of workspaces.

You could also store something like this in the tab file meta data, to use a theme file as the default shading:

\defaulttheme\path = “<full path to template>”

Why I think this word be good.

As it’s pretty obvious from the scenario that I outlined, if you are working on a large mapping project with a table and thematic being used in all the workspaces.  The ability to update just the template and not have to worry about updating each  independent  thematic stored for map in each workspace would greatly improve map making speed.  This feature become even more needed when projects become old and not knowing which workspace and maps need to be changed.

Notes.

Just saving the path to a theme template file would not always be needed(sometimes templates aren’t even needed, for one-off jobs), so hard coding the thematic into the workspace still needs to be an option, but by default it should save a template and the path to the template first rather than hard coding.

Please let me know what you think.

I am writing this as a public blog rather than just sending it straight to MapInfo because I would like to see what other people also think.  Maybe this idea can be expanded? Maybe you would like to say why it shouldn’t be done? Doesn’t matter the reason, let me know.  All comments are welcome, the more people behind an idea the better.