Data Warehousing Goodness with FDO Toolbox (sorta)

Ok, not real data warehousing (no star schema here) but anyone who has dealt with performance issues in MapGuide due to on-the-fly joins across heterogeneous data sources knows the value of loading read-only data sets into static SDF (or SQLite!) files for rapid display.

With release 0.50 of FDO Toolbox, Jackie has done it again by allowing users to quickly take data from both spatial (FDO) data sources, and non-spatial (OLEDB) data sources, join them together, and write out performance-optimized files. This is a huge boon for folks that need to do this and can’t afford best-of-breed proprietary tools like Safe Software’s FME.

Jackie has really impressed me with the rapid development of this tool as well as his focus on providing value in three distinct areas. First, FDO Toolbox has a great GUI for FDO data transfer and administration. Second, the command line capabilities allow you to set up scheduled translations to keep your SDF files in sync with your corporate data stores. Finally, FDO Toolbox has a minimal profile and can easily be used by install scripts that need to load data, register FDO providers, and other tasks during an automated application installation.

What’s next on the horizon? Jackie’s recent post on an FDO plug-in for SharpMap provides a hint… spatial data inspection coming soon to FDO Toolbox! Now if there was only a way of plugging FDO Toolbox into MapGuide Maestro to transform data and either create packages or load data directly into MapGuide. ;)

-J

CS-Map: What’s the big deal?

Last year at FOSS4G, Autodesk announced that they had acquired and would be open sourcing the CS-Map coordinate system library. Today, with another press release, they announced that the source code is now available (and there’s a nice mention of MapGuide Maestro in there too). The press release doesn’t specify this, but the license selected for CS-Map is the extremely liberal BSD License.

Why is this significant? Basically, because coordinate system identification and transformation is critical to almost every geospatial application. The bus factor on CS projects is generally extremely low, and they require a high degree of specialized knowledge to deliver accurate results. Having multiple projects out there means that differences in coordinate system handling and metadata can create a barrier to data sharing and interoperability. Making CS-Map open source allows open collaboration between CS-Map, PROJ.4, and other open source coordinate libraries. This was recognized in the community quite quickly, and the MetaCRS project was set up in January to allow open communication and collaboration between these projects.

This collaboration is already bearing fruit. Between Oracle 9 and Oracle 10, coordinate system handling changed considerably. Seeing this, GDAL / OGR developers working on an Oracle driver posted to the MetaCRS mailing list asking for feedback. As a result of this conversation, OGR will be calling out to CS-Map to handle Oracle coordinate systems, joining (or maybe even beating) MapGuide as an early adopter of open source CS-Map. It is clear that MetaCRS provides great value as a key initiative in open source geospatial, and I wholeheartedly support its imminent application to enter OSGeo’s incubation process.

For those of you who care, the source code for CS-Map is available on the OSGeo infrastructure. You can access it through either raw SVN, or in a more human-friendly Trac interface.

Congratulations to Autodesk and Norm Olsen for taking this important step, and to the MetaCRS community for joining together to take advantage of it!

-J

MapGuide Maestro (a brief introduction)

For a large part of MapGuide Open Source’s history, you could only author maps using either Autodesk’s MapGuide Studio, which is a great and relatively inexpensive tool but not open source, or Web Studio which was never finished to the point that it could be used to build a MapGuide application from scratch.

In September of last year, Kenneth Skovhede changed this with the introduction of Map Studio Open Source. This application, built using C# and supported under .Net and Mono, was immediately more functional that Web Studio.

Fast forward seven months. Having built considerable support and functionality in a short amount of time, Map Studio Open Source was clearly a viable project and was providing benefit to the MapGuide Open Source community. After some discussions between Kenneth and the MapGuide project steering committee, an RFC was created to bring Map Studio Open Source officially into the MapGuide fold. This included a change of name to MapGuide Maestro and a move from Google Code to MapGuide’s OSGeo-hosted wiki, bug tracking, source control, and download services.

If you’re interested in seeing what it looks like, there are some screen shots on the MapGuide wiki… but beware; this project is under rapid development (release early and often) and some of the images are already out of date :)

My advice? Don’t even look at the screenshots, just download Maestro and start using it. Even if you have the full Autodesk MapGuide Studio application, there are some things that Maestro does far better, like retaining inter-resource references when moving things in your repository, or defining raster configuration files for unmanaged image resources. And if you run into problems, make sure to report them so that they can be fixed quickly (and they probably will be).

-J

MapGuide Open Source 2.0 beta1: Chock full o’ goodness

Get ‘em while they’re hot, the MapGuide Open Source 2.0 beta installers are ready for your consumption.

Grab the source code or installers, and then head over to the samples page to find some Fusion layout examples to play with. The Milestone, Release, and Release Notes pages provide more information for the details-inclined.

This release absolutely has enough new features to justify a major version jump. Although the list of new features and bug fixes in this release is immense, a few of the biggies (in my mind) are:

  • Fusion Support (by DM Solutions Group)
  • Introduction of AGG rendering (optional)
  • Stability Improvements
  • JSON output format from CGI calls for easier AJAX

The initial Fusion technology preview was really cool looking, but this beta shows off what is possible to an even larger extent. Have a look at the following screen shots!

Fusion Example 1

Fusion Example 2

Fusion Example 3

Fusion Example 4

Fusion Example 5

If that doesn’t give you a reasonable idea of the flexibility and capabilities of MapGuide Open Source when coupled with Fusion, I don’t know what will :)

The AGG renderer, while somewhat less flashy, is nonetheless a major improvement in MapGuide’s ability to deliver nice looking maps to the user. Have a look at the GD version of a zoomed-in area of my cemetery map:

GD Renderer Example

And compare it to the AGG version of the same:

AGG Renderer Example

Pay special attention to the accurate rendering of line widths, and the nice smooth anti-aliasing.

Although stability has been addressed throughout the code base, another feature that I have been waiting for is losing FastCGI support in favour of a native Apache module and ISAPI extension. FastCGI caused intermittent service interruptions, and these new modules appear to have addressed this problem. My testing to this point has shown considerably higher stability.

And finally, JSON output from the MapAgent will make application developers’ lives a lot easier. Rather than getting back XML from the MapAgent, you can request JSON so you don’t have to deal with XML parsing any more.

Of course, with the amount of changes that went into this release under the hood, it’s likely that there will be some issues. Please make sure that if you run into a bug you report it.

-J

Listing MapGuide Data File Locations

Over on the MapGuide Users mailing list, Zac said: "it would be nice to add a text file listing the unmanaged resources"

Happy to oblige! :)

OK, not quite, but I’ve created a simple command-line PHP script that talks to the MapGuide repository and outputs a CSV containing the ResourceID and File Path for all data sources that I’ve recognised as file-based. I’ll leave it as an exercise for the reader to filter this to only show unmanaged data sources.

Sample output:

C:\MgTest\listpaths>php cli_listfiles.php admin

“Library://Test/Data/MyImages.FeatureSource”,”C:\TestData\img_ecw”
“Library://Test/Data/MyImages2.FeatureSource”,”C:\TestData\img_ecw”
“Library://Test/Data/MyImages3.FeatureSource”,”C:\TestData\img_sid”
“Library://Test/Data/ABC123.FeatureSource”,”C:\TestData\img_ecw\”
“Library://Test/Data/MyImages4.FeatureSource”,”C:\TestData\img_sid\”
“Library://ImageTest/Data/ImageTest.FeatureSource”,”C:\ImageTest”
“Library://ImageTest/Data/Tiled.FeatureSource”,”C:\ImageTest\”
“Library://SdfTest/Data/bc_border.FeatureSource”,”%MG_DATA_FILE_PATH%”

I think this shows how easy it is to throw around the XML that MapGuide uses in its repositories.

-J