Tuesday, 26 August 2008

FDO Toolbox v0.5.8

Another release, another load of new features:
  • You can now save data preview results into a new SDF file
  • Bulk Copy: Source properties can now be mapped to most target properties regardless of data type. This can naturally lead to data conversion errors as a result. Any failed conversions are considered failed copies and they will be logged to a separate file on completion of the bulk copy for further analysis.
  • Bulk Copy: The source schema is now validated against the target to see if it can be applied. If it can't it will provide a detailed explanation as to why the schema cannot be applied.
  • A new ad-hoc data entry form for inserting new features into feature classes. This is currently very experimental and there is lots of room for improvement. This form can be brought up by right clicking the feature class you want to insert data into and choose "Insert Data"
  • New preference variable: pref_str_log_path. Any error logs are written to the path specified by this variable.
This release also fixes the following:
  • Prevent the creation of zero-length string, BLOB and CLOB data properties.
  • Enforce the name field requirement when creating new data properties.
  • Fix: Computed properties did not show in Data Preview (Standard Query mode)
Report bugs or feature requests

Friday, 22 August 2008

SELECT * INTO [sdf file] FROM [feature class]? Yes you can!

One of the long standing issues in FDO Toolbox (which isn't actually as serious as first thought) has been resolved. The resolution of this issue paves the way for some interesting ways to utilise the Data Preview feature, one way which I am introducing in this post.

The Data Preview tab now includes a "Save Query" (result) button, with the current available option being to a new SDF file. What this allows you to do is to save the current grid of a Data Preview to a new SDF file. For those SQL gurus out there, this effectively allows you to do the SQL equivalent of:

SELECT [columns/aliases] INTO [new SDF file] FROM [feature class]

... inside FDO Toolbox with FDO data sources!

Currently this feature is only enabled for the Standard query mode. Support for SQL query mode and Select Aggregates will come in due course. Support for other flat file output types (even non-FDO data sources) will also eventually come as well.

For the adventurous types. This feature is currently in the svn trunk. Otherwise expect to see this feature in the next release.

Sunday, 17 August 2008

FDO Toolbox v0.5.6

This is a small bugfix release with one major bugfix:
  • Fix incorrect total for certain bulk copy task. For certain providers that support ISelectAggregates, a Count() was being executed with the first selected property name. This is not an identity property name and as a result, can result in inaccurate totals. This has been changed so that it now issues Count() using the first identity property from the source feature class.
Other changes:
  • Removed the (mandatory) feature limit in the Data Preview control, and make the querying be done on a background worker thread. This prevents locking up the UI while a query is executing on a large dataset. Queries in progress can be cancelled. This does not fix the "Memory allocation failed" problem but you can work around it by either turning off any geometry properties when quering in standard mode or to query via raw SQL.
  • Fixed incorrect labels in the Express bulk copy control.
  • Fixed potential crash in the Generic Connect/Create Data Store controls with certain providers.
Report bugs or feature requests

Note: The changelog in the zip file is out of date. It has been updated in the svn repository.

Thursday, 14 August 2008

FDO Toolbox v0.5.5

Changes in this release


  • Non-spatial data support: Database tables can now be converted to (Point) feature classes.
  • Bulk Copy now supports Batched insertions. Insert performance is better in batched mode (upwards of 10x in Oracle!), but not all providers support batched insertion.
  • Tasks and connections are persisted and restored on each session.
  • Save/Load support for non-spatial connections
  • Data Preview: Filtering support for select aggregates.
  • XML schemas for configuration files
  • New "Remove all" command for Connections (both types) and Tasks.
  • Fix: Any tasks running can now be properly canceled.
  • MySQL copy spatial context fixes.
  • Fix: Saving schema was using the schema name instead of the chosen file name
  • Fix: Incorrect property mappings in Bulk copy control.
  • Bulk Copy: Oracle-specific overrides.
  • Bulk Copy: Improved counting process by choosing the most efficent method in this precedence: SQL - count() via ISelectAggregates - Brute Force
  • Bulk Copy: Auto-Generated IDs will be created for any class that has no identity properties that is to be applied to the target connection.
  • Object Explorer menu updates.
  • UI tweaks in the Data Preview tab.
Report bugs or feature requests

Thursday, 7 August 2008

...and now for something completely different (ok, not really)

One of the main features I am currently researching and hoping to get into a future release of FDO Toolbox is the ability to visually preview FDO data sources.

The prime motivation for such a feature is that since we are working with geospatial data, there should be some way to see what the data actually looks like. This can pave the way for even more interesting features.

So one day (yesterday). I was playing around with good ol' SharpMap to see if I could get it to render data via FDO, after a day and bit of hacking around, the result is available here for your consumption.

To build the sample, build the SharpMapFdo.sln with Visual Studio 2005/2008 or msbuild and copy all the files in Thirdparty/Fdo to the output directory. Then run the TestApp.exe

Some notes about the FDO SharpMap data provider:

1. Only vector data source support has been implemented. Expect the unexpected if you init a VectorLayer with a raster FDO provider.

2. Due to the limitations of the SharpMap library, vector data sources must satisfy the following criteria:
  • The class to be rendered must be a feature class.
  • The feature class must have only one identity property and it must be either Int16, Int32 or Int64
3. This is only a proof of concept. Expect the thing to break and sometimes, break spectacularly.

4. I am aware of v2.0 being in development, but I chose the 0.9 branch because its code and interfaces are stable and simpler to comprehend. It was easier to implement a FDO data provider for the 0.9 branch than the 2.0 branch, whose APIs may still be in flux.

Tuesday, 5 August 2008

FDO Toolbox v0.5.0

The changes in this release are huge enough to make the version jump to 0.5

New Features

1. Non-Spatial Data Support

You can now connect to non-spatial data sources using OLEDB. You can inspect the structure of non-spatial data sources just like the spatial ones. You can also preview non-spatial data sources using SQL.

2. Database Merge/Join Support

This is the feature that justifies the version jump.

You can join data from a FDO data source with data from a non-spatial data source by a common set of keys, and write the result to another (new) feature class.

The supported join types include:
  • Inner Join: Only records that match on both sides of the join are written
  • Left Outer Join: Only records from the left are written, any matching records on the right are also written
The supported cardinals include:
  • 1:1 For each matching record on the left, at most one record from the right is written
  • 1:m For each matching record on the left, each matching record from the right is written
For this implementation, the "Left" side of the join is always a FDO data source and the "Right" side of the join is always a non-spatial data source. The target is always a FDO data source.

When using this feature please be aware of the following:
  • The target connection must support IApplySchema (because a new class is being created)
  • An auto-generated ID will always be created for the joined feature class.
  • Properties which are also identity properties, can be copied over, but they won't be copied as identity properties to the joined feature class.
  • A column prefix is mandatory if there is a name clash between the chosen properties/columns
  • The joined feature class is always created, so it must not already exist.
3. Other changes
  • New FdoUtil.exe commands: RegisterProvider and UnregisterProvider. Consult the updated cmd_readme.txt for usage information.
  • FdoInfo.exe: Minor improvements in output display for the ListClassProperties command.
  • New UI front-end for the Preference dictionary. You will need to restart the application for most changes to be applied.
Report bugs or feature requests

Sunday, 3 August 2008

FDO Toolbox v0.4.2

Changes in this release.

New features/enhancements:
  • New per-class bulk copy option: Delete before copy. Please be warned that deleting existing data may take a while. Only use this option if necessary.
  • New global spatial filter bulk copy option. This is a textual spatial filter that is applied to each feature class. (non-feature classes are ignored). An example global spatial filter would be: INSIDE GeomFromText('POLYGON XY ((-124.07 49.1, -124.07 49.2, -123.8 49.2, -123.8 49.1, -124.07 49.1))') It is best to run this filter through the expression editor and/or data preview to verify it is a valid filter.
  • New command-line utility: FdoInfo.exe. Consult the updated cmd_readme.txt for usage information.
  • Class nodes now have a data preview option.
  • Expression Editor supports building spatial and distance operations.
  • Data preview in query mode now has support for property lists and computed fields.
  • Small UI changes in Spatial Context Dialog
  • Clicking cancel on the Generic Connect/Create Datastore dialogs will now actually close them.
  • Fixed incorrect spatial extents computation with certain data sources.
  • Fixed error about missing table "Projections" in cscatalog.sqlite
  • Connection-bound tabs are now single instance. For example: If you open the schema management tab for a given connection more than once, every attempt after the first will simply re-activate the existing tab.
Report bugs or feature requests