<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-1951542926024108564</id><updated>2009-11-05T18:21:17.183+11:00</updated><title type='text'>The Map Guy(de)</title><subtitle type='html'>Need directions?</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default?start-index=26&amp;max-results=25'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>77</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-4235782432526550217</id><published>2009-11-05T10:53:00.002+11:00</published><updated>2009-11-05T10:56:16.981+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><category scheme='http://www.blogger.com/atom/ns#' term='FOSS4G'/><title type='text'>My FOSS4G presentation, recorded and online</title><content type='html'>For those who could not attend FOSS4G, here's a recording of my FDO Toolbox presentation.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGr0BgC" type="application/x-shockwave-flash" width="480" height="390" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;Many thanks to the folks from &lt;a href="http://www.fosslc.org/"&gt;FOSSLC&lt;/a&gt; for recording this presentation (and many others) at FOSS4G 2009&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-4235782432526550217?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/4235782432526550217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=4235782432526550217' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/4235782432526550217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/4235782432526550217'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/11/my-foss4g-presentation-recorded-and.html' title='My FOSS4G presentation, recorded and online'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-7090499321696505363</id><published>2009-11-04T19:44:00.002+11:00</published><updated>2009-11-04T20:40:53.730+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><category scheme='http://www.blogger.com/atom/ns#' term='MapGuide'/><title type='text'>Why not ....</title><content type='html'>While I was walking home from work today I had a lightbulb moment.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Why isn't there a &lt;a href="http://fdo.osgeo.org"&gt;FDO&lt;/a&gt; provider for ... &lt;a href="http://mapguide.osgeo.org"&gt;MapGuide&lt;/a&gt;!?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Conceptually, there is no impedance mismatch whatsoever, MapGuide builds on FDO so its knows about feature schemas, capabilities, and other FDO terminology. There is a near perfect 1:1 mapping of everything!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A MapGuide FDO provider would allow for roundtripping between a FDO client application and a MapGuide Server that would not have been previously possible. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A MapGuide FDO provider would allow you to easily pull snapshots of data from a MapGuide Server. You could bulk copy data from a MapGuide Feature Source and not care whether that Feature Source points to a SDF file or an Oracle instance, or a WFS server. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A MapGuide FDO provider would allow you to have MapGuide Feature Sources sourcing data from other MapGuide servers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You could probably do all this through a WFS facade, but that requires configuration from the MapGuide side of things, and you would lose some of the richness of FDO by going through WFS (I know I've had to deal with things like zero-length properties from a WFS data source)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A MapGuide FDO provider wouldn't need such configuration, just feed it the required connection parameters:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;MapAgent URL&lt;/li&gt;&lt;li&gt;MapGuide username&lt;/li&gt;&lt;li&gt;MapGuide password&lt;/li&gt;&lt;li&gt;MapGuide Feature Source Id&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;And you're off and racing!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's many new possibilities with a MapGuide FDO provider. Unfortunately, I lack the C++-fu to fully explore this idea :-S&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-7090499321696505363?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/7090499321696505363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=7090499321696505363' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/7090499321696505363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/7090499321696505363'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/11/why-not.html' title='Why not ....'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-4652105372312350845</id><published>2009-10-30T19:14:00.003+11:00</published><updated>2009-10-30T19:32:41.052+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><title type='text'>Simple FDO development tip.</title><content type='html'>&lt;div&gt;When you develop any application in .net in Visual Studio using the &lt;a href="http://fdo.osgeo.org/"&gt;FDO API&lt;/a&gt; you would normally reference the following dlls from your SDK bin directory.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;OSGeo.FDO.dll&lt;/div&gt;&lt;div&gt;OSGeo.FDO.Common.dll&lt;/div&gt;&lt;div&gt;OSGeo.FDO.Geometry.dll&lt;/div&gt;&lt;div&gt;OSGeo.FDO.Spatial.dll&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, when debugging/running the application, you need to have *all* the files from the SDK bin directory in the application's output directory, otherwise things will break.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You could create a post-build event to copy these required files, or alternatively you could do this:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Right click your project and choose &lt;b&gt;Add&lt;/b&gt; - &lt;b&gt;Existing Item&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tWgkJLZDMpc/SuqjIcFmHGI/AAAAAAAAAOA/50QLp-My5ws/s1600-h/vs-addexisting.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 348px;" src="http://4.bp.blogspot.com/_tWgkJLZDMpc/SuqjIcFmHGI/AAAAAAAAAOA/50QLp-My5ws/s400/vs-addexisting.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5398306468730903650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Browse to your directory that contains your FDO dlls, select everything and choose &lt;b&gt;Add As Link&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Create a "com" directory in your project, and repeat this process for the .sql files in the "com" directory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tWgkJLZDMpc/SuqjIiZf8oI/AAAAAAAAAOI/w7tFN8ZCTyc/s1600-h/vs-addexistinglink.png"&gt;&lt;img src="http://2.bp.blogspot.com/_tWgkJLZDMpc/SuqjIiZf8oI/AAAAAAAAAOI/w7tFN8ZCTyc/s400/vs-addexistinglink.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5398306470424998530" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 268px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Now these linked files are in your project. They should have a shortcut overlay to indicate they are linked files. Select all these linked files, and set the &lt;b&gt;Copy to Output Directory&lt;/b&gt; property to &lt;b&gt;Copy Always&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tWgkJLZDMpc/SuqjI_-TDrI/AAAAAAAAAOQ/QNahgjRu2_Y/s1600-h/vs-copyoutput.png"&gt;&lt;img src="http://3.bp.blogspot.com/_tWgkJLZDMpc/SuqjI_-TDrI/AAAAAAAAAOQ/QNahgjRu2_Y/s400/vs-copyoutput.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5398306478363971250" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 229px; height: 400px; " /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now everytime you build your project (for debugging or deployment), your application and &lt;b&gt;everything&lt;/b&gt; in your FDO bin directory are copied to the output directory. No post-build hackery required!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-4652105372312350845?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/4652105372312350845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=4652105372312350845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/4652105372312350845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/4652105372312350845'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/10/simple-fdo-development-tip.html' title='Simple FDO development tip.'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_tWgkJLZDMpc/SuqjIcFmHGI/AAAAAAAAAOA/50QLp-My5ws/s72-c/vs-addexisting.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-516107226668113473</id><published>2009-10-30T19:00:00.003+11:00</published><updated>2009-10-30T19:07:15.045+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><title type='text'>Visualizing textual geometry</title><content type='html'>&lt;div&gt;Wouldn't be nice to "see" what that &lt;a href="http://en.wikipedia.org/wiki/Well-known_text"&gt;gibberish&lt;/a&gt; you just typed actually looks like?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Coming in the next release of FDO Toolbox, yes you can!&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tWgkJLZDMpc/Suqegx_ZAdI/AAAAAAAAAN4/U8mBWeTf3-w/s1600-h/gv-geometrycollection.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 382px; height: 291px;" src="http://1.bp.blogspot.com/_tWgkJLZDMpc/Suqegx_ZAdI/AAAAAAAAAN4/U8mBWeTf3-w/s400/gv-geometrycollection.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5398301389369180626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tWgkJLZDMpc/SuqegoArnWI/AAAAAAAAANw/lGqG-e8EtC0/s1600-h/gv-multipolygon.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 385px; height: 294px;" src="http://2.bp.blogspot.com/_tWgkJLZDMpc/SuqegoArnWI/AAAAAAAAANw/lGqG-e8EtC0/s400/gv-multipolygon.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5398301386690239842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tWgkJLZDMpc/SuqegVvFmOI/AAAAAAAAANo/gAJRCyVFHec/s1600-h/gv-polygon.png" style="text-decoration: none;"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 389px; height: 297px;" src="http://3.bp.blogspot.com/_tWgkJLZDMpc/SuqegVvFmOI/AAAAAAAAANo/gAJRCyVFHec/s400/gv-polygon.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5398301381784606946" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-516107226668113473?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/516107226668113473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=516107226668113473' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/516107226668113473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/516107226668113473'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/10/visualizing-textual-geometry.html' title='Visualizing textual geometry'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tWgkJLZDMpc/Suqegx_ZAdI/AAAAAAAAAN4/U8mBWeTf3-w/s72-c/gv-geometrycollection.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-383768805838573835</id><published>2009-10-27T19:14:00.003+11:00</published><updated>2009-10-27T19:46:06.381+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><title type='text'>FDO Toolbox v0.8.8</title><content type='html'>Here's a short bugfix release. The installer has an updated .net framework detection routine, which should now properly work on Vista and Windows 7. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This release also includes official GDAL dlls missing from the previous release (meaning you now have a more capable OGR provider) and fixes some data preview issues with the Oracle Provider, bringing Oracle support up to a usable level.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/p/fdotoolbox/downloads/list"&gt;Download&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-383768805838573835?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/383768805838573835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=383768805838573835' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/383768805838573835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/383768805838573835'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/10/fdo-toolbox-v088.html' title='FDO Toolbox v0.8.8'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-6300997160575887167</id><published>2009-10-22T18:25:00.004+11:00</published><updated>2009-10-22T18:38:49.911+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><title type='text'>Is FDO Toolbox an FME?</title><content type='html'>&lt;div&gt;Here's a question that was thrown my way during &lt;a href="http://2009.foss4g.org"&gt;FOSS4G&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Are you trying to do an &lt;a href="http://www.safe.com"&gt;FME&lt;/a&gt;?" &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The answer: Yes and No.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yes, because like FME, &lt;a href="http://fdotoolbox.googlecode.com"&gt;FDO Toolbox&lt;/a&gt; can do transformation of data.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But also no, because FDO Toolbox is a multi-purpose tool, of which data transformation is one such purpose. The data transformation of FDO Toolbox is for simple scenarios (converting one data source to another) and I intend to keep it this way. FME does what it does well and can handle whatever complex scenario you throw at it. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you need to do simple conversion or basic transformation of data, FDO Toolbox is suited for the job. If you need to do complex data transformation/massaging, then use FME which was made to serve this purpose.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-6300997160575887167?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/6300997160575887167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=6300997160575887167' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/6300997160575887167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/6300997160575887167'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/10/is-fdo-toolbox-fme.html' title='Is FDO Toolbox an FME?'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-7052415296025758568</id><published>2009-10-21T14:39:00.002+11:00</published><updated>2009-10-21T14:52:51.323+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><category scheme='http://www.blogger.com/atom/ns#' term='FOSS4G'/><title type='text'>FDO Toolbox 0.8.7 (Fresh from FOSS4G)</title><content type='html'>Here's a new release of FDO Toolbox, fresh from the &lt;a href="http://2009.foss4g.org"&gt;FOSS4G 2009 conference&lt;/a&gt;. This was the exact build I was demonstrating during the presentation, which went better than I expected. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Being my first presentation (ever!), I had been frantically practising the night before just to get the content and pacing right. I guess it all paid off at the end, as the presentation went quite smoothly, with none of the stuttering and loss of words that I had during my test runs :-)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The new main features include:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Enhanced Bulk Copy&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The bulk copy mechanism has been drastically improved in this release, it has a whole new user interface and XML file definition. The changes are too much for this post, which I will leave for a future post.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;IronPython Scripting&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;With the introduction of a &lt;a href="http://www.codeplex.com/ironpython"&gt;IronPython&lt;/a&gt; scripting engine, FDO Toolbox now has a 2nd extensibility point. You can now customise and drive FDO Toolbox through python scripts. I will be posting some example scripts in the near future to demonstrate what can be done with a scripting engine. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The side-effect of introducing IronPython is that the minimum .net Framework requirement is now 2.0 SP1. The installer has been updated to check for this version. If you have .net Framework 3.5 (or 3.5 SP1) installed, you will already have this installed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/p/fdotoolbox/downloads/list"&gt;Download&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note: My presentation slides are also available for download from that site. The presentation (as with every presentation at FOSS4G) has been recorded, so expect a video version to crop up soon.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-7052415296025758568?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/7052415296025758568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=7052415296025758568' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/7052415296025758568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/7052415296025758568'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/10/fdo-toolbox-087-fresh-from-foss4g.html' title='FDO Toolbox 0.8.7 (Fresh from FOSS4G)'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-4041299680431167615</id><published>2009-10-19T22:25:00.002+11:00</published><updated>2009-10-19T22:32:38.554+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><category scheme='http://www.blogger.com/atom/ns#' term='FOSS4G'/><title type='text'>FOSS4G 2009 beckons.</title><content type='html'>I'll be flying off to Sydney tomorrow for &lt;a href="http://2009.foss4g.org"&gt;FOSS4G 2009&lt;/a&gt;, but I won't be attending Day 1.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Instead, Tuesday will be spent fine-tuning &lt;a href="http://2009.foss4g.org/presentations/#presentation_40"&gt;my presentation material&lt;/a&gt; with the help of my Sydney-based colleagues for &lt;a href="http://2009.foss4g.org/schedule/"&gt;the main event on Wednesday&lt;/a&gt;, and I'll be mingling about on Thursday, finally departing mid-Friday afternoon.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hope to see you there.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-4041299680431167615?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/4041299680431167615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=4041299680431167615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/4041299680431167615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/4041299680431167615'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/10/foss4g-2009-beckons.html' title='FOSS4G 2009 beckons.'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-3831840970513741800</id><published>2009-09-16T16:06:00.003+10:00</published><updated>2009-09-16T16:16:38.190+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='MapGuide'/><title type='text'>Google Earth plays nice with MapGuide again.</title><content type='html'>Google recently released &lt;a href="http://earth.google.com"&gt;Google Earth 5.1&lt;/a&gt; and one of the first things I wanted to find out was, &lt;a href="http://themapguyde.blogspot.com/2009/02/bad-relationship-google-earth-50.html"&gt;if it would play nice with MapGuide again.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After some testing, my conclusion is that everything is fine again. So when you want to consume KML from MapGuide, &lt;span style="font-weight: bold;"&gt;stay away from Google Earth releases from 4.3 to 5.0&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-3831840970513741800?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/3831840970513741800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=3831840970513741800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/3831840970513741800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/3831840970513741800'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/09/google-earth-plays-nice-with-mapguide.html' title='Google Earth plays nice with MapGuide again.'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-5468399236578825961</id><published>2009-09-14T20:56:00.006+10:00</published><updated>2009-09-15T23:53:52.649+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><title type='text'>FDO Toolbox v0.8.2(.1)</title><content type='html'>Time for a new release.&lt;br /&gt;&lt;br /&gt;New Features / Changes&lt;span style="font-weight: bold;"&gt;:&lt;br /&gt;&lt;br /&gt;Colorful Map Previews.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tWgkJLZDMpc/Sq4kz-iMVQI/AAAAAAAAAME/mY3lTBFJYJM/s1600-h/datapreview.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 315px;" src="http://4.bp.blogspot.com/_tWgkJLZDMpc/Sq4kz-iMVQI/AAAAAAAAAME/mY3lTBFJYJM/s400/datapreview.png" alt="" id="BLOGGER_PHOTO_ID_5381279080132662530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Monochromatic map previews are a thing of the past. Though if for some reason you still prefer black and white, there's a new option available in Preferences to enable/disable this&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Spatial Indexing Support&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thanks to the &lt;a href="http://sourceforge.net/projects/cspatialindexrt/"&gt;C# Spatial Index library&lt;/a&gt; we now have basic spatial indexing for our datasets. Because this enables us to finally do intersection testing on our datasets, the Data Preview can now do cool things like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tWgkJLZDMpc/Sq4k0QoXpgI/AAAAAAAAAMM/xGMx0o6PfTU/s1600-h/datapreview-subselect.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 206px;" src="http://1.bp.blogspot.com/_tWgkJLZDMpc/Sq4k0QoXpgI/AAAAAAAAAMM/xGMx0o6PfTU/s400/datapreview-subselect.png" alt="" id="BLOGGER_PHOTO_ID_5381279084990408194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Expression Editor value fetching&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tWgkJLZDMpc/Sq4kzgO96gI/AAAAAAAAAL8/DcN1c-K9qH0/s1600-h/expreditor.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 219px;" src="http://4.bp.blogspot.com/_tWgkJLZDMpc/Sq4kzgO96gI/AAAAAAAAAL8/DcN1c-K9qH0/s400/expreditor.png" alt="" id="BLOGGER_PHOTO_ID_5381279071998962178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The expression editor has been enhanced with distinct value fetching support. So now not-only do you get &lt;a href="http://themapguyde.blogspot.com/2009/07/expression-editor-gets-bit-smarter.html"&gt;property/function auto-complete&lt;/a&gt;, now you get value auto-complete as well!&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Other Changes&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Added a new option to view the capabilities of any FDO connection.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You can now attempt to fix and correct incompatibilities in the Schema Designer when operating in contextual mode. This is useful for applying schemas to connections with very restrictive capabilities (eg. Shape Files). Before it told you the schema to be applied was incompatible. Now, you can try to do something about it.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fix some bugs related to fixing schema incompatibilities.&lt;/li&gt;&lt;li&gt;Fixed crashing on Data Preview for ODBC connections as a result of a half-baked attempt to &lt;a href="http://trac.osgeo.org/fdo/ticket/552"&gt;work around an annoying bug&lt;/a&gt;. You should definitely get this release if you work with lots of ODBC connections.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Auto-pad zero-length string properties (to 255) when applying a schema that has zero-length string properties.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Added OGR connection builders for: ESRI Shape Files, ESRI ArcCoverage, Microstation DGN (v7 and older), GeoJSON, S-57, Atlas BNA and OGR Virtual Driver. You can now totally bypass using the Generic connection dialog for the OGR Provider (which for some reason the provider does not want to play nice)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;EDIT: Release has been pulled because of a &lt;a href="http://code.google.com/p/fdotoolbox/issues/detail?id=222"&gt;showstopper defect&lt;/a&gt; that slipped through the cracks. A 0.8.2.1 release will be made available soon that fixes this defect.&lt;br /&gt;&lt;br /&gt;EDIT: The 0.8.2.1 release is up. Download away!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/fdotoolbox/downloads/list"&gt;Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/fdotoolbox/issues/list"&gt;Report bugs or feature enhancements&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-5468399236578825961?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/5468399236578825961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=5468399236578825961' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/5468399236578825961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/5468399236578825961'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/09/fdo-toolbox-v082.html' title='FDO Toolbox v0.8.2(.1)'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_tWgkJLZDMpc/Sq4kz-iMVQI/AAAAAAAAAME/mY3lTBFJYJM/s72-c/datapreview.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-899925763979786157</id><published>2009-08-25T19:13:00.003+10:00</published><updated>2009-08-25T19:27:13.336+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><title type='text'>FDO Toolbox v0.8.0</title><content type='html'>It's been a while since the last release of FDO Toolbox, so here's a new release.&lt;br /&gt;&lt;br /&gt;This version finally has working ArcSDE provider support (thank you, &lt;a href="http://gis.utah.gov/"&gt;Utah State Govt&lt;/a&gt; for providing a public ArcSDE instance for me to test :-)), faster Object Explorer loading and that &lt;a href="http://themapguyde.blogspot.com/2009/07/expression-editor-gets-bit-smarter.html"&gt;new and enhanced Expression Editor that I've been raving about&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/fdotoolbox/downloads/list"&gt;Download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-899925763979786157?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/899925763979786157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=899925763979786157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/899925763979786157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/899925763979786157'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/08/fdo-toolbox-v080.html' title='FDO Toolbox v0.8.0'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-8731719115594922129</id><published>2009-08-05T03:27:00.008+10:00</published><updated>2009-08-05T04:21:33.138+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='MapGuide'/><title type='text'>Viewing multiple selected features in the AJAX viewer</title><content type='html'>One of the limitations with the current AJAX viewer (and a pet peeve of mine) is when you do multiple selections, you get the most unhelpful user feedback ever.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tWgkJLZDMpc/SnhyJNnworI/AAAAAAAAALc/CIIaH_e0F28/s1600-h/ajax-before.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 280px;" src="http://3.bp.blogspot.com/_tWgkJLZDMpc/SnhyJNnworI/AAAAAAAAALc/CIIaH_e0F28/s400/ajax-before.png" alt="" id="BLOGGER_PHOTO_ID_5366164458612761266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Those of you in Fusion land however, get the proper treatment with regards to multiple selected features. It will display the attributes of all the selected features for you. As shown below.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tWgkJLZDMpc/Snh0BAJjVkI/AAAAAAAAALk/vTck-mjuOfM/s1600-h/fusion-multiselect.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 346px;" src="http://2.bp.blogspot.com/_tWgkJLZDMpc/Snh0BAJjVkI/AAAAAAAAALk/vTck-mjuOfM/s400/fusion-multiselect.png" alt="" id="BLOGGER_PHOTO_ID_5366166516580701762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;To do the same thing in the current AJAX viewer requires a custom development effort, which shouldn't have to be, but sadly is the case if you want similar functionality in the AJAX viewer.&lt;br /&gt;&lt;br /&gt;I believe functionality as basic as this should have always existed in the AJAX viewer in the first place, which is why as part of my work on MapGuide &lt;a href="http://trac.osgeo.org/mapguide/wiki/MapGuideRfc71"&gt;RFC71&lt;/a&gt;, I am porting this functionality to the AJAX viewer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tWgkJLZDMpc/SnhyIw3TRjI/AAAAAAAAALU/H4Q7KJciypY/s1600-h/ajax-now1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 333px;" src="http://1.bp.blogspot.com/_tWgkJLZDMpc/SnhyIw3TRjI/AAAAAAAAALU/H4Q7KJciypY/s400/ajax-now1.png" alt="" id="BLOGGER_PHOTO_ID_5366164450893317682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;One thing you may notice is that there is a button beside the selected dropdown. What this does is it allows you to zoom and center on the current selected feature. Allowing you to somewhat wade through that sea of blue polygons in large selection sets.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tWgkJLZDMpc/SnhyI_8vaWI/AAAAAAAAALM/HlDCvXPpPHI/s1600-h/ajax-now2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 259px; height: 184px;" src="http://1.bp.blogspot.com/_tWgkJLZDMpc/SnhyI_8vaWI/AAAAAAAAALM/HlDCvXPpPHI/s400/ajax-now2.png" alt="" id="BLOGGER_PHOTO_ID_5366164454942665058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This zoom level is currently hardcoded to 200, and will probably change as I keep hacking away.&lt;br /&gt;&lt;br /&gt;Currently, this new feature is only available for the PHP viewer. The .net and Java viewers will follow in due course (the scope of the RFC covers all 3 viewers). I have tested this on Firefox 3/3.5 and Internet Explorer 7/8 (surpisingly even IE6, that #$^% browser that just refuses to die!), it should also work on Chrome and Safari (RFC scope also covers these web browsers)&lt;br /&gt;&lt;br /&gt;If you want to play with this new feature (and I would like people's feedback as I implement this), you will have to do the following:&lt;br /&gt;&lt;br /&gt;1) &lt;a href="http://themapguyde.blogspot.com/2009/03/building-mapguide-on-windows-made.html"&gt;Build mapguide trunk from source&lt;/a&gt;.&lt;br /&gt;2) Install to a test machine.&lt;br /&gt;3) Rename the web extensions root (www) directory.&lt;br /&gt;4) Using a &lt;a href="http://tortoisesvn.tigris.org/"&gt;subversion client&lt;/a&gt;, checkout (or export) a copy of the &lt;a href="http://svn.osgeo.org/mapguide/sandbox/rfc71/"&gt;RFC71 sandbox&lt;/a&gt; into your www directory.&lt;br /&gt;5) Copy all the files and folders from the renamed directory into the www directory except for:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;mapviewerphp&lt;/li&gt;&lt;li&gt;mapviewernet&lt;/li&gt;&lt;li&gt;mapviewerjava&lt;/li&gt;&lt;li&gt;stdicons&lt;/li&gt;&lt;li&gt;viewerfiles&lt;/li&gt;&lt;li&gt;localized&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;6) Copy &lt;span style="font-weight: bold;"&gt;constants.php&lt;/span&gt; into the checked out &lt;span style="font-weight: bold;"&gt;mapviewerphp&lt;/span&gt;. When the .net implementation is done, you'll have to copy the mapguide dlls into the &lt;span style="font-weight: bold;"&gt;bin&lt;/span&gt; directory of the checked out &lt;span style="font-weight: bold;"&gt;mapviewernet&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;For those of you currently testing the 2.1 beta. Sorry, this feature is scoped for a 2.2 release. But I may be able to find some time to backport this to 2.1 and provide this enhancement as a separate download.&lt;br /&gt;&lt;br /&gt;Finally for those of you who do want to test drive this feature (following the above instructions). Just remember that this is a first cut. Expect things to break :-P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-8731719115594922129?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/8731719115594922129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=8731719115594922129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/8731719115594922129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/8731719115594922129'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/08/viewing-multiple-selected-features-in.html' title='Viewing multiple selected features in the AJAX viewer'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tWgkJLZDMpc/SnhyJNnworI/AAAAAAAAALc/CIIaH_e0F28/s72-c/ajax-before.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-8511487245015935003</id><published>2009-08-03T22:17:00.004+10:00</published><updated>2009-08-03T22:23:26.607+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='MapGuide'/><title type='text'>Negative buffer analysis</title><content type='html'>&lt;a href="http://geoexpressions.blogspot.com"&gt;Mike Schlosser&lt;/a&gt; has been thinking outside the box, and realised that &lt;a href="http://geoexpressions.blogspot.com/2009/08/how-to-use-negative-distances-in-your.html"&gt;buffering can go both ways&lt;/a&gt;. In his post, he demonstrates buffering using negative distances in AutoCAD Map3D.&lt;br /&gt;&lt;br /&gt;Well just out of curiosity I wondered if MapGuide can also handle negative buffers...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tWgkJLZDMpc/SnbVy94Ik-I/AAAAAAAAAKs/VYrCvuJdvu0/s1600-h/negativebuffer.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 177px;" src="http://4.bp.blogspot.com/_tWgkJLZDMpc/SnbVy94Ik-I/AAAAAAAAAKs/VYrCvuJdvu0/s400/negativebuffer.png" alt="" id="BLOGGER_PHOTO_ID_5365711077638706146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Guess so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-8511487245015935003?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/8511487245015935003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=8511487245015935003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/8511487245015935003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/8511487245015935003'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/08/negative-buffer-analysis.html' title='Negative buffer analysis'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_tWgkJLZDMpc/SnbVy94Ik-I/AAAAAAAAAKs/VYrCvuJdvu0/s72-c/negativebuffer.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-9061801433183338037</id><published>2009-07-27T23:11:00.005+10:00</published><updated>2009-07-29T20:18:04.900+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><title type='text'>The Expression Editor gets smarter (updated)</title><content type='html'>Once in a blue moon, you have an idea for something that's so awesome, that you obsessively try to implement it as fast as you can.&lt;br /&gt;&lt;br /&gt;I present to you, intellisense for the FDO Toolbox Expression Editor!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tWgkJLZDMpc/Sm2n4TguetI/AAAAAAAAAKc/-oQNglbzk-k/s1600-h/expreditor.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 219px;" src="http://3.bp.blogspot.com/_tWgkJLZDMpc/Sm2n4TguetI/AAAAAAAAAKc/-oQNglbzk-k/s400/expreditor.png" alt="" id="BLOGGER_PHOTO_ID_5363127317020179154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This new feature will be in the next release of FDO Toolbox. This is obviously a first cut, and I'm sure the auto-complete may pop up at inappropriate times, but it's quite a &lt;span style="font-style: italic;"&gt;usable&lt;/span&gt; first cut. It'll definitely make building expressions much easier.&lt;br /&gt;&lt;br /&gt;Update: 29/7: &lt;a href="http://trac.osgeo.org/mapguide/changeset/4097"&gt;This has been ported to Maestro&lt;/a&gt;, and it works in Mono!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-9061801433183338037?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/9061801433183338037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=9061801433183338037' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/9061801433183338037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/9061801433183338037'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/07/expression-editor-gets-bit-smarter.html' title='The Expression Editor gets smarter (updated)'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tWgkJLZDMpc/Sm2n4TguetI/AAAAAAAAAKc/-oQNglbzk-k/s72-c/expreditor.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-4207946310949627362</id><published>2009-07-26T02:37:00.005+10:00</published><updated>2009-07-26T02:59:50.949+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='MapGuide'/><title type='text'>Coming to a mapguide open source installer near you...</title><content type='html'>... The ability to choose which FDO providers to install.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tWgkJLZDMpc/Sms53MIjC-I/AAAAAAAAAKU/E5MW0qFE68c/s1600-h/fdoselection.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 318px;" src="http://1.bp.blogspot.com/_tWgkJLZDMpc/Sms53MIjC-I/AAAAAAAAAKU/E5MW0qFE68c/s400/fdoselection.png" alt="" id="BLOGGER_PHOTO_ID_5362443401627372514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This works for both installation, and change (post-installation).&lt;br /&gt;&lt;br /&gt;The only thing left to do here is to figure out in WiX how to initially disable the ArcSDE, Oracle, MySQL and PostGIS providers (since these providers require external libraries present) so that a "default" configuration works 100% out of the box.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-4207946310949627362?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/4207946310949627362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=4207946310949627362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/4207946310949627362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/4207946310949627362'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/07/coming-to-mapguide-open-source.html' title='Coming to a mapguide open source installer near you...'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tWgkJLZDMpc/Sms53MIjC-I/AAAAAAAAAKU/E5MW0qFE68c/s72-c/fdoselection.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-2631480428902339086</id><published>2009-07-22T23:08:00.002+10:00</published><updated>2009-07-22T23:24:03.279+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><title type='text'>fdotoolbox-users on Google Groups</title><content type='html'>I've finally created a google group for discussing FDO Toolbox. You need a Google Account to join.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/fdotoolbox-users"&gt;http://groups.google.com/group/fdotoolbox-users&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-2631480428902339086?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/2631480428902339086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=2631480428902339086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/2631480428902339086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/2631480428902339086'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/07/fdotoolbox-users-on-google-groups.html' title='fdotoolbox-users on Google Groups'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-6563558954215550656</id><published>2009-07-20T20:51:00.003+10:00</published><updated>2009-07-20T20:55:22.858+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><title type='text'>FOSS4G abstract accepted!</title><content type='html'>&lt;a href="http://2009.foss4g.org/presentations/#presentation_40"&gt;Here's what to expect from me at FOSS4G 2009&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-6563558954215550656?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/6563558954215550656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=6563558954215550656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/6563558954215550656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/6563558954215550656'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/07/foss4g-abstract-accepted.html' title='FOSS4G abstract accepted!'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-3656199353412149138</id><published>2009-07-15T13:41:00.014+10:00</published><updated>2009-07-18T01:32:39.986+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='MapGuide'/><title type='text'>Resource Templating in MapGuide</title><content type='html'>We've all heard about the benefits of templates and templating. It allows for reuse, consistency and standardisation. In this post, I'm going to illustrate how you can apply templating concepts to create reusable resource templates in MapGuide. Before we begin, I'm going to talk a bit about resources in MapGuide.&lt;div&gt;&lt;br /&gt;Resources in MapGuide are basically XML documents describing a whole host of assorted things. For example:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Feature Sources describe a FDO connection&lt;/li&gt;&lt;li&gt;Layer Definitions describe how a FDO feature class will be rendered&lt;/li&gt;&lt;li&gt;Map Definitions describe the layer structure and drawing order&lt;/li&gt;&lt;li&gt;Web Layouts describe the user interface elements of the AJAX viewer&lt;/li&gt;&lt;li&gt;Application Definitions (Flexible layouts) describe the user interface elements of the Fusion application&lt;/li&gt;&lt;li&gt;Symbol Definitions describe symbols&lt;/li&gt;&lt;li&gt;Load Procedures describe how a consuming application (ie. MapGuide Studio) would load a certain set of data.&lt;/li&gt;&lt;/ul&gt;These XML documents are sent back and forth from server to client (and back) via MapGuide's Resource Service API.&lt;br /&gt;&lt;br /&gt;Consider a user who is editing a Layer Definition in MapGuide Studio or MapGuide Maestro. The following process occurs when the user opens the resource for editing.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;MapGuide Studio/Maestro issues a GETRESOURCECONTENT call to the MapGuide Server for a specified resource id&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Server returns the XML content for that resource&lt;/li&gt;&lt;li&gt;MapGuide Studio/Maestro parses this XML content and presents this information in a layer editor user interface&lt;/li&gt;&lt;/ol&gt;Now consider the user has finished editing and saves the Layer Definition. The following process will take place:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;MapGuide Studio/Maestro rebuilds the XML document from the user interface.&lt;/li&gt;&lt;li&gt;MapGuide Studio/Maestro issues a SETRESOURCECONTENT call to the MapGuide Server on that particular resource id. The XML content is sent across the wire and saved into the repository.&lt;/li&gt;&lt;/ol&gt;By understanding this basic resource editing concept, I can now illustrate how you can effectively create resource templates in MapGuide, using Web Layouts as an example.&lt;br /&gt;&lt;br /&gt;Consider your standard AJAX viewer web layout.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tWgkJLZDMpc/SmCUtoxSzlI/AAAAAAAAAI0/Fo4EMTgl-Iw/s1600-h/ajaxviewer-vanilla.png"&gt;&lt;img src="http://3.bp.blogspot.com/_tWgkJLZDMpc/SmCUtoxSzlI/AAAAAAAAAI0/Fo4EMTgl-Iw/s400/ajaxviewer-vanilla.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5359447068330085970" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 233px; " /&gt;&lt;/a&gt;&lt;br /&gt;Now perhaps you don't like the default toolbar/context menu layout, or perhaps you've decided on a standardised user interface for all your MapGuide applications. So naturally you would edit the web layout in MapGuide Studio/Maestro so that it matches what you're after.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tWgkJLZDMpc/SmCVNw8Gs7I/AAAAAAAAAI8/zP_HmIx4TnI/s1600-h/ajaxviewer-modded.png"&gt;&lt;img src="http://4.bp.blogspot.com/_tWgkJLZDMpc/SmCVNw8Gs7I/AAAAAAAAAI8/zP_HmIx4TnI/s400/ajaxviewer-modded.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5359447620278727602" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 195px; " /&gt;&lt;/a&gt;&lt;br /&gt;Now imagine you are now creating another MapGuide application, but you need to maintain the same user interface as before. You could create a new Web Layout in Studio/Maestro and then edit it to match the previous one, or you could do the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Save the original web layout as an XML document.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Both MapGuide Studio and Maestro offer this function, you'll be asked to specify where you want to save the document.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Open the document in a text editor.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is what the above Web Layout looks like (only part of the content shown to avoid a 20-page blog post :-) ):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tWgkJLZDMpc/SmCWoeLSvcI/AAAAAAAAAJM/tCQ_wzbVgLg/s1600-h/weblayout-xml.png"&gt;&lt;img src="http://2.bp.blogspot.com/_tWgkJLZDMpc/SmCWoeLSvcI/AAAAAAAAAJM/tCQ_wzbVgLg/s400/weblayout-xml.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5359449178610253250" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 210px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Take out the map resource id and save it.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Or alternatively put some kind of textual placeholder in there so you know where to go. You now have a Web Layout resource template that can be reused for other maps.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tWgkJLZDMpc/SmCWonDGgGI/AAAAAAAAAJU/xRG6nCnJEXY/s1600-h/weblayout-xml-modified.png"&gt;&lt;img src="http://3.bp.blogspot.com/_tWgkJLZDMpc/SmCWonDGgGI/AAAAAAAAAJU/xRG6nCnJEXY/s400/weblayout-xml-modified.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5359449180991815778" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 220px; " /&gt;&lt;/a&gt;&lt;br /&gt;So how do you use this template for other maps? Like so:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Get the resource id of the map in question&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The resource id is similar to: Library://Path/To/My.MapDefinition&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Open and Edit a copy of the Web Layout Template&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Look for the map resource id element (or your textual placeholder, if you added one in) and put the above resource id in its place.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tWgkJLZDMpc/SmCWoAMjcZI/AAAAAAAAAJE/dyR9PnfdTlQ/s1600-h/weblayout-pluggedin.png"&gt;&lt;img src="http://2.bp.blogspot.com/_tWgkJLZDMpc/SmCWoAMjcZI/AAAAAAAAAJE/dyR9PnfdTlQ/s400/weblayout-pluggedin.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5359449170562478482" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 126px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Save this document into the repository.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here's where you need to understand how resource editing in MapGuide works under the hood (explained at the beginning of this post. Go on, I'll wait for you :-) )&lt;br /&gt;&lt;br /&gt;So now the question becomes, how do you issue this SETRESOURCECONTENT call?&lt;br /&gt;&lt;br /&gt;When Studio/Maestro are sending and receiving these commands and XML documents to/from the MapGuide Server, they are talking to a component of MapGuide known as the &lt;span style="font-weight: bold;"&gt;mapagent&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The mapagent is a public endpoint that exposes MapGuide's services to the outside world via HTTP. All MapGuide client components, whether it is Studio, Maestro, the AJAX viewer or the Fusion viewer are talking to this mapagent for most of their operations.&lt;br /&gt;&lt;br /&gt;So now we know we have to talk to the mapagent to load our Web Layout document, but still how do we do it?&lt;br /&gt;&lt;br /&gt;Well the mapagent comes with a rudimentary web-based user interface (rudimentary because it's designed for automated tests, not humans :-) ) that allows you to talk to the mapagent from your web browser. Assuming a standard Apache/PHP MapGuide installation, the mapagent web interface is located at:&lt;br /&gt;&lt;br /&gt;http://yourmapguideserver:8008/mapguide/mapagent/index.html&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For MapGuide Enterprise [year], it is:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://yourmapguideserver:8008/mapguide[year]/mapagent/index.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tWgkJLZDMpc/SmCXL524BSI/AAAAAAAAAJc/_tkWAFdFj8I/s1600-h/mapagent-forms.png"&gt;&lt;img src="http://2.bp.blogspot.com/_tWgkJLZDMpc/SmCXL524BSI/AAAAAAAAAJc/_tkWAFdFj8I/s400/mapagent-forms.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5359449787336230178" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 328px; " /&gt;&lt;/a&gt;&lt;br /&gt;What we want to do now, is locate the SetResource form, and bring it up&lt;br /&gt;&lt;br /&gt;Looking at the fields, most are self-explanatory. We just need to specify:&lt;br /&gt;&lt;br /&gt;a) The resource id where we want to save this Web Layout&lt;br /&gt;b) The path of the Web Layout document to upload&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tWgkJLZDMpc/SmCXr1HJYeI/AAAAAAAAAJk/w7izCZ-Lo3Y/s1600-h/mapagent-setresource.png"&gt;&lt;img src="http://3.bp.blogspot.com/_tWgkJLZDMpc/SmCXr1HJYeI/AAAAAAAAAJk/w7izCZ-Lo3Y/s400/mapagent-setresource.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5359450335818113506" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 202px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;So fill these values in and click Submit. You'll be asked for a username and password, because any mapagent operation to be performed requires authentication. So fill in the username and password for the Administrator and click OK.&lt;br /&gt;&lt;br /&gt;Once that is done, you'll get a nice blank screen which is the mapagent's way of saying success. If you have Studio/Maestro open, refreshing it will now show your web layout right where you specified.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tWgkJLZDMpc/SmCYMV2nLDI/AAAAAAAAAJ0/ixWkZj_e5WQ/s1600-h/siteexplorer.png"&gt;&lt;img src="http://3.bp.blogspot.com/_tWgkJLZDMpc/SmCYMV2nLDI/AAAAAAAAAJ0/ixWkZj_e5WQ/s400/siteexplorer.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5359450894362946610" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 222px; height: 97px; " /&gt;&lt;/a&gt;&lt;br /&gt;Load the AJAX viewer with this web layout and VOILA! You'll be greeted with the same identical user interface but with a different map.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tWgkJLZDMpc/SmCYkDLmy_I/AAAAAAAAAJ8/_OvTdgaccrI/s1600-h/weblayout-template.png"&gt;&lt;img src="http://1.bp.blogspot.com/_tWgkJLZDMpc/SmCYkDLmy_I/AAAAAAAAAJ8/_OvTdgaccrI/s400/weblayout-template.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5359451301667589106" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 207px; " /&gt;&lt;/a&gt;&lt;br /&gt;This technique can be applied to any MapGuide resource (they are all XML documents remember), but it may prove cumbersome or error-prone for certain types of resources (eg. You could have "templated" Layer Definitions with consistent zoom levels and style rules, but the feature source you're referencing better have the expected feature class and properties, otherwise things will break)&lt;br /&gt;&lt;br /&gt;... and that is how you can create reusable resource templates in a nutshell.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-3656199353412149138?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/3656199353412149138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=3656199353412149138' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/3656199353412149138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/3656199353412149138'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/07/resource-templating-in-mapguide.html' title='Resource Templating in MapGuide'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tWgkJLZDMpc/SmCUtoxSzlI/AAAAAAAAAI0/Fo4EMTgl-Iw/s72-c/ajaxviewer-vanilla.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-5430681773994431893</id><published>2009-07-08T17:05:00.014+10:00</published><updated>2009-08-19T18:37:34.688+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='MapGuide'/><title type='text'>The expressive power of MapGuide Tooltips</title><content type='html'>One feature in MapGuide that some people may overlook (in terms of utility) is tooltips.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;They look simple enough, you use them to display certain attributes when your mouse pointer is over a feature. But what some may not realise is how these tooltips are implemented in the AJAX (or Fusion) viewer.&lt;br /&gt;&lt;br /&gt;These tooltips are implemented in the viewer as HTML div containers. What this means is that given some knowledge of basic HTML, you can create some really cool and powerful tooltips.&lt;br /&gt;&lt;br /&gt;Case in point, I present to you exhibit A:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tWgkJLZDMpc/SmCGVNF3EVI/AAAAAAAAAIE/EhqvfXx20gM/s1600-h/imageTooltip.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 270px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5359431255420506450" border="0" alt="" src="http://2.bp.blogspot.com/_tWgkJLZDMpc/SmCGVNF3EVI/AAAAAAAAAIE/EhqvfXx20gM/s320/imageTooltip.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;(from the SpokaneMaps.com MapGuide Application)&lt;br /&gt;&lt;br /&gt;The HTML for this tooltip would be something similar to this (image only, I gave up on trying to escape markup in blogger):&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tWgkJLZDMpc/SmCMMpHR8TI/AAAAAAAAAIM/YwTwLvKwsdM/s1600-h/imageTooltipHtml.png"&gt;&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 38px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5359437705393598770" border="0" alt="" src="http://2.bp.blogspot.com/_tWgkJLZDMpc/SmCMMpHR8TI/AAAAAAAAAIM/YwTwLvKwsdM/s320/imageTooltipHtml.png" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="color:#0000ee;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;In MapGuide Studio/Maestro this would translate as something like (image only for the same reasons):&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_tWgkJLZDMpc/Sou4Oa1JvEI/AAAAAAAAAL0/oARzNxYyrjU/s1600-h/exprTooltip.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 28px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5371589538429385794" border="0" alt="" src="http://4.bp.blogspot.com/_tWgkJLZDMpc/Sou4Oa1JvEI/AAAAAAAAAL0/oARzNxYyrjU/s400/exprTooltip.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;It might look incredibly complex, but what that expression is basically doing is stringing together multiple fragments of HTML with specific feature class attributes. It's a bit cumbersome to have to use so many nested concat() calls, but the Expression Editor in MapGuide Studio can really help you here. It is also worth noting that there is going to be &lt;a href="http://trac.osgeo.org/fdo/wiki/FDORfc22"&gt;a cleaner concat() function&lt;/a&gt; in the near future, so until then this is the only way to do it.&lt;br /&gt;&lt;br /&gt;Here's a practical example.&lt;br /&gt;&lt;br /&gt;Google offers a free API that lets you generate dynamic charts and graphs all from a simple url. This graph below is one such example (right click and view the page source if you want)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://chart.apis.google.com/chart?cht=p3&amp;amp;chd=t:60,40&amp;amp;chs=250x100&amp;amp;chl=HelloWorld" /&gt;&lt;br /&gt;&lt;br /&gt;This chart is basically a HTML img tag with the following url:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://chart.apis.google.com/chart?cht=p3&amp;amp;chd=t:60,40&amp;amp;chs=250x100&amp;amp;chl=HelloWorld"&gt;http://chart.apis.google.com/chart?cht=p3&amp;amp;chd=t:60,40&amp;amp;chs=250x100&amp;amp;chl=HelloWorld&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you study the url carefully, you'll see that there is a parameter asking for the values to be charted, and another parameter asking for the labels for these charted values. Now consider the Parcels layer of the Sheboygan sample dataset:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tWgkJLZDMpc/SmCOOU9zjBI/AAAAAAAAAIc/jYZOEwwgbcA/s1600-h/fsPreview.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 227px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5359439933368142866" border="0" alt="" src="http://3.bp.blogspot.com/_tWgkJLZDMpc/SmCOOU9zjBI/AAAAAAAAAIc/jYZOEwwgbcA/s320/fsPreview.png" /&gt;&lt;/a&gt;&lt;br /&gt;Suppose we want to represent the values of RYEAR, GEOEXTRA and RBLDGVC in a pie chart (I know this probably makes no sense from a reporting perspective, it's just for the sake of argument)&lt;br /&gt;&lt;br /&gt;The tooltip expression for the Parcels layer would be something like:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tWgkJLZDMpc/SmCQX0p4X6I/AAAAAAAAAIs/I3kUol2jWrI/s1600-h/exprEditor.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 107px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5359442295516585890" border="0" alt="" src="http://2.bp.blogspot.com/_tWgkJLZDMpc/SmCQX0p4X6I/AAAAAAAAAIs/I3kUol2jWrI/s400/exprEditor.png" /&gt;&lt;/a&gt;&lt;br /&gt;When we now put our mouse over a Parcel, this is what we get:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tWgkJLZDMpc/SmCQXuibsVI/AAAAAAAAAIk/VqEGt_L3cL4/s1600-h/piechartToolTip.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 141px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5359442293874733394" border="0" alt="" src="http://4.bp.blogspot.com/_tWgkJLZDMpc/SmCQXuibsVI/AAAAAAAAAIk/VqEGt_L3cL4/s400/piechartToolTip.png" /&gt;&lt;/a&gt;&lt;br /&gt;Pretty cool eh? So now you may be thinking, how far can I take this?&lt;br /&gt;&lt;br /&gt;If you know your HTML, you know that there is an element called IFRAME. Short for Inline Frame, this element allows you to "embed" other web content inside the iframe element. What this means is that, armed with the knowledge of iframes and MapGuide expressions, you can embed almost &lt;span style="FONT-WEIGHT: bold"&gt;anything&lt;/span&gt; inside your tooltip!&lt;br /&gt;&lt;br /&gt;I'll leave this to your imagination. But before you go too crazy on tooltips, just remember that the tooltip will always be following the mouse pointer, so it's kind of pointless to put HTML content that requires user input in there (like forms or buttons)&lt;br /&gt;&lt;br /&gt;Happy tooltipping! &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Update (19 August): Fixed the 2nd code image&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-5430681773994431893?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/5430681773994431893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=5430681773994431893' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/5430681773994431893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/5430681773994431893'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/07/expressive-power-of-mapguide-tooltips.html' title='The expressive power of MapGuide Tooltips'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tWgkJLZDMpc/SmCGVNF3EVI/AAAAAAAAAIE/EhqvfXx20gM/s72-c/imageTooltip.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-3439320276059817852</id><published>2009-07-01T22:27:00.004+10:00</published><updated>2009-07-01T22:44:34.111+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MapGuide'/><title type='text'>MapGuide Migration Tool (finally updated)</title><content type='html'>Those of you who remembered when &lt;a href="http://www.mapguide.com"&gt;MapGuide Enterprise&lt;/a&gt; 2007 first came out, there was also a migration tool that allowed you to convert an existing MapGuide 6.5 dataset over to an MGE 2007 repository.&lt;br /&gt;&lt;br /&gt;However, as new yearly releases of MapGuide Enterprise came out, the migration tool hadn't been updated to match the new releases, &lt;a href="http://usa.autodesk.com/adsk/servlet/index?siteID=123112&amp;amp;id=7429087&amp;amp;linkID=9242099"&gt;until now&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Autodesk have finally updated their data migration tool. Now you can migrate a MapGuide 6.5 dataset to a MapGuide Enterprise 2008, 2009 or 2010 repository.&lt;br /&gt;&lt;br /&gt;As for me personally, I don't really have a need to use such a tool. It's great for a quick-and-easy migration job, but over time you (or your colleagues) will have to maintain that spatial data, and you really want to do it without the 6.5 cruft that may still reside in your spatial data. (eg. Breaking away from the restrictive Key/Url/Name trinity)&lt;br /&gt;&lt;br /&gt;But if you've been stuck in 6.5 land and have just gotten started with MapGuide Enterprise, it's a nice way to easily migrate data. It is also a nice way to visualise how your 6.5 data looks like in 2008, 2009 or 2010, since MapGuide 6.5 and MapGuide Enterprise are totally different (architecturally and conceptually)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-3439320276059817852?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/3439320276059817852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=3439320276059817852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/3439320276059817852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/3439320276059817852'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/07/mapguide-migration-tool-finally-updated.html' title='MapGuide Migration Tool (finally updated)'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-2042104185064666264</id><published>2009-06-18T01:29:00.005+10:00</published><updated>2009-06-18T01:49:11.581+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><category scheme='http://www.blogger.com/atom/ns#' term='FOSS4G'/><title type='text'>Want to hear more about FDO Toolbox at FOSS4G 2009?</title><content type='html'>A few weeks ago, I submitted a presentation abstract for &lt;a href="http://2009.foss4g.org"&gt;FOSS4G 2009. &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My idea of this presentation is simply an introductory presentation about &lt;a href="http://fdotoolbox.googlecode.com"&gt;FDO Toolbox&lt;/a&gt; and a summary of some of the cool things you can do with it. Given the alloted 25 mins presentation time, that's probably all I can cover :-)&lt;br /&gt;&lt;br /&gt;It's now up against 170 other submissions vying for a presentation slot at FOSS4G 2009.&lt;br /&gt;&lt;br /&gt;If you are attending the event, and would like to hear more about FDO Toolbox, &lt;a href="http://wiki.osgeo.org/wiki/FOSS4G_2009_Program#Presentation_Voting"&gt;vote #1&lt;/a&gt; for the abstract titled "Introduction to FDO Toolbox"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-2042104185064666264?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/2042104185064666264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=2042104185064666264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/2042104185064666264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/2042104185064666264'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/06/want-to-hear-more-about-fdo-toolbox-at.html' title='Want to hear more about FDO Toolbox at FOSS4G 2009?'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-4430358881868827219</id><published>2009-06-10T03:03:00.003+10:00</published><updated>2009-06-10T03:20:57.845+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><title type='text'>Calling all 64-bit users...</title><content type='html'>I have put a new release of &lt;a href="http://code.google.com/p/fdotoolbox/downloads/list"&gt;FDO Toolbox&lt;/a&gt; (0.7.8) that is at least known to run on Windows XP x64. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you have a 64-bit windows box lying around, give this release a spin and &lt;a href="http://code.google.com/p/fdotoolbox/issues/detail?id=159"&gt;let me know how it goes&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-4430358881868827219?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/4430358881868827219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=4430358881868827219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/4430358881868827219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/4430358881868827219'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/06/calling-all-64-bit-users.html' title='Calling all 64-bit users...'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-3423830739311466292</id><published>2009-06-07T21:57:00.003+10:00</published><updated>2009-06-07T22:35:49.605+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='FDO'/><title type='text'>FDO Toolbox v0.7.7</title><content type='html'>It's that time... for a new release of FDO Toolbox. Some of the new features:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Custom file drag and drop handler support&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can now drag and drop the following files into FDO Toolbox&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;SDF, SHP and SQLite files&lt;/li&gt;&lt;li&gt;Feature Schema files&lt;/li&gt;&lt;li&gt;Saved connection files&lt;/li&gt;&lt;li&gt;Bulk Copy Definitions&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Missing 0.6 features re-implemented&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;When bulk copying form a source connection to a target connect and the target connect has no schemas defined, it will copy every source feature class.&lt;/li&gt;&lt;li&gt;RunTask command for FdoUtil.exe re-implemented&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Other new features&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Schema Editor&lt;/b&gt; now supports Association and Object Properties&lt;/li&gt;&lt;li&gt;You can now run non-SELECT SQL queries in the &lt;b&gt;Data Query&lt;/b&gt; view&lt;/li&gt;&lt;li&gt;Features that failed ot be processed in an ETL task are now properly logged with exception details and a textual dump of the failed feature.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Also, this release includes some major fixes:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Fix copy spatial contexts for SQL Server 2008&lt;/li&gt;&lt;li&gt;Bulk Copy now properly handles multiple feature classes&lt;/li&gt;&lt;li&gt;Bulk Copy now properly handles computed expression properties&lt;/li&gt;&lt;li&gt;Protected properties are now obfuscated in the connection tooltip, to not leak any sensitive data.&lt;/li&gt;&lt;li&gt;Invalid spatial context assocations in a Feature Schema are now handled gracefully when loaded and applied from a saved definition.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Finally this includes an updated FDO 3.4.0 distribution. This should have the &lt;a href="http://trac.osgeo.org/fdo/ticket/509"&gt;updated OGR provider&lt;/a&gt; with &lt;a href="http://trac.osgeo.org/fdo/ticket/498"&gt;an important refcount fix&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is highly recommeded to get this release if you use the bulk copy feature a lot, as this fixes some major defects in that department.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/p/fdotoolbox/downloads/list"&gt;Download&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/p/fdotoolbox/issues/list"&gt;Report bugs or feature enhancements&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-3423830739311466292?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/3423830739311466292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=3423830739311466292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/3423830739311466292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/3423830739311466292'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/06/fdo-toolbox-v077.html' title='FDO Toolbox v0.7.7'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-105579648840687391</id><published>2009-05-26T18:32:00.007+10:00</published><updated>2009-05-26T19:52:30.514+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGeo'/><category scheme='http://www.blogger.com/atom/ns#' term='MapGuide'/><title type='text'>MapGuide Open Source 2.1 beta released</title><content type='html'>&lt;div&gt;It's been a long winding road up to this point, but it has finally arrived. &lt;a href="http://mapguide.osgeo.org/"&gt;MapGuide Open Source&lt;/a&gt; 2.1 is now in beta!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://mapguide.osgeo.org/download/releases/2.1.0"&gt;Get the MGOS 2.1 beta 1 installer here&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So what's new in this release?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Brand New Installer&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;Here is main reason why 2.1 took so long to get out the door.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;The first thing you will notice when installing MapGuide Open Source 2.1 is the new &lt;a href="http://wix.sourceforge.net/"&gt;wix-based&lt;/a&gt;,&lt;a href="http://www.osgeo.org/"&gt;OSGeo-branded&lt;/a&gt; installer, developed with the combined efforts of &lt;a href="http://www.jasonbirch.com/nodes"&gt;Jason Birch&lt;/a&gt;, Kenneth Skovhede and myself.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;There is no more separate Server and Web Extensions installers, they are now both integrated into the same installer. It functions just like the old one, but &lt;a href="http://trac.osgeo.org/mapguide/ticket/944"&gt;with&lt;/a&gt; &lt;a href="http://trac.osgeo.org/mapguide/ticket/360"&gt;more&lt;/a&gt; &lt;a href="http://trac.osgeo.org/mapguide/ticket/938"&gt;extras&lt;/a&gt;. You should get a much better and more flexible installation experience than with previous releases.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;Unfortunately for this release, a reboot is mandatory after installation completes. We are looking at &lt;a href="http://trac.osgeo.org/mapguide/ticket/917"&gt;ways to avoid this&lt;/a&gt; in the next release.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;A side-benefit of this new installer is that we now have the infrastructure in place to produce more frequent releases, once &lt;a href="http://trac.osgeo.org/mapguide/wiki/MapGuideRfc58"&gt;that build server&lt;/a&gt; is up and running at full operational capacity, we can start to see nightly/weekly MapGuide builds for testers or those who like to live on the edge.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;Also the installer is &lt;a href="http://trac.osgeo.org/mapguide/ticket/897"&gt;localization-ready&lt;/a&gt;. Translating the installer is a piece of cake.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;Please note that the installer will require at least 1.5 GB of free space during installation.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Fusion 2.0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;MapGuide also comes with the latest release of &lt;a href="http://trac.osgeo.org/fusion"&gt;Fusion&lt;/a&gt;, which has undergone &lt;a href="http://trac.osgeo.org/fusion/wiki/Releases/2.0.0/Notes"&gt;major architectural changes&lt;/a&gt; to not only simplify the codebase but to also have better performance. The 5 mapguide templates have also undergone a makeover in the visual department. IMO, Slate 2.0 looks damn hot!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; "&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tWgkJLZDMpc/ShuzOXn5MkI/AAAAAAAAAH8/MywUUe-ftmQ/s1600-h/fusion-2.0-turquoiseyellow.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 204px;" src="http://4.bp.blogspot.com/_tWgkJLZDMpc/ShuzOXn5MkI/AAAAAAAAAH8/MywUUe-ftmQ/s320/fusion-2.0-turquoiseyellow.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5340058842618737218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tWgkJLZDMpc/ShuzObtrOdI/AAAAAAAAAH0/GsbxjwARGjE/s1600-h/fusion-2.0-slate.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 185px;" src="http://2.bp.blogspot.com/_tWgkJLZDMpc/ShuzObtrOdI/AAAAAAAAAH0/GsbxjwARGjE/s320/fusion-2.0-slate.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5340058843716729298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tWgkJLZDMpc/ShuzOMrq-JI/AAAAAAAAAHs/cKsYNXGDNNQ/s1600-h/fusion-2.0-maroon.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 204px;" src="http://4.bp.blogspot.com/_tWgkJLZDMpc/ShuzOMrq-JI/AAAAAAAAAHs/cKsYNXGDNNQ/s320/fusion-2.0-maroon.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5340058839681792146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tWgkJLZDMpc/ShuzN5pvL6I/AAAAAAAAAHk/BDmRwbMRJi8/s1600-h/fusion-2.0-limegold.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 202px;" src="http://4.bp.blogspot.com/_tWgkJLZDMpc/ShuzN5pvL6I/AAAAAAAAAHk/BDmRwbMRJi8/s320/fusion-2.0-limegold.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5340058834573406114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tWgkJLZDMpc/ShuzN7U_f7I/AAAAAAAAAHc/WvgedJ73XbI/s1600-h/fusion-2.0-aqua.JPG"&gt;&lt;img style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 320px; height: 184px; text-align: center; " src="http://4.bp.blogspot.com/_tWgkJLZDMpc/ShuzN7U_f7I/AAAAAAAAAHc/WvgedJ73XbI/s320/fusion-2.0-aqua.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5340058835023265714" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;CS-Map&lt;/span&gt;&lt;/div&gt;&lt;div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; "&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;MapGuide now uses the &lt;a href="http://trac.osgeo.org/csmap/"&gt;CS-Map&lt;/a&gt; library, instead of Proj.4 for handling coordinate systems. This library has previously only been available in Autodesk's geospatial product line (AutoCAD Map, MapGuide Enterprise). Incidentally, this is also the reason for the vastly inflated installer size, because we had to pack in &lt;a href="http://trac.osgeo.org/mapguide/ticket/933"&gt;350MB of coordinate system dictionaries&lt;/a&gt; (around 4000 different coordinate systems).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;AJAX Viewer Fixes/Enhancements&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The AJAX viewer has also undergone some fixes and enhancements which although minor in the grand scheme of things, actually improve the end user experience immensely.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://trac.osgeo.org/mapguide/ticket/797"&gt;Basic viewer commands now have matching cursors&lt;/a&gt;. Your AJAX viewer user interface is now graced with the following cursors.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tWgkJLZDMpc/Shuvv1ACKJI/AAAAAAAAAHU/d0e-8HgIbuE/s1600-h/ajax-cursors.JPG" style="text-decoration: none;"&gt;&lt;img style="text-align: left;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 379px; height: 385px; " src="http://3.bp.blogspot.com/_tWgkJLZDMpc/Shuvv1ACKJI/AAAAAAAAAHU/d0e-8HgIbuE/s400/ajax-cursors.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5340055019393788050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://trac.osgeo.org/mapguide/ticket/800"&gt;The legend now displays which layers are selectable&lt;/a&gt;. These layers can have their selectability toggled just by clicking the selectable icon (indicated by a mouse arrow pointer in the legend).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tWgkJLZDMpc/ShuvKYiOI9I/AAAAAAAAAHM/jMHcV0wYpvU/s1600-h/ajax-layer-selectability.JPG" style="text-decoration: none;"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 380px;" src="http://1.bp.blogspot.com/_tWgkJLZDMpc/ShuvKYiOI9I/AAAAAAAAAHM/jMHcV0wYpvU/s400/ajax-layer-selectability.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5340054376097391570" /&gt;&lt;/a&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'Times New Roman';"&gt;&lt;div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; "&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://trac.osgeo.org/mapguide/ticket/809"&gt;The task pane url now supports parameters&lt;/a&gt;. In previous versions, if your task pane url is like (mypage.php?foo=bar), the query string part would've been lost. Now those query string parameters get properly passed down. This was a bug that had annoyed me for quite some time now and I am glad to see it got fixed.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Site Administrator Enhancements&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are also some small enhancements to the MapGuide Site Administrator.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Packages now show file size, useful for determining how long a package would take to load.&lt;/li&gt;&lt;li&gt;The package list can now be refreshed. Before, you would've had to go to another page and then back to &lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Package Management&lt;/span&gt;. Very cumbersome to say the least.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Others&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;The 2.1 release also has the improvements already found in the just released MapGuide Enterprise 2010. These include:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Greater legend flexiblity&lt;/li&gt;&lt;li&gt;Raster Re-Projection&lt;/li&gt;&lt;li&gt;Better performing schema description APIs&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;And from what &lt;a href="http://n2.nabble.com/PATCH:--Raster-stability-fixes,-ticket--462-td2542880.html"&gt;our testers have been saying&lt;/a&gt;, &lt;a href="http://trac.osgeo.org/mapguide/ticket/462"&gt;raster stability&lt;/a&gt; in this release has been greatly improved as well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also &lt;a href="http://trac.osgeo.org/mapguide/query?status=closed&amp;amp;group=component&amp;amp;resolution=fixed&amp;amp;milestone=2.1&amp;amp;order=status"&gt;a mountain of bug fixes have landed&lt;/a&gt; since the previous release (2.0.2)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So in all, this is a very solid release. I know personally that some of my long standing pet peeves have been resolved (&lt;a href="http://n2.nabble.com/Add-Jackie-as-committer--td2357485.html"&gt;being able to do something about them directly kind of helps :-)&lt;/a&gt;). So if you haven't already, &lt;a href="http://mapguide.osgeo.org/download/releases/2.1.0"&gt;download a copy&lt;/a&gt; and take it for a spin. This is a beta release, so bugs (if any) should be reported. &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-105579648840687391?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/105579648840687391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=105579648840687391' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/105579648840687391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/105579648840687391'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/05/mapguide-open-source-21-beta-released.html' title='MapGuide Open Source 2.1 beta released'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_tWgkJLZDMpc/ShuzOXn5MkI/AAAAAAAAAH8/MywUUe-ftmQ/s72-c/fusion-2.0-turquoiseyellow.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1951542926024108564.post-8940002482818453457</id><published>2009-04-28T23:26:00.013+10:00</published><updated>2009-04-29T00:55:42.334+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='other'/><title type='text'>Oh Qt, you almost had me sold</title><content type='html'>The past week and a bit, I've been getting to know more about the &lt;a href="http://www.qtsoftware.com/"&gt;Qt cross platform toolkit&lt;/a&gt;. It's one of those software toolkits that looks like the total package. At first glance, it seems to have all the attributes I was after:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Multi-platform&lt;/li&gt;&lt;li&gt;High-performance&lt;/li&gt;&lt;li&gt;Rich set of features&lt;/li&gt;&lt;li&gt;Excellent documentation&lt;/li&gt;&lt;li&gt;Powerful IDE&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;It is one of those C++ libraries that would make we want to seriously relearn C++ :-) (I haven't really used C++ since my University days, ie. 5 years ago!)&lt;br /&gt;&lt;br /&gt;I was about to possibly consider using this toolkit for one or more of &lt;a href="http://www.aecsystems.com.au/"&gt;my company's&lt;/a&gt; future commerical software projects, because it seems to have ticked all the right boxes...&lt;br /&gt;&lt;br /&gt;... until I saw this &lt;a href="http://www.qtsoftware.com/products/licensing/licensing#qt-commercial-license"&gt;legal disclaimer&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;You must purchase a Qt Commercial License from Qt Software or from one of its authorized resellers &lt;span style="font-weight: bold;"&gt;before you start developing commercial software&lt;/span&gt;. The Commercial license does not allow the incorporation of code developed with the Qt GNU LGPL v. 2.1 or GNU GPL v. 3.0 license versions into a commercial product.&lt;/blockquote&gt;IANAL, but &lt;span style="font-weight: bold;"&gt;as a Qt newbie&lt;/span&gt;, this is an absolute bummer. It means if I used the Open Source edition for evaluation purposes, as a testbed for ideas and concepts (because we can't just dive in head first without testing the waters), they are forever bound under the Open Source licensing terms.  I'm aware a 30-day commercial evaluation license exists, but in my line of work, 30 days flies by real quickly.&lt;br /&gt;&lt;br /&gt;While I'm all for Open Source software, this is really disappointing in my company's interests. If I was to use Qt in my company, I would want to use it under the commercial license for peace of mind (even though LGPL would probably be safe enough). To me, that statement reads more like:&lt;br /&gt;&lt;blockquote&gt;If you decide to purchase a Qt commercial license, you better damn well know what you're going to do with it.&lt;br /&gt;&lt;/blockquote&gt;Operating essentially as a "one-man band" developer in my company, it's quite hard to justify a purchase of a commerical license to "learn" this toolkit which at the end of the day, may not do what I was originally hoping it would do. It is even harder in this economic climate (It's &lt;span style="visibility: visible;" id="main"&gt;&lt;span style="visibility: visible;" id="search"&gt;&lt;em&gt;cliché&lt;/em&gt;&lt;/span&gt;&lt;/span&gt; I know).&lt;br /&gt;&lt;br /&gt;This would be like saying, if you use &lt;a href="http://mapguide.osgeo.org/"&gt;MapGuide Open Source&lt;/a&gt; to serve your maps and spatial data, you can't upscale to &lt;a href="http://www.mapguide.com/"&gt;MapGuide Enterprise&lt;/a&gt; (or even &lt;a href="http://usa.autodesk.com/adsk/servlet/index?siteID=123112&amp;amp;id=6038912"&gt;Topobase&lt;/a&gt;) in the future. Others may not think this is the most suitable analogy :-)&lt;br /&gt;&lt;br /&gt;I may have come off as ranting a bit, but I'm not really. I guess I'll have to shelve my plans for using Qt in my company for now (or convince them it is safe to use LGPL libraries). Maybe I'll come back in a year or two, when I'm no longer a Qt newbie and can dive into development straight away.&lt;br /&gt;&lt;br /&gt;But for my future personal projects? I'm still waiting for Qt to finish compiling.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951542926024108564-8940002482818453457?l=themapguyde.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://themapguyde.blogspot.com/feeds/8940002482818453457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1951542926024108564&amp;postID=8940002482818453457' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/8940002482818453457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1951542926024108564/posts/default/8940002482818453457'/><link rel='alternate' type='text/html' href='http://themapguyde.blogspot.com/2009/04/oh-qt-you-almost-had-me-sold.html' title='Oh Qt, you almost had me sold'/><author><name>Jackie Ng</name><uri>http://www.blogger.com/profile/14319639645667992869</uri><email>jumpinjackie@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17215859578502309571'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry></feed>