Monday, 18 June 2012

MapGuide Open Source 2.4: A comprehensive preview (part 2)

Last time you saw the box, now to show you what's inside.

Since we skipped the 2.3 release, (whose commerical equivalent is AIMS 2012) we might as well cover those new features as well.

Watermark Support

Watermarks was a new resource type introduced with AIMS 2012 that allows your Maps and Layers to have image or text-based watermarks associated with them, allowing for better branding of your maps, among other users for watermarks.

And yes, MapGuide Maestro has watermark support, for quite some time now too.

QuickPlot for AJAX and Fusion

Also introduced in AIMS 2012. The (really) basic print function in the AJAX/Fusion viewers has been replaced by a more flexible QuickPlot tool, which not only allows you to only capture a particular section of your current view, but also to rotate it as well.

The Fusion version of this tool now uses official MapGuide Rendering APIs instead of going through the unreliable PHP way. Still I guess the tool is called QuickPlot for a reason. Don't try to do high DPI plots with this tool unless your MapGuide Server has the memory to serve them as higher DPI plots require more memory.

For 2.4 (and AIMS 2013) the Fusion version of the QuickPlot tool can also have custom paper and scale lists plugged into the QuickPlot UI. See this thread to see how it's done. 

Profiling Support

New for MapGuide Open Source 2.4 / AIMS 2013

Straight from the horse's mouth. I don't really have much more to add. This is a useful feature for testing for layer bottlenecks in your map.

Join Support

If you're like me, you would've avoided Feature Joins for most of MapGuide Open Source's existence (and its commercial releases), mainly because the performance was absolutely horrendous. We've tackled this problem head on for 2.4 and I think we've come out the winner:
We encourage you to give Feature Joins another try. If you want an indicator of whether this improved support benefits you, here's the Feature Joins performance rule of thumb: Performance will be the best if the 2 sides you are joining on can support sorted queries

Instead of saying which FDO providers support sorted queries, let's just list the ones that don't:
  • OGR
  • WFS
  • WMS
  • SDF (before 2.4)
  • SHP (before 2.4)
SDF and SHP not being sortable before this release is the key point. Did you try to do these types of joins in the past with dismal performance?
  • SDF/SHP to ODBC (eg. MS Access database)
  • SDF/SHP to any RDBMS?
The ODBC and RDBMS sides are sortable by FDO, but because SDF/SHP was not considered sortable, you had the buggiest join algorithm chosen (Batch Sorted Block), which also performed dismally if one or both sides are considerably large since one side has to be constantly re-iterated to match all the possible results. For this release such joins will produce sorted results on both side allowing for the Sort Merge algorithm to be used. Sort Merge does not require re-iteration on either side of the join and thus the resulting merged Feature Reader will be processed the fastest.

There is one small catch for SDF and SHP feature joins. Their FDO providers can only order by a single property, meaning any joins involving SDF or SHP sources must only be done on a single property in order for these performance improvements to take effect. But multi-property Feature Joins are rare enough as it is (or single-property joins didn't phase your MapGuide Server one bit!)


We've finally brought Fusion into "actually usable" territory. The major pain points of Fusion (Legend Performance, inability to mix tiled/untiled layers) have been addressed. Performance is now slightly behind the AJAX viewer (the more modern your browser, the better it is). You can even do new fancy tricks with your tiled maps and with commerical layers.

And as for that enhanced Redline widget? It's been improved even more for greater flexibility and productivity.

Configurable CS-Map Dictionary Path

I bring up this particular item up because by having the CS-Map dictionaries now defined in serverconfig.ini and webconfig.ini gives us the following:
  • We no longer have to use a single global environment variable (MENTOR_DICTIONARY_PATH) to tell us where these files are. Which also means ...
  • No more required reboots after installation (yes! Welcome to 2012!)
  • Enables for side-by-side installations of current/older/future versions of MapGuide. We don't currently support this scenario via the official installers, but if you have an older release and a MgInstantSetup-configured one installed, they will both peacefully co-exist because no 2 versions will no longer try to compete for the same MENTOR_DICTIONARY_PATH environment variable. Replacing MENTOR_DICTIONARY_PATH with a path from an older release is a bad thing (tm).
SVN Metadata

This feature was driven by the need to be able to seamlessly deliver web tier updates and fixes from the latest revisions of the source code without needing to build newer release or patch installers. I'm sure most readers of this blog are either developers or do write some code, so you would know about the importance of source control (or so I hope!). Source control can also function as an update delivery system if the content under source control can be used without needing to be compiled into a different form. It just so happens that most of the web tier fits this very description.

Because most of the web tier is textual content (html/js/php/css) and the entire MapGuide source code is hosted in a subversion repository, making most of the existing web tier as subversion working copies allows for easy updates through any subversion client. If we ever commit any updates or fixes, you can pull them down in this manner. No need to wait for the next major/patch release from us just for viewer/fusion/siteadmin/js/html/css updates. Win-win for everyone!

One thing to note about this particular feature is that the working copies use the SVN 1.6 working copy format. If you use a SVN 1.7 or newer client, you can  manually upgrade these directories after installation to use the 1.7 working copy format in order for your SVN 1.7 client to recognize these directories as SVN working copies. We chose the 1.6 working copy format for maximum compatibility. 1.6 and older versions will just work. 1.7 and newer versions will just require the manual working copy upgrade

Finally, this feature is completely optional, and can be turned off in the installer preferences.


Besides the major new features, there's a whole bunch of little enhancements and noteworthy fixes which I'll mention here:
  • Logged map render calls to access.log now include extents
  • Better quality error messages logged to error.log
    • Null references now include the offending variable name
    • Null parameters now include the offending parameter
    • Range check failures now include the offending identifier and the range values being checked
    • FDO-related errors now include the associated feature source id where applicable
    • "The specified object was not found" in collection error? We now tell you the name whose associated object doesn't exists.
    • That useless "value cannot be less than or equal to zero" error? We now tell you what value in question it is!
  • Schema report shows associated spatial context for geometry properties and uses the Count() aggregate for counting features (this is the number used to warn you about large previews)
  • MapGuide .net assemblies are not actually versioned! (instead of being
  • Memory leak fixes for Java API
So here's the gist of what you can expect for the 2.4 release. As always, if you do find defects with the current beta, be a responsible user/tester and report these problems

No comments: